Research SEO Demand
完整调研并确定 SEO 机会:从产品理解、领域词表拆解、关键词矩阵扩展、Bing 真实热度验证、竞品发现、实时 SERP...
Install
npx skills add tsingyuai/growth-lab --skill research-seo-demand -g -a claude-code -y- Repository
- tsingyuai/growth-lab2k
- Category
- Marketing
- Updated
- 1mo ago
- License
- Apache-2.0
- Context cost
- Lightabout 1,384 tokens
- Runs scripts
- Yes, review before use
What it does
完整调研并确定 SEO 机会:从产品理解、领域词表拆解、关键词矩阵扩展、Bing 真实热度验证、竞品发现、实时 SERP 抓取,到头部页面的搜索引擎层、用户层和质量层拆解。需要查热词、验证搜索量、判断搜索意图、研究竞品页面、寻找信息增益缺口或决定应该做什么 SEO 页面时使用。
SEO 需求调研
先确认用户真的在搜索什么,再从热词下真实获得排名的页面学习页面形态与内容方法。不要从预想的竞品清单反推关键词;关键词由产品、用户任务、场景和真实搜索数据共同产生,竞品用于学习页面怎么做。
本 Collector 只产出需求、SERP 和竞品页面证据。页面设计与实现交给 $create-seo-page,上线后的效果观测交给 $review-seo-performance。
1. 从产品与用户任务开始
读取产品代码、文档、公开页面、当前转化路径、客户语言、站内搜索、支持记录和已有增长证据。先写清:
- 用户是谁,处在什么情境;
- 用户要完成什么任务;
- 产品通过什么真实动作解决任务;
- 调研的市场、语言和搜索引擎;
- 已有页面、已有关键词和不能重复建设的内容。
对无法从产品材料确认的用户问题和值得验证的价值保持开放,不要把产品功能列表直接改写成关键词列表。
2. 拆解领域词表并扩展关键词
七个方向逐一展开,每个方向单独成词表,保持不同具体度的词可以横向比较:
| 方向 | 组词方法 |
|---|---|
| 头部概念 | 领域核心名词、任务名、品类名 |
| 场景复合 | 场景 × 对象、文档、媒介或交付物 |
| 动作与结果 | 场景 × 生成、制作、转换、修复、改进、学习等动作 |
| 竞品词 | 通用品类产品与从 SERP 发现的垂类产品品牌词 |
| 工具词 | 功能点、格式、集成、转换和使用教程 |
| 资源词 | 模板、示例、清单、下载、规范和素材 |
| 问句词 | 怎么做、哪个好、为什么、价格、质量、风险、比较和失败问题 |
大面积展开
- 先测头部概念词,判断哪些方向确实存在需求。
- 对有效方向建立修饰词、场景、对象、动作和结果矩阵,用笛卡尔积扩展到 100 个以上候选词。
- 与已有词表和历史 Memory 去重。
- 用 Bing 或目标搜索引擎的搜索框联想、相关搜索、SERP 标题、社区讨论、产品评论和支持语言补充自然表达。
- 大批量 N/A 不是无用结果;它能说明某一组精确表达在当前引擎和市场中缺乏可观测需求,但不能证明其他渠道没有需求。
竞品发现
竞品词不是只靠事先知道的品牌列表:
- 先抓一轮场景词和邻接场景词的 SERP。
- 聚合重复出现的域名和产品名。
- 区分通用品类产品、垂类产品、内容平台和社区页面。
- 把新发现的品牌名回填词表,再验证品牌词热度和搜索意图。
品牌词和术语存在多义时必须阅读实时 SERP。把混合意图拆开,不能直接引用混合流量作为产品需求。
3. 用 Bing Webmaster 验证真实热度
需要完整聚合结果时运行随仓库分发的脚本:
node collectors/research-seo-demand/scripts/fetch-keyword-stats.mjs \
cn zh-CN <keywords-file>
printf '关键词一\n关键词二\n' | \
node collectors/research-seo-demand/scripts/fetch-keyword-stats.mjs cn zh-CN -
脚本从 BING_WEBMASTER_API_KEY 读取凭据,输出按 avgStrict 降序的表格和 CSV。用 BING_KEYWORD_OUT 更改 CSV 文件名。
需要保存 Bing 原始周数据时运行通用 Client:
node collectors/bing-webmaster/bing-webmaster.mjs keyword-stats \
--country <country> --language <language> \
--input <keywords-file> --out <raw-output-file>
