内容缺口是站点停滞的地方。你知道还有东西可写,但说不出缺什么。长上下文模型在这件事上很能干,但前提是你给它对的地图:你自己的结构,加上那些你已经”半排上”的查询。只爬竞品,你拿到的是别人的选题表,不是你自己的洞。
一句话总结
- 把你的文章清单(URL + 标题 + pillar)和 Search Console 查询各导成一个 CSV,再一起粘进 1M 上下文模型(Claude Opus 4.7 / Sonnet 4.6、Gemini 3.1 Pro 或 GPT-5.5),让它做结构化缺口分析。
- 真正要盯的信号:
impressions > 100且position > 10的查询。有曝光却没有排名页,这是最清晰的覆盖缺口。 - Search Console 界面导出上限是 1000 行。要更多就走 Search Analytics API(单次 25000 行、每天 50000 行)或免费的 BigQuery Bulk Data Export。
- 每条 AI 建议都拿你自己的优势和搜索意图过一遍,一次排 8 到 15 个题,每季度重跑一次,因为查询数据一直在变。
为什么自己的数据比爬竞品强
大多数”找内容缺口”的建议都让你爬竞品。这招用一次还行,但之后你就一直在追别人的路线图。更长久的做法是把你自己的 pillar/cluster 结构 + 你已经部分排上的查询喂给模型,问它哪儿有洞。这样可行,是因为模型在”补全一个已有结构”这件事上确实很强——前提是你给的结构够完整。竞品数据仍然有用,但用在事后验证,而不是起手起题。
什么时候值得跑这套流程
- 在稳定发布,但感觉明显的主题写得差不多了。
- 能用三五句话讲清楚你站的 pillar 主题。
- 有 Search Console 权限,至少 3 个月数据。
- 过去 60 天没正式做过缺口分析。
实操步骤
-
导 sitemap 为扁平 CSV。在终端跑:
# 抓 sitemap,提 URL 和 last-modified curl -s https://yoursite.com/sitemap.xml \ | grep -E "<(loc|lastmod)>" \ | sed -E 's/<\/?(loc|lastmod)>//g; s/^[[:space:]]+//' \ | paste - - \ > sitemap_urls.tsv # 用 Python 抓每个 URL 的 <title>(要 ~5 分钟) python3 -c " import csv, requests, re from bs4 import BeautifulSoup with open('sitemap_urls.tsv') as f, open('articles.csv','w') as out: w = csv.writer(out) w.writerow(['url','slug','title','lastmod']) for line in f: url, lastmod = line.strip().split('\t') html = requests.get(url, timeout=10).text title = BeautifulSoup(html,'html.parser').title.string.strip() slug = url.rstrip('/').split('/')[-1] w.writerow([url, slug, title, lastmod]) "产物
articles.csv有 4 列:url, slug, title, lastmod。 -
打 pillar/cluster 标签。在 Sheets / Excel 加 2 列
pillar和cluster,手动填一轮(500 篇 < 1 小时)。如果你的网站本就有 category,可以直接从 URL 提:# 例:URL 形如 /zh/articles/indie-dev/foo/ awk -F'/' 'NR>1\{print $0","$5\}' articles.csv > articles_with_pillar.csv -
从 Search Console 拉你的头部查询。Search Console → Performance → Queries → Export → “Download CSV”。截至 2026 年 6 月,界面导出上限是 1000 行,对单站做一轮缺口分析完全够用。如果要更多(或者想脚本化),Search Analytics API 单次最多返回 25000 行、每天每站每搜索类型上限 50000 行(用
startRow翻页),而免费的 BigQuery Bulk Data Export 则完全没有行数限制。这里用轻量的 Python 封装(pip install searchconsole)就够了:import searchconsole account = searchconsole.authenticate(client_config='client_secret.json') webproperty = account['https://yoursite.com/'] report = webproperty.query.range('today', days=-90).dimension('query').limit(1000).get() report.to_dataframe().to_csv('gsc_top_queries.csv', index=False)CSV 包含
query, clicks, impressions, ctr, position。重点关注impressions > 100 且 position > 10的行——有曝光但没排名上去,这是你手上最清晰的覆盖缺口信号。如果要绕开界面上限、深入了解行数和筛选规则,可以看 Google 官方的性能数据深度解析。 -
喂给 AI 做缺口分析。开一个长上下文模型,把 3 个文件加下面这个 Prompt 一起粘进去。当前的几个 1M 上下文模型都行:Claude Opus 4.7 或 Sonnet 4.6、Gemini 3.1 Pro、GPT-5.5。一个注意点(截至 2026 年 6 月):ChatGPT Plus 在 App 内只放出约 320 页的上下文(完整 1M 窗口在 $200 的 Pro 档),所以两个 CSV 较大时,要么拆开,要么改用 Claude / Gemini——它们在 $20 和 $19.99 档就带完整 1M。
附件 1:articles_with_pillar.csv(当前网站全部文章 + pillar 标签) 附件 2:gsc_top_queries.csv(最近 90 天高曝光查询) 做缺口分析: 1. 对每个 pillar,列出在 GSC Top 200 里**有曝光但当前文章都没正面回答**的 5 个查询 - "正面回答" 定义:文章 title 或 URL slug 里直接包含该查询的核心词 - 输出格式:| pillar | 查询 | 当前曝光 | 当前 position | 现有文章覆盖度(无/部分/完整) | 2. 对每个 pillar,列 5 个 GSC 里**没出现但应该出现**的子主题 - 依据:同类竞品在排名,或你的现有文章引用了但没单开 - 输出格式:| pillar | 缺失子主题 | 为什么应该有 | 1 个种子标题 | 3. 列 5 个**跨 pillar 桥接主题**——能把 2 个 pillar 串起来的话题 - 例:indie-dev pillar + ai-tools pillar → "用 AI 帮独立开发者审 App Store 截图" - 这种文章通常差异化最强 不要 hallucinate 文章 / 查询,只用我提供的数据。 -
用行业经验过滤。把 AI 输出过一遍,对每条问自己:
- 这个主题真的有人搜吗?(不是 AI 凭语义编的) - 我能在这个主题上写出比前 3 名更具体 / 更实操的角度吗? - 这个主题写出来会有商业价值吗(联盟 / 转化 / 品牌)? - 已有 1 篇就够还是要 cluster 3-5 篇?任一答案 “否” 就剔除。
-
跨 cluster 桥接二次提问:
基于上一轮缺口分析的产出,再列 8 个 "跨 pillar 桥接主题": - 每个主题必须能自然挂在 2 个 pillar 下(不是硬凑) - 给每个主题写: - 标题(动词开头 / 数字开头) - 核心问题(≤14 字) - 主要受众(pillar A 的人 + pillar B 的人) - 内链机会(能往现有的 X 篇文章打链) 这类文章往往拿到的是"既懂 A 又关心 B"的精准流量,竞品很少同时占两边。 -
每个缺口主题写”角度卡”:
对下面这个缺口主题:<title> 1. 搜一下当前 Google 前 10 名都怎么写(标题、首段、结构) 2. 列出他们的 3 个共同盲区(都没回答 / 都答得敷衍 / 都过时) 3. 给我 1 个"反共识 + 第一人称 + 数字"的开篇视角 4. 列 5 个截止 publish 我必须收集的具体证据(数字 / 截图 / 工具版本号) -
写回选题池——产物落到
content_pipeline.csv:slug,title,pillar,cluster,target_keyword,intent,angle_note,evidence_needed,priority ai-app-store-screenshot-review,用 AI 审 App Store 截图,indie-dev,app-store-launch,app store screenshot review ai,how-to,反共识 + 实测,截图前后对比 3 套,P1 ...priority用 P1(GSC 高曝光 + 我能写得最好)/ P2(桥接主题)/ P3(探索性)。每周从 P1 拉 3 篇开写。
工具与上限速查(2026 年 6 月)
| 工具 | 免费档 | 付费 | 在这套流程里干什么 |
|---|---|---|---|
| Search Console 界面导出 | 免费 | 免费 | 导头部查询 CSV,上限 1000 行 |
| Search Analytics API | 免费 | 免费 | 单次 25000 行,每天每站每搜索类型 50000 行 |
| BigQuery Bulk Data Export | 设置免费(存储走 Blaze 计费) | 按量付费 | 没有行数限制,每天导全量 |
| Claude(Opus 4.7 / Sonnet 4.6) | 有限的 Sonnet 4.6 | Pro $20 | 缺口 Prompt 用满 1M 上下文 |
| Gemini(3.1 Pro) | 有限 | AI Pro $19.99 | 缺口 Prompt 用满 1M 上下文 |
| GPT-5.5(ChatGPT) | 免费、额度很紧 | Plus $20 / Pro $200 | Plus 在 App 内约 320 页;完整 1M 在 Pro |
| Screaming Frog SEO Spider | 抓 500 个 URL | 约 $259/年(约 £199) | 选用:抓你自己或竞品的站 |
如果你的站不到 500 页,免费版 Screaming Frog 抓取可以替代第 1 步里的 sitemap 脚本,用来拉 URL 和标题。
容易踩的坑
- 不喂数据让 AI 凭空建议。它会给一堆”这个行业大家都搜的东西”,但漏掉你站真正适合的角度。
- 跳过手动 pillar 标注。没结构,模型就给不出结构化的缺口。
- 看到缺口就追。大多数”缺口”是缺口,是因为没人搜,动手前要先核实意图。
- 只做一次。Search Console 数据每季度都在变,分析也得跟着重跑。
- 相信 AI 给的搜索量估计。模型在这块幻觉很严重,真实量要从 GSC 曝光或关键词工具里拿。
这篇适合谁
已经 50+ 篇、有真实 pillar 结构、有 Search Console 历史的站。完全没有查询数据的新站应该先把前 30 篇写出来再谈优化——现在还没东西可分析。
FAQ
- 要爬竞品吗: 可以作为补充。你自己的数据比照搬竞品的信号强,所以竞品抓取用来验证某个缺口,而不是用来起题。
- 一次性应该排多少缺口主题: 8 到 15 个比较健康。再多就会为了清单选不够好的题。
- AI 能帮我排优先级吗: 能给意见,但最终优先级要看你的优势和投入成本——这两个模型都看不到。
- AI 推荐的缺口我已经在列表里了怎么办: 好信号。同一个缺口冒出来两次,说明它是真的,往上提。
- 缺口 Prompt 该用哪个模型: 任何当前的 1M 上下文模型都行。Claude Sonnet 4.6 和 Gemini 3.1 Pro 在 $20 档就带完整窗口;用 ChatGPT Plus 要留意约 320 页的 App 内上限,CSV 大就拆开。
- 多久重跑一次: 每季度。新曝光在累积,你发布的文章集也在变,上个季度的缺口现在可能已经补上了。