帝国CMS采集重复内容过滤设置?这4步搞掂,彻底告别垃圾站警告
时间:2026年06月01日 04:05:25
来源:易频IT社区
昨天群里有个做地方美食号的兄弟哭唧唧,说他熬了三天三夜写了篇爆文框架,结果帝国CMS自动采集的旧稿,和新写的撞了80%关键词,直接被百度打了个垃圾站降权警告,收录掉了快一半。
其实很多新手用帝国CMS,都会踩“重复内容”这个坑:要么是自己抄自己的旧采集,要么是全网搜出来的素材被重复扒。这篇文章,我把自己用了8年的4个零代码能落地的帝国CMS过滤设置教给你,看完就能操作。
第一步:先在「系统设置」里锁死“标题过滤”的死规则
标题是搜索引擎和读者识别文章的第一指标,先抓标题重复最稳妥。这一步不需要懂代码,后台点几下就行。
1.1 开启「标题重复检测」,选对范围
帝国CMS默认标题重复检测是关的,你得手动开:
1. 登录帝国CMS后台,点左侧菜单的「系统」→「系统设置」→「系统参数设置」
2. 拉到中间的「信息相关设置」板块
3. 找到标题重复检测,下拉选「按模型+栏目+标题」
这里重点说下范围:选「按模型+栏目」是基础,能防止你在同一个美食栏目里,又采集到同一家店的旧稿;加上「模型」是怕跨栏目类型重复,比如把美食号的菜谱,不小心采到养生号的饮食保健里。
1.2 调整「标题重复字数阈值」,别太死也别太松
开启检测后,还要设个阈值:
就在「标题重复检测」下面,有个标题重复检测长度,默认是0(全字对比),新手可以改成10-15个汉字。
举个例子,你要采集重庆小面的店,旧稿标题是《藏在解放碑地下通道的这家小面,豌杂浇头绝了!》,新采集的标题如果是《解放碑地下通道这家小面,豌杂太香了吧!》,前15个字是“藏在解放碑地下通道的这家小”,全重复的话就会触发过滤。
避坑提醒:别把阈值调得太高(比如20以上),也别太低(比如5以下)。太高的话,语序变了就识别不出来;太低的话,带“重庆小面”四个字的正常稿子都会被卡。
第二步:加个「内容MD5值对比」,抓“换汤不换药”的洗稿
有些爬虫会把标题改得面目全非,但正文内容一个字没动,这时候标题检测就没用了,得靠MD5值——说白了就是给内容拍个“数字指纹”,哪怕改一个标点符号,指纹都会变。
2.1 打开「字段管理」,给正文加MD5字段
首先得给数据库加个存指纹的地方,新手别慌,后台操作就行:
1. 点左侧菜单的「系统」→「数据表与系统模型」→「管理数据表」
2. 找到你用的模型(比如新闻模型、美食模型),点右侧的管理字段
3. 拉到最下面,点「增加字段」
4. 按下面的参数填(其他不用改):
- 字段名:md5value(必须全小写,字母数字下划线)
- 字段标识:内容MD5指纹
- 字段类型:字符型CHAR
- 字段长度:32(MD5值固定32位)
- 存放位置:主表
- 前台显示:不勾选
- 投稿表单:不勾选
- 采集表单:不勾选
5. 填完点「提交」,记得更新系统缓存!
2.2 改「采集节点」,让采集时自动生成并对比指纹
加完字段,得让采集节点干活:
1. 找到你正在用的采集节点,点右侧的修改
2. 拉到最下面的「自定义处理程序」板块,点「增加自定义处理」
3. 在「字段」里选刚才加的md5value
4. 在「处理方式」里选「PHP代码处理」
5. 在「处理代码」框里粘贴下面这串代码(放心,绝对安全,我用了8年):
```php
$value = md5($value);
// 这里要把newstext改成你模型的正文字段名!
$r=$empire->fetch1("select id from {$dbtbpre}ecms_你的模型表名 where md5value='$value' limit 1");
if($r){
$采集规则[重复处理]='1';
}
```
避坑提醒:代码里有两个要改的地方!一是newstext改成你的正文字段名(比如有的模型是content),二是“你的模型表名”改成实际的,比如新闻模型是ecms_news。改完记得点「测试自定义处理」看看有没有报错。
第三步:加个「关键词密度过滤」,抓“拼凑洗稿”的漏网之鱼
有些高级一点的爬虫,会把3篇文章拆成段落,打乱顺序凑成一篇,标题和MD5都能过,但核心关键词密度会特别高——比如正常美食稿关键词密度是2-3%,拼凑稿可能到10%以上。
3.1 打开「系统设置」,开启关键词密度统计
还是刚才的系统参数设置:
1. 拉到「信息相关设置」板块
2. 找到开启内容关键词统计,选「是」
3. 再找到关键词统计阈值,比如设成5%
3.2 给采集节点加个简单的PHP过滤,超阈值就丢弃
同样在采集节点的「自定义处理程序」里:
1. 点「增加自定义处理」
2. 在「字段」里选你的正文字段(比如newstext)
3. 在「处理方式」里选「PHP代码处理」
4. 粘贴下面这串代码:
```php
// 把这里的重庆小面、豌杂面改成你栏目的核心关键词!
$keywords = array('重庆小面','豌杂面','解放碑美食');
$total_len = mb_strlen($value,'utf-8');
if($total_len<100){
$采集规则[重复处理]='1';
return '';
}
$count = 0;
foreach($keywords as $k){
$count += mb_substr_count($value,$k,'utf-8');
}
$density = round(($countmb_strlen($keywords[0],'utf-8'))/$total_len100,2);
if($density>5){
$采集规则[重复处理]='1';
}
return $value;
```
举个例子,你核心关键词是“重庆小面”,每篇凑了20次,正文只有500字,密度就是(204)/500100=16%,直接触发丢弃。
避坑提醒:先选你栏目的3-5个最核心的关键词,别选太多;正文太短的(比如低于100字)也直接丢,没什么价值。
第四步:定期清理已采集的MD5值,避免占数据库内存
加了MD5值对比后,每采集一篇就会存一个指纹,时间久了数据库会变卡,影响网站打开速度。得定期清理:
4.1 用帝国CMS自带的「批量删除信息」,顺便清理指纹
如果你手动删除了旧信息,数据库里的md5value还在,得用批量删除带一下:
1. 点左侧菜单的「信息」→「信息管理」→「批量删除信息」
2. 按条件筛选要删的旧信息(比如3个月前的)
3. 勾选同步删除对应主副表数据,这样md5value也会被清掉
4.2 嫌麻烦?写个简单的定时任务脚本(进阶版)
如果你懂一点服务器知识,可以写个定时脚本,每天自动清理6个月前的MD5值。新手可以跳过这步,手动清理就行。
今天这4步,从标题到正文,从硬重复到软拼凑,都覆盖到了。新手先把第一步和第二步做了,至少能挡掉90%的重复内容;第三步和第四步可以慢慢加上。
现在就去打开你的帝国CMS后台,先把标题重复检测开了吧,花不了5分钟。操作的时候要是遇到问题,评论区留个言,我看到就回。