给一个网站的 sitemap,工具会逐页抓取、识别哪些是「薄内容页」——对搜索引擎和用户都没价值的页面(字数过少、内容空、标题堆关键词、和其它页几乎一样、HTTP 错误等)。
每页给三样东西:
最后导出一份 Excel 报告,运营拿着按优先级清就行了。
跟 Leo 要邀请码(一串字符,比如 91team2026)。这个码用来注册新账号。
小李 或 leo)、密码(≥6 位)下次直接 登录页 输花名 + 密码。session 保持 7 天,关浏览器再开还在。
每个网页都是用 HTML 写的,HTML 标签可以带 class 名字,比如:
<div class="post-content">
这里是文章正文……
</div>
这个 .post-content(点 + class 名)就是 CSS 选择器——告诉工具「正文在哪个盒子里」。
不告诉工具的话,它会自动猜(通常能猜对),但自动猜可能抽到模板/广告/侧栏,把字数算大了/算小了。所以最好你自己看一眼站点的 HTML 结构,把正文容器的 selector 喂给它。
https://yoursite.com/article/12345。
⌖(Chrome 是 Ctrl+Shift+C),点它进入「选元素」模式。
<p> 的父级,再往上一层,鼠标悬停时浏览器里会用蓝色框显示选中的范围。
<div class="post-content"> ……整篇正文…… </div>
→ 你的选择器就是 .post-content。
<article class="article-body main-content"> ……正文…… </article>
→ 选择器写 .article-body 或 .main-content 都行(任选一个就够了)。
提交真的任务前,一定要先小样本试一下,用 max_urls=1 跑 1 条看:
| 结果 | 说明 |
|---|---|
| 字数 ≈ 你眼睛看到的正文字数 | ✅ 选对了 |
| 字数 = 0 | ❌ 选错了,工具没抽到内容 |
| 字数比看到的多很多 | ⚠️ 选大了,抽到了侧栏/相关推荐 |
| 字数比看到的少很多 | ⚠️ 选小了,只抽到部分 |
| 建站系统 | 常见正文容器 |
|---|---|
| WordPress(默认主题) | .entry-content / .post-content / article |
| Typecho | .post-content / .entry |
| Z-Blog | .post-content / #article-content |
| 帝国 CMS / 织梦 | .content / #article / .body |
| 独立开发的 | 看 class 名,常见 .article / .main / .content-body |
.content 这种太通用的——很多站点的侧栏/评论区/评论框也有 content 字样的 class,会把它们一起抽进来。先用开发者工具确认。
选择器框留空,工具内置了 40+ 个常见 selector +「蝴蝶效应SEO算法」兜底,会自动尝试。但精度可能比手填差。
| 字段 | 填啥 | 建议 |
|---|---|---|
| Sitemap URL | 站点的 sitemap 地址 | 必填。如 https://yoursite.com/sitemap.xml,支持 sitemap 索引和 .gz |
| 字数阈值 | 少于多少字算薄 | 默认 40。文章站不动;视频/图集站可降到 20 |
| CSS 选择器 | 正文容器的 class | 见上面第 3 节。强烈建议手填 |
| URL 过滤 | 正则,只审符合的 URL | 可选。比如只审文章页:/article/ |
| 并发数 | 同时抓几条 | 默认 10。慢站可降到 3-5;快站可升到 20 |
| 最多审 N 条 | 0 = 全部,写数字 = 截前 N 条 | 试错时填 1 或 5 |
| User-Agent | 抓取时用的 UA | 留空用浏览器默认。反爬严的站可换 Googlebot UA |
最多审 N 条 = 1,提交看一条结果。验证选择器对不对。| 指标 | 意思 |
|---|---|
| 已处理 / 总数 | 进度 |
| 需处理 | 建议动作不是「跳过」的总数(≈ 真正要清的页面数) |
| 薄内容 | 命中字数过少 / 空状态 / 标题堆词 / alt 堆词的页 |
| 软 404 | HTTP 200 但内容写着「页面不存在」的 |
| HTTP 错误 | 404 / 5xx / 3xx 等 |
| 标题重复 | title 和别的页一样的 |
| 近重复组数 | 正文 95%+ 相似的页面组数 |
| 空状态页 | 内容写着「暂无 / no results」 |
| noindex | 站长已经主动 noindex 的 |
| 抓取错误 | 网络超时 / 连接拒绝 |
跑完点「📊 下载 Excel 报告」,会下来一个多 sheet 的 .xlsx 文件:
| Sheet | 看啥 |
|---|---|
| ① 总览 | 这次审了多少、薄页占比、页型分布、动作分布。汇报老板拿这个 |
| ② 优先清理清单 | 核心 sheet。按动作分组(删除/合并/重写/...)+ 按 P0/P1/P2 排序,按行清 |
| ③ AI 改写建议(可选) | 启用 AI 后多这一栏,每页给改写后标题/H1/扩充方向 |
| ④ HTTP 错误页 | 所有 404 / 5xx / 重定向页,单独一张方便修 |
| ⑤ 详细数据 | 每页所有指标的原始数字,技术同事查问题用 |
| ⑥ 近重复组 | 哪几组页面几乎一样,每组哪个该保留、其它合并到它 |
| ⑦ 术语表 | 看不懂的概念查这里 |
需要原始数据做二次加工(如导入数据库 / Excel 透视),下载这两个。普通运营用 Excel 报告就够了。
勾选「☑ 启用 AI 改写建议」后,工具会对最严重的 N 条薄页调用大模型,每页生成:
这些只显示在 Excel 报告的「AI 改写建议」sheet。
| 字段 | 填啥 |
|---|---|
| API Key(必填) | OpenAI 兼容协议网关的 key(你自己的) |
| Base URL | 网关地址,留空用默认 deepseek |
| 模型名 | 如 deepseek-chat / gpt-4o-mini / qwen-plus |
| Top N | 跑前 N 条最严重的(默认 50) |
| 网关 | Base URL | 推荐模型 | 每条费用 |
|---|---|---|---|
| DeepSeek 官方 | 留空(默认) | deepseek-chat | ~¥0.005 |
| 阿里通义 | https://dashscope.aliyuncs.com/compatible-mode/v1 | qwen-plus | ~¥0.01 |
| OpenAI 官方 | https://api.openai.com/v1 | gpt-4o-mini | ~¥0.02 |
50 条 AI 调用大概就是 0.5-1 元,跟一杯奶茶比起来不贵。
看 Excel 报告里的「问题诊断」「建议动作」「优先级」三列时,对照这一节查。
只要命中下面任何一条,这页 is_thin = True,会进薄内容清单:
<title> 里命中 ≥4 个营销关键词(限制级、大尺度、床戏、吻戏、犯罪的身材...)| 问题 | 啥意思 | 咋办 |
|---|---|---|
| 抓取失败 | 网络超时 / 连接拒绝 / DNS / SSL 等 | 多半是临时问题,「重跑确认」即可 |
| HTTP 4xx | 这页不存在了,但 sitemap 还挂着 | 让运维更新 sitemap |
| HTTP 5xx | 服务器报错 | 让技术看下服务 |
| HTTP 3xx | sitemap 给了会跳转的 URL | 把 sitemap 改成跳转后的最终地址 |
<title>| 动作 | 什么时候触发 | 具体咋做 |
|---|---|---|
| 🗑️ 删除 | 页面真没价值(极端空页、空 tag/分类、坏页) | 让技术下线 URL,返回 404 或 410(410 更彻底);sitemap 也去掉 |
| 🛠️ 修404 | HTTP 4xx 但页面应该存在 | 大概率 sitemap 没更新;或服务器配置错了,让技术修 |
| 🚫 noindex | 页面要保留但不让收录(搜索结果页 / 隐私页) | 让技术加 <meta name="robots" content="noindex"> |
| 🔗 noindex,follow | 分页页(第 2 页 / 第 3 页) | 让技术对 /page/N/ 加 noindex,follow:不收录但允许爬虫继续跟链接走 |
| 🔀 合并 | 这页和站内另几个页几乎一样 | 选字数最多的为主页,其它 301 到主页或加 canonical 指向主页(Excel 报告里有完整组列表 + 主页推荐) |
| ✏️ 重写 | 内容质量不够但 URL 要保留 | 加原创观点 / 评测 / 对比,少放跳转外链。这是给运营写文章的活儿 |
| ➕ 扩充 | 字数不够 | 补到 300 字以上。可以加:原创观点 / 产品对比 / 案例 / FAQ / 配图说明 |
| 📝 改标题 | title 重复 或 标题堆词 | 重写到 ≤60 字、聚焦 1-2 个核心词;加唯一标识(品类 / 型号 / 地区 / 年份) |
| 🖼️ 改图片alt | 多张图配同一段堆词描述 | 让技术给每张图分别配不同的 alt 描述 |
| 🔄 重跑确认 | 这次抓取失败(网络问题) | 过一会儿重新跑这页,多半是临时的 |
| ⏭️ 跳过 | 这页没问题 | 不用动,就放在那 |
工具会自动按 URL 模式给每页分类,不同页型用不同的字数门槛和判定规则:
| 页型 | 啥意思 | 字数门槛 | 处理逻辑 |
|---|---|---|---|
| 📄 article 文章页 | 实质内容页:博客、新闻、产品详情、教程 | ≥40(建议 ≥300) | 标准薄内容判定 |
| 🏠 homepage 首页 | 站点主页 | ≥50 | 同上,门槛略高 |
| 🏷️ tag 标签页 | 把同标签文章聚合的列表页 | ≥20 | 主要看是不是空 |
| 📁 category 分类页 | 按分类聚合的列表页 | ≥20 | 同 tag |
| 🔍 search 搜索页 | 用户搜索结果页(如 /?s=foo) | — | 全部加 noindex(Google 明确不让收录) |
| 📑 pagination 分页页 | 列表的第 2/3 页(如 /page/2/) | — | 全部加 noindex,follow |
| 级别 | 含义 | 处理时间 |
|---|---|---|
| P0(红) | 高严重度,留着拖累全站 SEO | 本周内处理 |
| P1(橙) | 能救但要重写 / 调整 | 本月内排期 |
| P2(灰) | 边缘问题,处理与否影响不大 | 有空再说 |
选择器没选对。回到第 3 节按步骤重新选。或者把选择器留空让工具自动猜。
三个原因:
站点反爬严或 CDN 防护。试一下:
Googlebot/2.1 (+http://www.google.com/bot.html)看上面 第 7 节「审查项详解」。
目前任务列表不持久化。结果文件(.csv / .xlsx)在 /root/thin-content-audit/jobs/ 还在,但内存里的任务列表会丢。要持久化任务列表的话跟 Leo 说。
找 Leo,他在服务器上跑命令重置:python3 add_user.py add 你的花名 新密码。