单个关键词的 SEO 作战中心:排名趋势、TDH/SERP 分析、内容优化、内链执行、外链、Screaming Frog 内链对比等全部信息集中在一页。
入口:首页点击词、或带 ?keyword=文本 / ?id=数字 访问。
单词看板是一个词的全生命周期作战室:把「排名结果 → 为什么这样 → 下一步做什么」放在一页。设计原则:先读库、再按需调第三方(GPT/抓取),避免打开页面就烧 API。
所有数据经 mhw_keyword_dashboard_bootstrap() 加载。URL 优先 ?keyword=文本,兼容 ?id=。
历史迁移可能导致同一 keyword 文本对应多个 keywords_basic.id。排名、内链日志查询用 mhw_keyword_ranking_scope / mhw_keyword_scope_ids 展开为 IN 条件,避免看板空白或漏日志。
OnPage 子表(TDH/内容/内链计划)用 mhw_keyword_fetch_scoped_row 按「词文本 + id」取最新有效行。
target_url_rank;初始取历史最早一条。domain_rank,与首页卡片口径一致。ranking_breakthrough.php):找历史最大单周提升,叠加 SERP Top10 模拟快照,标出目标 URL 在结果中的位置——用于讲解「什么时候跳了一大档」。前置:排名批次里须有 serp_top10_json(SerpAPI 有机 Top10)。无快照则工作区提示先跑 SERP。
规则引擎(本地、免费):
optimization_actions(可先落地的 TDH 修改建议,不依赖 GPT)。GPT 建议(消耗配额,每日上限):用户点「获取推荐方案」→ tdh-serp-analysis-api?action=suggestions → LLM 输出 JSON 推荐 TDH + 执行计划 HTML。可先 analyze 只存规则结果。
竞品 TDH:同类型 SERP 结果页从 target_url_page_cache 读 H1/Title;缺失时 POST tdh-peer-landing-api 触发 canonical_body_stack 单 URL 抓取(人工点「同步 H1」,首屏不自动抓)。
apply:把采纳的 GPT 方案写回 onpage_tdh_records 计划字段(不自动改线上站)。
硬前置(缺一不可):
serp_top10_json 已有;tdh_serp_analysis 里已有规则引擎 rule_result_json。用户点「启动诊断」→ 创建 mhw_content_optimization_job → 前端轮询 content-optimization-api?action=tick。单步推进:
queued → building_snapshots → paa_queries → fetching_paa → clustering_paa → diagnosing → completed
mhw_keyword_paa_cache(须事先 batch SerpAPI);可用 LLM 生成查询词再抓 PAA。环境 MHW_CONTENT_OPTIMIZATION_PYTHON=1 时 tick 委托 Python worker,否则 PHP pipeline。
三张数据源同时看:
| 来源 | 含义 |
|---|---|
internal_link_plans | 运营计划:目标 URL、状态、计划完成日 |
internal_link_logs | 实际已做内链(Excel 导入):来源页、锚点、完成日 |
sf_inlinks_detail | Screaming Frog 全站爬取:当前站内有多少链指向目标 URL(按页面类型:博客正文/非博客/模板区等) |
内链策略模块(internal_link_strategy.php):根据当前排名档位定目标(如冲 TOP 10),对比 SF 统计的 blog_body / non_blog_body 链数与目标缺口,从 SF 全库挑「还没链过、页面类型合适」的来源页,给出优先级、建议锚文、版位。已存在于 internal_link_logs 的来源标为已完成。
InfoHub 内链有独立计划表 infohub_link_plans,逻辑类似但数据分开维护。
backlink_details 离线导入。匹配规则:锚文本与关键词文本相等(忽略大小写)。展示 DR、来源域、落地页是否匹配 target_url 等。垃圾外链治理在独立 spam 模块,不在此页实时抓取。
技术向细节(CWV、结构化数据)在 目标 URL 技术看板;时间维复盘在 优化时间线;改计划数据在 编辑控制台。
| API 路径 | action | 说明 |
|---|---|---|
/pages/tdh-serp-analysis-api | get / analyze / apply | TDH SERP 规则+GPT 分析与落库 |
/pages/tdh-peer-landing-api | get / refresh | 竞品落地页 TDH 抓取缓存 |
/pages/content-optimization-api | get / run / tick / cancel | 内容优化流水线任务 |
/pages/target-url-preview-proxy | — | 目标 URL 预览代理(iframe) |
关键词 ID 解析统一走 mhw_api_resolve_keyword_from_request()(支持 id、keyword_id、keyword)。
| 表 | 用途 |
|---|---|
keywords_basic | 词与 target_url |
keyword_ranking_logs | 排名曲线 |
onpage_tdh_records | TDH 现状与计划 |
onpage_content_records | 内容状态 |
internal_link_plans / infohub_link_plans | 内链计划 |
internal_link_logs / infohub_link_logs | 内链执行明细 |
tdh_serp_analysis | SERP 分析与 GPT 建议存档 |
mhw_content_optimization_job | 内容优化异步任务 |
backlink_details | 外链锚文本匹配 |
sf_crawl_jobs / sf_inlinks_detail | Screaming Frog 爬取与内链 |
target_url_page_cache | 目标页 OnPage 缓存 |
pages/keyword-dash-board.phpincludes/keyword_dashboard_bootstrap.phpincludes/serp_tdh_panel_embed.php、includes/content_optimization_panel.php