SeoMachine 主题集群权威度分析:/research-topics 如何把 GSC 关键词变成内容建设路线图
【免费下载链接】seomachineA specialized Claude Code workspace for creating long-form, SEO-optimized blog content for any business. This system helps you research, write, analyze, and optimize content that ranks well and serves your target audience.项目地址: https://gitcode.com/GitHub_Trending/se/seomachine
在 SeoMachine 这套基于 Claude Code 的 SEO 内容工作区中,/research-topics命令负责一件事:主题权威度(Topical Authority)分析——把站点在 Google Search Console 中排名的全部关键词聚成主题集群,逐一打分,找出"有需求但覆盖薄弱"的主题,输出可直接执行的 pillar + cluster 建设方案。读完本文,你将掌握该命令的完整运行机制:GSC 数据如何被拉取、关键词如何被 ML 或规则两种策略聚类、0–100 权威度分数的三个权重如何计算,以及如何解读报告并衔接后续的 SERP 研究与内容写作流程。
命令概览:做什么、产出什么
该命令的原始定义位于 .claude/commands/research-topics.md,使用方式只有一行:
/research-topics它把所有排名关键词分组为 topic clusters,并识别四类主题:
- Strong Authority Topics(强权威):你已经主导的主题,策略是维持并扩张;
- Moderate Authority Topics(中等权威):部分覆盖,需要补强;
- Weak Authority Topics(弱权威):文档原文用粗体标注为"最大机会"——应围绕它们构建完整的集群;
- Coverage Gaps(覆盖缺口):每个主题内部你尚未排名的相关关键词。
对每个主题,命令会计算权威度分数(0–100,基于覆盖度、排名位置与搜索需求)、排名关键词数量、平均排名、总曝光与点击量,以及待填补的覆盖缺口。
从执行入口看,命令实际驱动的是根目录脚本 research_topic_clusters.py,脚本头部 docstring 与命令文档描述一致:"Analyzes topical authority by clustering keywords into related topics."
完整执行流程(Process 拆解)
命令文档列出的 6 步流程,在源码中对应一条清晰的调用链,以下逐条对照说明。
1. 从 GSC 拉取 90 天排名关键词
脚本首先初始化两个数据源(main()第 44–59 行):
- GSC 为硬性依赖:
GoogleSearchConsole()初始化失败则直接return,整个流程终止; - DataForSEO 为可选依赖:初始化失败时仅打印
⚠ DataForSEO not available,后续覆盖缺口分析跳过,聚类照常进行——即"纯聚类是免费的",文档中"Clustering only 免费、含缺口分析约 $0.50"的成本说明正源于此设计。
随后调用:
all_keywords = gsc.get_keyword_positions(days=90, min_impressions=5)关键词少于 10 个时脚本直接退出("Not enough keywords for clustering analysis"),这解释了为什么新站点要积累一定 GSC 数据量后再跑该命令。
数据来自 data_sources/modules/google_search_console.py 中的get_keyword_positions():它通过 Search Console API 的searchanalytics().query(),以dimensions: ['query']拉取起止日期内每行 query 的 clicks / impressions / ctr / position,并按曝光量降序返回。
一个值得注意的实现细节:从源码结构看,仓库当前get_keyword_positions()的函数签名为(days=30, limit=1000),并不包含min_impressions形参,而 research_topic_clusters.py 中却以min_impressions=5调用。实际运行前建议先核对两者版本是否匹配(详见后文"运行前提与已知限制")。
2. 聚类:ML 优先,规则兜底
这是该命令的核心算法层,采用"双轨制":
轨道一:ML 聚类(sklearn 可用且关键词 ≥ 20 时启用)
cluster_keywords_ml()的处理管道为:
- TF-IDF 向量化:
TfidfVectorizer(max_features=100, ngram_range=(1, 2), stop_words='english')——bigram 窗口让 "how to x" 这类意图组合能作为特征参与聚类; - K-Means 聚类:簇数
n_clusters = max(5, min(20, len(keywords) // 15)),即"每 15 个关键词约 1 个簇",且被夹在 5–20 之间;random_state=42, n_init=10保证结果可复现; - 主题命名:
extract_topic_name()统计簇内关键词的高频实词(排除内置停用词表,只保留长度 > 3 的词),取出现次数 > 1 的前 2 个高频词拼接成标题(如 "Podcast Marketing");若无高频词则回退为第一个关键词原文。
任何一步抛异常都会打印提示并自动回退到规则聚类。
轨道二:基于模式的规则聚类(cluster_keywords_simple())
该策略从config/competitors.json读取topic_patterns字段(主题名 → 触发词列表的映射);若配置文件不存在,则使用脚本内置的 8 组通用模式。仓库提供的示例配置 config/competitors.example.json 中topic_patterns字段即对应此用途:
"topic_patterns": { "Product Features": ["feature", "tool", "platform", "service", "software"], "Pricing": ["price", "pricing", "cost", "plan", "free", "trial"], "Tutorials": ["how to", "guide", "tutorial", "step", "setup"], "Comparisons": ["vs", "versus", "compare", "comparison", "alternative", "best"], "Marketing": ["market", "marketing", "promote", "promotion", "grow", "audience"], "Analytics": ["analytics", "stats", "statistics", "metrics", "data", "report"] }匹配规则是按顺序短路:每个关键词依次与主题列表比对,命中第一个主题即归入该主题并停止;全部未命中的关键词统一落入Other/General簇。因此主题的排序会影响归类优先级——把更细分的主题写在前面更稳妥。
定制建议:把示例文件复制为
config/competitors.json并改写topic_patterns,可以让规则聚类贴合你的行业(脚本注释原文即提示 "customize these for your industry")。
3. 计算权威度分数(0–100)
calculate_authority_score()采用三段加权模型,与命令文档"based on coverage, position, demand"的描述完全对应:
| 分量 | 权重 | 打分梯度 |
|---|---|---|
| Coverage(覆盖度) | 50% | 关键词数 ≥50 → 100;≥30 → 80;≥15 → 60;≥8 → 40;≥4 → 20;其余 → 10 |
| Position Quality(排名质量) | 30% | 平均位置 ≤5 → 100;≤10 → 80;≤20 → 60;≤30 → 40;≤50 → 20;其余 → 10 |
| Demand(需求) | 20% | 总曝光 ≥10,000 → 100;≥5,000 → 80;≥2,000 → 60;≥1,000 → 40;≥500 → 20;其余 → 10 |
最终分数为coverage×0.50 + position×0.30 + demand×0.20后取整。get_authority_level()再把分数映射为四级:
- ≥75 → Strong(Maintain and expand)
- ≥50 → Moderate(Strengthen coverage)
- ≥25 → Weak(Build comprehensive cluster)
- <25 → Minimal(Major opportunity or ignore)
报告中的 Authority Distribution 表即由这四级计数生成。
4. 用 DataForSEO 识别覆盖缺口
对每个簇,取簇内第一个关键词作为种子词,调用find_cluster_gaps():
related = dfs.get_keyword_ideas(seed_keyword, limit=100)该方法在 data_sources/modules/dataforseo.py 中实现,底层请求/v3/dataforseo_labs/google/related_keywords/live,返回带search_volume/cpc/competition的相关关键词列表(默认按搜索量降序)。缺口判定逻辑:
- 把簇内已排名的关键词(小写、去首尾空白)放入集合;
- 从返回的 related keywords 中剔除已排名的,剩下的即缺口,附带
search_volume与difficulty; - 按搜索量降序取前 20 条(
limit=20),最终进入报告的分析对象保留前 10 条(coverage_gaps[:10])。
单簇的缺口查询失败会被静默吞掉(except: pass),不影响整体报告生成——这也是"API 部分失败仍有产出"的容错设计。
5. 机会排序:弱簇 × 高需求
main()中所有簇先按权威度分数升序排列(最低分 = 最大机会),再筛出 Weak/Minimal 级别并按total_impressions降序取前 5,打印为 "TOP 5 TOPIC CLUSTER OPPORTUNITIES (Build These!)"。这正对应文档的核心洞察——
Weak clusters with high demand = Your biggest opportunity.
文档给出的示例("Content Marketing":仅 3 个关键词排名、平均位置 28、5,000 曝光/月、15+ 个未覆盖的相关词 → 行动是建 10 篇文章的集群)就是这个筛选逻辑的典型产物。
6. 生成报告
报告写入research/topic-clusters-YYYY-MM-DD.md(write_markdown_report()以当天日期命名),结构上分四段:
- Authority Distribution:四级主题的计数与策略对照表;
- Weak Authority Topics(最多 15 个,按曝光降序):每个簇列出分数/级别、排名关键词数、平均位置、曝光、点击、Top 5 当前关键词、最多 8 条带搜索量与难度的覆盖缺口,以及按簇规模分档的 Recommended Action(<5 个关键词的簇建议"新建 8–12 篇文章 + pillar page",否则建议"扩写现有内容 + 补 pillar");
- Strong Authority Topics(最多 10 个):性能指标、Top 关键词、扩张机会与维护建议(保持内容新鲜、拓展进阶主题);
- Strategy Recommendations:三级优先级的具体文章数建议——注意其中 Priority 1 的新增文章数由
max(8, 15 - cluster['keyword_count'])动态计算,现有排名词越少,建议产出的文章越多。
控制台与报告的关键指标示例(命令文档中的 Example Output):
Weak Authority: Content Marketing (Score: 32/100) - Keywords: 3 - Avg Position: 28.4 - Impressions: 5,240/mo Coverage Gaps: - "content marketing strategy" (1,200 vol) - "content marketing ROI" (980 vol) - "content calendar template" (580 vol) ... Action: Create 10-article cluster to build authority运行前提与已知限制
要让python3 research_topic_clusters.py真正跑通,需满足以下条件(依据 data_sources/README.md 与源码结构):
- 依赖安装:
pip install -r data_sources/requirements.txt;ML 轨道额外需要scikit-learn(不可用时自动降级为规则聚类,脚本会打印 "Note: sklearn not available."); - 环境变量(
research_topic_clusters.py通过load_dotenv()加载):GSC_SITE_URL与GSC_CREDENTIALS_PATH——缺少站点 URL 或凭证文件不存在时GoogleSearchConsole.__init__会直接抛ValueError,流程终止;DATAFORSEO_LOGIN/DATAFORSEO_PASSWORD——仅在需要覆盖缺口时用到,可缺省。 完整的.env模板可参考 data_sources/README.md 中给出的样例(data_sources/config/.env由.env.example复制而来);
- 数据量门槛:GSC 中排名关键词需 ≥10 个才能启动聚类;<20 个或无 sklearn 时走规则聚类路径;
- GSC API 限制:Search Console API 单次查询上限 1000 行(
rowLimit),关键词极多时实际参与聚类的样本会被该上限截断,从 data_sources/modules/google_search_console.py 的默认limit=1000参数可以确认这一点; - 版本一致性提示:如前文所述,脚本调用
get_keyword_positions(days=90, min_impressions=5),而仓库中该方法的当前签名为(days, limit),二者存在出入,实际部署时应先本地验证调用兼容性,或按目标 GSC 模块版本调整调用参数; - 工作目录:报告写入相对路径
research/,建议从仓库根目录执行(若该目录不存在,脚本当前未做创建,可自行先建目录)。
时间与成本方面,命令文档给出的估计为:耗时 2–3 分钟;DataForSEO 缺口查询约 $0.50(按 data_sources/README.md 中"related keyword 数据约 $0.006/词"的量级,每簇 1 次 live 查询、约 20 个簇即可解释该成本);纯聚类完全免费。
如何解读报告并落地策略
命令文档给出的三级优先级策略,与报告结构一一对应:
Priority 1:Build Weak Clusters(最高优先)
- 选出需求(曝光)最高的 2–3 个弱簇;
- 先建 pillar page(文档建议 3000+ 词),再建 8–12 篇 cluster 文章;
- 覆盖报告列出的全部 coverage gaps;
- 所有 cluster 文章内链指向 pillar。
Priority 2:Maintain Strong Clusters——保持内容新鲜度、向进阶主题扩张、补足残余缺口。
Priority 3:Strengthen Moderate Clusters——补 3–5 篇达到强权威门槛,同时优化现有内容排名。
与其余命令的衔接(Integration)
/research-topics不是孤立工具,它是该工作区研究链路的"选路器"。文档明确给出的下游流程:
- 选定要建设的弱簇;
- 对每个 gap 关键词跑
/research-serp [gap keyword](定义见 .claude/commands/research-serp.md),做 SERP 意图分析; - 先创建 pillar page,再写 cluster 内容;
- 每篇内容用
/write [keyword]生成(定义见 .claude/commands/write.md)。
仓库中还有与"集群构建"主题直接相关的 .claude/commands/cluster.md,可与本命令配合使用。
什么时候运行(When to Run)
- 每月一次:监控主题权威度增长曲线;
- 内容规划前:识别下一个要建设的集群;
- 进入新细分领域时:确定哪些主题值得长期占据。
小结
/research-topics的设计逻辑可以用一句话概括:用 GSC 真实排名数据定位"权威洼地",用 TF-IDF/K-Means(或规则匹配)把关键词组织成主题,用覆盖度/位置/需求三因子量化每个主题的成熟度,再用 DataForSEO 的 related keywords 精确到"该写的下一篇"粒度。整条链路的数据源、算法参数、评分梯度与报告结构均可在 research_topic_clusters.py、data_sources/modules/google_search_console.py、data_sources/modules/dataforseo.py 中逐行验证,配合 config/competitors.example.json 中的topic_patterns完成行业定制后,它就能从"一次性分析脚本"升级为每月可复跑的主题权威度仪表盘。
【免费下载链接】seomachineA specialized Claude Code workspace for creating long-form, SEO-optimized blog content for any business. This system helps you research, write, analyze, and optimize content that ranks well and serves your target audience.项目地址: https://gitcode.com/GitHub_Trending/se/seomachine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考