From c8fb6956efa99036ba842465b1ac4d93563baba2 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 17 Apr 2026 21:09:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=81=E6=A8=A1=E6=9D=BF=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../helper/DomainSpiderCrawlLogHelper.php | 6 + .../DomainSpiderCrawlLogSchemaHelper.php | 54 ++ .../view/videoBoKu/sitemap/sitemap-main.xml | 25 +- .../view/videoBoKu/video/getCategoryType.html | 8 +- .../view/videoBoKu/video/getVideoPlayUrl.html | 6 +- .../view/videoDadi/sitemap/sitemap-main.xml | 25 +- .../view/videoDadi/video/getCategoryType.html | 8 +- .../view/videoDadi/video/getVideoPlayUrl.html | 6 +- .../videoDingZhu/sitemap/sitemap-main.xml | 25 +- .../videoDingZhu/video/getCategoryType.html | 8 +- .../videoDingZhu/video/getVideoPlayUrl.html | 6 +- .../view/videoLaoNiu/sitemap/sitemap-main.xml | 25 +- .../videoLaoNiu/video/getCategoryType.html | 8 +- .../videoLaoNiu/video/getVideoPlayUrl.html | 6 +- .../view/videoNuNu/sitemap/sitemap-main.xml | 25 +- .../view/videoNuNu/video/getCategoryType.html | 8 +- .../view/videoNuNu/video/getVideoPlayUrl.html | 6 +- ...1270-SEONexus-Codex多版本协作交接总文档.md | 2 +- ...8-SEONexus-老模板SEO公共总览-2026-04-17.md | 77 +++ ...-admin2-spider-workbench-production-fix.md | 2 +- docs/README.md | 39 +- .../01-老模板第一阶段回灌执行文档.md} | 0 ...2-老模板蜘蛛日志观察交接文档-2026-04-16.md | 400 +++++++++++++ ...板蜘蛛日志与代码映射交接文档-2026-04-16.md | 326 +++++++++++ .../04-老模板蜘蛛日志观察更新-2026-04-17.md | 305 ++++++++++ ...板蜘蛛日志变化与代码判断更新-2026-04-17.md | 252 ++++++++ .../06-主Codex可执行检查清单-2026-04-17.md | 228 ++++++++ .../07-主Codex检查清单补充修正-2026-04-17.md | 172 ++++++ .../08-第一轮只读代码审查发现-2026-04-17.md | 240 ++++++++ .../09-第一批候选修正方案-2026-04-17.md | 258 +++++++++ ...0-第一批候选修正方案评审建议-2026-04-17.md | 204 +++++++ .../11-第一批可落地修正设计-2026-04-17.md | 309 ++++++++++ .../12-第一批修正实施方案-2026-04-17.md | 249 ++++++++ .../13-主Codex接手摘要-2026-04-17.md | 173 ++++++ .../14-蜘蛛分析交接索引-2026-04-17.md | 195 +++++++ .../15-主Codex启动提示-2026-04-17.md | 64 +++ .../16-第一批修正验收清单-2026-04-17.md | 193 +++++++ ...模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md | 341 +++++++++++ ...老模板站群7天SEO冲量执行方案-2026-04-17.md | 344 +++++++++++ ...老模板站群Day1重点域名基线板-2026-04-17.md | 259 +++++++++ ...模板第一批SEO高收益修正清单-2026-04-17.md | 262 +++++++++ ...模板实施安全边界与GPT隔离说明-2026-04-17.md | 152 +++++ ...板第一批实施任务单与验收矩阵-2026-04-17.md | 321 +++++++++++ .../23-老模板逐文件改动蓝图-2026-04-17.md | 337 +++++++++++ .../24-老模板第一批施工索引页-2026-04-17.md | 190 ++++++ .../25-老模板分类页Patch模板-2026-04-17.md | 181 ++++++ .../26-老模板播放页Patch模板-2026-04-17.md | 197 +++++++ .../27-老模板SitemapPatch模板-2026-04-17.md | 214 +++++++ .../28-老模板第一批施工总表-2026-04-17.md | 246 ++++++++ .../29-老模板第一批提交节奏建议-2026-04-17.md | 224 ++++++++ ...0-老模板最新蜘蛛日志实战分析-2026-04-17.md | 542 ++++++++++++++++++ ...-老模板样板站域名级SEO任务单-2026-04-17.md | 259 +++++++++ ...老模板样板站URL-Family对照表-2026-04-17.md | 154 +++++ .../33-老模板样板站Day1执行单-2026-04-17.md | 134 +++++ .../34-老模板7天SEO跟踪板-2026-04-17.md | 221 +++++++ .../35-老模板每日复盘模板-2026-04-17.md | 167 ++++++ .../36-老模板首周验收清单-2026-04-17.md | 207 +++++++ .../37-老模板主Codex启动提示词-2026-04-17.md | 120 ++++ .../38-老模板SEO交班总览-2026-04-17.md | 208 +++++++ docs/old-tmp-seo/README.md | 36 ++ 60 files changed, 9113 insertions(+), 146 deletions(-) create mode 100644 docs/1308-SEONexus-老模板SEO公共总览-2026-04-17.md rename docs/{1269-SEONexus-老模板第一阶段回灌执行文档.md => old-tmp-seo/01-老模板第一阶段回灌执行文档.md} (100%) create mode 100644 docs/old-tmp-seo/02-老模板蜘蛛日志观察交接文档-2026-04-16.md create mode 100644 docs/old-tmp-seo/03-老模板蜘蛛日志与代码映射交接文档-2026-04-16.md create mode 100644 docs/old-tmp-seo/04-老模板蜘蛛日志观察更新-2026-04-17.md create mode 100644 docs/old-tmp-seo/05-老模板蜘蛛日志变化与代码判断更新-2026-04-17.md create mode 100644 docs/old-tmp-seo/06-主Codex可执行检查清单-2026-04-17.md create mode 100644 docs/old-tmp-seo/07-主Codex检查清单补充修正-2026-04-17.md create mode 100644 docs/old-tmp-seo/08-第一轮只读代码审查发现-2026-04-17.md create mode 100644 docs/old-tmp-seo/09-第一批候选修正方案-2026-04-17.md create mode 100644 docs/old-tmp-seo/10-第一批候选修正方案评审建议-2026-04-17.md create mode 100644 docs/old-tmp-seo/11-第一批可落地修正设计-2026-04-17.md create mode 100644 docs/old-tmp-seo/12-第一批修正实施方案-2026-04-17.md create mode 100644 docs/old-tmp-seo/13-主Codex接手摘要-2026-04-17.md create mode 100644 docs/old-tmp-seo/14-蜘蛛分析交接索引-2026-04-17.md create mode 100644 docs/old-tmp-seo/15-主Codex启动提示-2026-04-17.md create mode 100644 docs/old-tmp-seo/16-第一批修正验收清单-2026-04-17.md create mode 100644 docs/old-tmp-seo/17-老模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md create mode 100644 docs/old-tmp-seo/18-老模板站群7天SEO冲量执行方案-2026-04-17.md create mode 100644 docs/old-tmp-seo/19-老模板站群Day1重点域名基线板-2026-04-17.md create mode 100644 docs/old-tmp-seo/20-老模板第一批SEO高收益修正清单-2026-04-17.md create mode 100644 docs/old-tmp-seo/21-老模板实施安全边界与GPT隔离说明-2026-04-17.md create mode 100644 docs/old-tmp-seo/22-老模板第一批实施任务单与验收矩阵-2026-04-17.md create mode 100644 docs/old-tmp-seo/23-老模板逐文件改动蓝图-2026-04-17.md create mode 100644 docs/old-tmp-seo/24-老模板第一批施工索引页-2026-04-17.md create mode 100644 docs/old-tmp-seo/25-老模板分类页Patch模板-2026-04-17.md create mode 100644 docs/old-tmp-seo/26-老模板播放页Patch模板-2026-04-17.md create mode 100644 docs/old-tmp-seo/27-老模板SitemapPatch模板-2026-04-17.md create mode 100644 docs/old-tmp-seo/28-老模板第一批施工总表-2026-04-17.md create mode 100644 docs/old-tmp-seo/29-老模板第一批提交节奏建议-2026-04-17.md create mode 100644 docs/old-tmp-seo/30-老模板最新蜘蛛日志实战分析-2026-04-17.md create mode 100644 docs/old-tmp-seo/31-老模板样板站域名级SEO任务单-2026-04-17.md create mode 100644 docs/old-tmp-seo/32-老模板样板站URL-Family对照表-2026-04-17.md create mode 100644 docs/old-tmp-seo/33-老模板样板站Day1执行单-2026-04-17.md create mode 100644 docs/old-tmp-seo/34-老模板7天SEO跟踪板-2026-04-17.md create mode 100644 docs/old-tmp-seo/35-老模板每日复盘模板-2026-04-17.md create mode 100644 docs/old-tmp-seo/36-老模板首周验收清单-2026-04-17.md create mode 100644 docs/old-tmp-seo/37-老模板主Codex启动提示词-2026-04-17.md create mode 100644 docs/old-tmp-seo/38-老模板SEO交班总览-2026-04-17.md create mode 100644 docs/old-tmp-seo/README.md diff --git a/code/app/common/helper/DomainSpiderCrawlLogHelper.php b/code/app/common/helper/DomainSpiderCrawlLogHelper.php index 4beee24..8b544b1 100644 --- a/code/app/common/helper/DomainSpiderCrawlLogHelper.php +++ b/code/app/common/helper/DomainSpiderCrawlLogHelper.php @@ -15,6 +15,9 @@ class DomainSpiderCrawlLogHelper $arrItem['host'] = strtolower(trim((string)($arrItem['host'] ?? ''))); $arrItem['path'] = trim((string)($arrItem['path'] ?? '')); $arrItem['page_type'] = DomainSpiderCrawlLogSchemaHelper::normalizePageType((string)($arrItem['page_type'] ?? 'other')); + if ($arrItem['page_type'] === 'other') { + $arrItem['page_type'] = DomainSpiderCrawlLogSchemaHelper::inferPageTypeFromPath((string)$arrItem['path'], 'other'); + } $arrItem['bot_name'] = DomainSpiderCrawlLogSchemaHelper::normalizeBotName((string)($arrItem['bot_name'] ?? 'other_bot')); $arrItem['status'] = (int)($arrItem['status'] ?? 0); $arrItem['count'] = max(0, (int)($arrItem['count'] ?? 0)); @@ -26,6 +29,9 @@ class DomainSpiderCrawlLogHelper $arrItem['host'] = strtolower(trim((string)($arrItem['host'] ?? ''))); $arrItem['url'] = trim((string)($arrItem['url'] ?? '')); $arrItem['page_type'] = DomainSpiderCrawlLogSchemaHelper::normalizePageType((string)($arrItem['page_type'] ?? 'other')); + if ($arrItem['page_type'] === 'other') { + $arrItem['page_type'] = DomainSpiderCrawlLogSchemaHelper::inferPageTypeFromPath((string)$arrItem['url'], 'other'); + } $arrItem['bot_name'] = DomainSpiderCrawlLogSchemaHelper::normalizeBotName((string)($arrItem['bot_name'] ?? 'other_bot')); $arrItem['status'] = (int)($arrItem['status'] ?? 0); $arrItem['cache_status'] = self::normalizeCacheStatus((string)($arrItem['cache_status'] ?? '')); diff --git a/code/app/common/helper/DomainSpiderCrawlLogSchemaHelper.php b/code/app/common/helper/DomainSpiderCrawlLogSchemaHelper.php index f5ed068..afc29bf 100644 --- a/code/app/common/helper/DomainSpiderCrawlLogSchemaHelper.php +++ b/code/app/common/helper/DomainSpiderCrawlLogSchemaHelper.php @@ -202,6 +202,60 @@ class DomainSpiderCrawlLogSchemaHelper return in_array($strPageType, self::buildSchema()['page_type_enum'], true) ? $strPageType : 'other'; } + public static function inferPageTypeFromPath(string $strPath, string $strFallback = 'other'): string + { + $strPath = strtolower(trim($strPath)); + if ($strPath === '') { + return self::normalizePageType($strFallback); + } + + $strPath = parse_url($strPath, PHP_URL_PATH) ?: $strPath; + $strPath = '/' . ltrim($strPath, '/'); + $strNormalized = trim($strPath, '/'); + + if ($strNormalized === '' || $strNormalized === 'index.php') { + return 'home'; + } + + if ($strNormalized === 'robots.txt') { + return 'robots'; + } + + if (str_contains($strNormalized, 'sitemap')) { + return 'sitemap'; + } + + if (str_starts_with($strNormalized, 'search') || str_starts_with($strNormalized, 'get-index')) { + return 'search'; + } + + if ( + str_contains($strNormalized, 'videotype') + || str_contains($strNormalized, 'vodtype') + || str_contains($strNormalized, 'fenlei') + ) { + return 'category'; + } + + if ( + str_starts_with($strNormalized, 'voddetail/') + || str_starts_with($strNormalized, 'video-info/') + || str_starts_with($strNormalized, 'neirong-') + ) { + return 'detail'; + } + + if ( + str_starts_with($strNormalized, 'vodplay/') + || str_starts_with($strNormalized, 'video-play/') + || str_starts_with($strNormalized, 'bf-') + ) { + return 'play'; + } + + return self::normalizePageType($strFallback); + } + public static function normalizeBotName(string $strBotName): string { $strValue = strtolower(trim($strBotName)); diff --git a/code/app/home/view/videoBoKu/sitemap/sitemap-main.xml b/code/app/home/view/videoBoKu/sitemap/sitemap-main.xml index 9027552..d4710d8 100644 --- a/code/app/home/view/videoBoKu/sitemap/sitemap-main.xml +++ b/code/app/home/view/videoBoKu/sitemap/sitemap-main.xml @@ -1,35 +1,16 @@ - https://www.{$DomainModel->d_domain}/ + https://{$DomainModel->d_domain}/ {:date('Y-m-d')} daily 1.0 - https://www.{$DomainModel->d_domain}{$strRankUrlTemp} + https://{$DomainModel->d_domain}{$strRankUrlTemp} {:date('Y-m-d')} daily 1.0 - - - {novel:category d_key="strCategoryPinyin" d_val="strCategoryName"} - - {novel:sort d_key="sort_key" d_val="strSortName"} - - {novel:status d_key="status_key" d_val="strStatusName"} - - https://www.{$DomainModel->d_domain}{site:nflurl category="$strCategoryPinyin" order="$sort_key" status="$status_key" /} - {:date('Y-m-d')} - weekly - 0.8 - - {/novel:status} - {/novel:sort} - {/novel:category} - - - - \ No newline at end of file + diff --git a/code/app/home/view/videoBoKu/video/getCategoryType.html b/code/app/home/view/videoBoKu/video/getCategoryType.html index ddb297f..e96a030 100644 --- a/code/app/home/view/videoBoKu/video/getCategoryType.html +++ b/code/app/home/view/videoBoKu/video/getCategoryType.html @@ -13,10 +13,12 @@ {block name="description"}{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}{/block} {block name="head"} + + - + {switch $Request.route.strParentCategory } {case 'dian-ying' } @@ -45,7 +47,7 @@ "@context": "https://schema.org", "@type": "CollectionPage", "name": "{$DomainModel->d_name} - 最新{site:getval code="strVideoParentCategoryName" /}推荐", - "url": "https://{$DomainModel->d_domain}", + "url": "https://{$DomainModel->d_domain}{site:vciurl parent_category="$Request.route.strParentCategory" /}", "description": "{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}", "potentialAction": { "@type": "SearchAction", @@ -192,4 +194,4 @@ {/block} {block name="customize"} -{/block} \ No newline at end of file +{/block} diff --git a/code/app/home/view/videoBoKu/video/getVideoPlayUrl.html b/code/app/home/view/videoBoKu/video/getVideoPlayUrl.html index 3bea718..abd86b0 100644 --- a/code/app/home/view/videoBoKu/video/getVideoPlayUrl.html +++ b/code/app/home/view/videoBoKu/video/getVideoPlayUrl.html @@ -44,7 +44,7 @@ {/switch} + content='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}'> @@ -69,7 +69,7 @@ href='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$a "description": "{$arrVideo.v_description}", "thumbnailUrl": "{$arrVideo.v_pic}", "uploadDate": "{:date('Y-m-d')}", - "url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en"/}', + "url": 'https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}', "inLanguage": [ {volist name='$arrVideo.v_lang' id='strVideoLang' key='index'} @@ -521,4 +521,4 @@ href='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$a defer> --> -{/block} \ No newline at end of file +{/block} diff --git a/code/app/home/view/videoDadi/sitemap/sitemap-main.xml b/code/app/home/view/videoDadi/sitemap/sitemap-main.xml index 9027552..d4710d8 100644 --- a/code/app/home/view/videoDadi/sitemap/sitemap-main.xml +++ b/code/app/home/view/videoDadi/sitemap/sitemap-main.xml @@ -1,35 +1,16 @@ - https://www.{$DomainModel->d_domain}/ + https://{$DomainModel->d_domain}/ {:date('Y-m-d')} daily 1.0 - https://www.{$DomainModel->d_domain}{$strRankUrlTemp} + https://{$DomainModel->d_domain}{$strRankUrlTemp} {:date('Y-m-d')} daily 1.0 - - - {novel:category d_key="strCategoryPinyin" d_val="strCategoryName"} - - {novel:sort d_key="sort_key" d_val="strSortName"} - - {novel:status d_key="status_key" d_val="strStatusName"} - - https://www.{$DomainModel->d_domain}{site:nflurl category="$strCategoryPinyin" order="$sort_key" status="$status_key" /} - {:date('Y-m-d')} - weekly - 0.8 - - {/novel:status} - {/novel:sort} - {/novel:category} - - - - \ No newline at end of file + diff --git a/code/app/home/view/videoDadi/video/getCategoryType.html b/code/app/home/view/videoDadi/video/getCategoryType.html index 70d45c1..a6a5b7b 100644 --- a/code/app/home/view/videoDadi/video/getCategoryType.html +++ b/code/app/home/view/videoDadi/video/getCategoryType.html @@ -13,10 +13,12 @@ {block name="description"}{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}{/block} {block name="head"} + + - + {switch $Request.route.strParentCategory } {case 'dian-ying' } @@ -45,7 +47,7 @@ "@context": "https://schema.org", "@type": "CollectionPage", "name": "{$DomainModel->d_name} - 最新{site:getval code="strVideoParentCategoryName" /}推荐", - "url": "https://{$DomainModel->d_domain}", + "url": "https://{$DomainModel->d_domain}{site:vciurl parent_category="$Request.route.strParentCategory" /}", "description": "{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}", "potentialAction": { "@type": "SearchAction", @@ -218,4 +220,4 @@ {/block} {block name="customize"} -{/block} \ No newline at end of file +{/block} diff --git a/code/app/home/view/videoDadi/video/getVideoPlayUrl.html b/code/app/home/view/videoDadi/video/getVideoPlayUrl.html index 5764a6f..9c2e00a 100644 --- a/code/app/home/view/videoDadi/video/getVideoPlayUrl.html +++ b/code/app/home/view/videoDadi/video/getVideoPlayUrl.html @@ -43,7 +43,7 @@ {default /} {/switch} - + @@ -68,7 +68,7 @@ href='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$a "description": "{$arrVideo.v_description}", "thumbnailUrl": "{$arrVideo.v_pic}", "uploadDate": "{:date('Y-m-d')}", - "url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en"/}', + "url": 'https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}', "inLanguage": [ {volist name='$arrVideo.v_lang' id='strVideoLang' key='index'} @@ -422,4 +422,4 @@ href='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$a -{/block} \ No newline at end of file +{/block} diff --git a/code/app/home/view/videoDingZhu/sitemap/sitemap-main.xml b/code/app/home/view/videoDingZhu/sitemap/sitemap-main.xml index 9027552..d4710d8 100644 --- a/code/app/home/view/videoDingZhu/sitemap/sitemap-main.xml +++ b/code/app/home/view/videoDingZhu/sitemap/sitemap-main.xml @@ -1,35 +1,16 @@ - https://www.{$DomainModel->d_domain}/ + https://{$DomainModel->d_domain}/ {:date('Y-m-d')} daily 1.0 - https://www.{$DomainModel->d_domain}{$strRankUrlTemp} + https://{$DomainModel->d_domain}{$strRankUrlTemp} {:date('Y-m-d')} daily 1.0 - - - {novel:category d_key="strCategoryPinyin" d_val="strCategoryName"} - - {novel:sort d_key="sort_key" d_val="strSortName"} - - {novel:status d_key="status_key" d_val="strStatusName"} - - https://www.{$DomainModel->d_domain}{site:nflurl category="$strCategoryPinyin" order="$sort_key" status="$status_key" /} - {:date('Y-m-d')} - weekly - 0.8 - - {/novel:status} - {/novel:sort} - {/novel:category} - - - - \ No newline at end of file + diff --git a/code/app/home/view/videoDingZhu/video/getCategoryType.html b/code/app/home/view/videoDingZhu/video/getCategoryType.html index dea9f4d..470878a 100644 --- a/code/app/home/view/videoDingZhu/video/getCategoryType.html +++ b/code/app/home/view/videoDingZhu/video/getCategoryType.html @@ -13,10 +13,12 @@ {block name="description"}{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}{/block} {block name="head"} + + - + {switch $Request.route.strParentCategory } {case 'dian-ying' } @@ -45,7 +47,7 @@ "@context": "https://schema.org", "@type": "CollectionPage", "name": "{$DomainModel->d_name} - 最新{site:getval code="strVideoParentCategoryName" /}推荐", - "url": "https://{$DomainModel->d_domain}", + "url": "https://{$DomainModel->d_domain}{site:vciurl parent_category="$Request.route.strParentCategory" /}", "description": "{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}", "potentialAction": { "@type": "SearchAction", @@ -191,4 +193,4 @@ {/block} {block name="customize"} -{/block} \ No newline at end of file +{/block} diff --git a/code/app/home/view/videoDingZhu/video/getVideoPlayUrl.html b/code/app/home/view/videoDingZhu/video/getVideoPlayUrl.html index 709162e..1ad029a 100644 --- a/code/app/home/view/videoDingZhu/video/getVideoPlayUrl.html +++ b/code/app/home/view/videoDingZhu/video/getVideoPlayUrl.html @@ -44,7 +44,7 @@ {/switch} + content='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}'> @@ -69,7 +69,7 @@ href='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$a "description": "{$arrVideo.v_description}", "thumbnailUrl": "{$arrVideo.v_pic}", "uploadDate": "{:date('Y-m-d')}", - "url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en"/}', + "url": 'https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}', "inLanguage": [ {volist name='$arrVideo.v_lang' id='strVideoLang' key='index'} @@ -448,4 +448,4 @@ href='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$a defer> --> -{/block} \ No newline at end of file +{/block} diff --git a/code/app/home/view/videoLaoNiu/sitemap/sitemap-main.xml b/code/app/home/view/videoLaoNiu/sitemap/sitemap-main.xml index 9027552..d4710d8 100644 --- a/code/app/home/view/videoLaoNiu/sitemap/sitemap-main.xml +++ b/code/app/home/view/videoLaoNiu/sitemap/sitemap-main.xml @@ -1,35 +1,16 @@ - https://www.{$DomainModel->d_domain}/ + https://{$DomainModel->d_domain}/ {:date('Y-m-d')} daily 1.0 - https://www.{$DomainModel->d_domain}{$strRankUrlTemp} + https://{$DomainModel->d_domain}{$strRankUrlTemp} {:date('Y-m-d')} daily 1.0 - - - {novel:category d_key="strCategoryPinyin" d_val="strCategoryName"} - - {novel:sort d_key="sort_key" d_val="strSortName"} - - {novel:status d_key="status_key" d_val="strStatusName"} - - https://www.{$DomainModel->d_domain}{site:nflurl category="$strCategoryPinyin" order="$sort_key" status="$status_key" /} - {:date('Y-m-d')} - weekly - 0.8 - - {/novel:status} - {/novel:sort} - {/novel:category} - - - - \ No newline at end of file + diff --git a/code/app/home/view/videoLaoNiu/video/getCategoryType.html b/code/app/home/view/videoLaoNiu/video/getCategoryType.html index aba78a0..0c09937 100644 --- a/code/app/home/view/videoLaoNiu/video/getCategoryType.html +++ b/code/app/home/view/videoLaoNiu/video/getCategoryType.html @@ -13,10 +13,12 @@ {block name="description"}{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}{/block} {block name="head"} + + - + {switch $Request.route.strParentCategory } {case 'dian-ying' } @@ -45,7 +47,7 @@ "@context": "https://schema.org", "@type": "CollectionPage", "name": "{$DomainModel->d_name} - 最新{site:getval code="strVideoParentCategoryName" /}推荐", - "url": "https://{$DomainModel->d_domain}", + "url": "https://{$DomainModel->d_domain}{site:vciurl parent_category="$Request.route.strParentCategory" /}", "description": "{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}", "potentialAction": { "@type": "SearchAction", @@ -242,4 +244,4 @@ {/block} {block name="customize"} -{/block} \ No newline at end of file +{/block} diff --git a/code/app/home/view/videoLaoNiu/video/getVideoPlayUrl.html b/code/app/home/view/videoLaoNiu/video/getVideoPlayUrl.html index fe8e7c9..55a5b45 100644 --- a/code/app/home/view/videoLaoNiu/video/getVideoPlayUrl.html +++ b/code/app/home/view/videoLaoNiu/video/getVideoPlayUrl.html @@ -44,7 +44,7 @@ {/switch} + content='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}'> @@ -70,7 +70,7 @@ href='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$a "description": "{$arrVideo.v_description}", "thumbnailUrl": "{$arrVideo.v_pic}", "uploadDate": "{:date('Y-m-d')}", - "url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en"/}', + "url": 'https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}', "inLanguage": [ {volist name='$arrVideo.v_lang' id='strVideoLang' key='index'} @@ -392,4 +392,4 @@ href='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$a -{/block} \ No newline at end of file +{/block} diff --git a/code/app/home/view/videoNuNu/sitemap/sitemap-main.xml b/code/app/home/view/videoNuNu/sitemap/sitemap-main.xml index 9027552..d4710d8 100644 --- a/code/app/home/view/videoNuNu/sitemap/sitemap-main.xml +++ b/code/app/home/view/videoNuNu/sitemap/sitemap-main.xml @@ -1,35 +1,16 @@ - https://www.{$DomainModel->d_domain}/ + https://{$DomainModel->d_domain}/ {:date('Y-m-d')} daily 1.0 - https://www.{$DomainModel->d_domain}{$strRankUrlTemp} + https://{$DomainModel->d_domain}{$strRankUrlTemp} {:date('Y-m-d')} daily 1.0 - - - {novel:category d_key="strCategoryPinyin" d_val="strCategoryName"} - - {novel:sort d_key="sort_key" d_val="strSortName"} - - {novel:status d_key="status_key" d_val="strStatusName"} - - https://www.{$DomainModel->d_domain}{site:nflurl category="$strCategoryPinyin" order="$sort_key" status="$status_key" /} - {:date('Y-m-d')} - weekly - 0.8 - - {/novel:status} - {/novel:sort} - {/novel:category} - - - - \ No newline at end of file + diff --git a/code/app/home/view/videoNuNu/video/getCategoryType.html b/code/app/home/view/videoNuNu/video/getCategoryType.html index c4ff2d9..83c3f61 100644 --- a/code/app/home/view/videoNuNu/video/getCategoryType.html +++ b/code/app/home/view/videoNuNu/video/getCategoryType.html @@ -13,10 +13,12 @@ {block name="description"}{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}{/block} {block name="head"} + + - + {switch $Request.route.strParentCategory } {case 'dian-ying' } @@ -45,7 +47,7 @@ "@context": "https://schema.org", "@type": "CollectionPage", "name": "{$DomainModel->d_name} - 最新{site:getval code="strVideoParentCategoryName" /}推荐", - "url": "https://{$DomainModel->d_domain}", + "url": "https://{$DomainModel->d_domain}{site:vciurl parent_category="$Request.route.strParentCategory" /}", "description": "{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}", "potentialAction": { "@type": "SearchAction", @@ -254,4 +256,4 @@ {/block} {block name="customize"} -{/block} \ No newline at end of file +{/block} diff --git a/code/app/home/view/videoNuNu/video/getVideoPlayUrl.html b/code/app/home/view/videoNuNu/video/getVideoPlayUrl.html index c2f9d77..d3a2a1e 100644 --- a/code/app/home/view/videoNuNu/video/getVideoPlayUrl.html +++ b/code/app/home/view/videoNuNu/video/getVideoPlayUrl.html @@ -44,7 +44,7 @@ {/switch} + content='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}'> @@ -70,7 +70,7 @@ href='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$a "description": "{$arrVideo.v_description}", "thumbnailUrl": "{$arrVideo.v_pic}", "uploadDate": "{:date('Y-m-d')}", - "url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en"/}', + "url": 'https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}', "inLanguage": [ {volist name='$arrVideo.v_lang' id='strVideoLang' key='index'} @@ -378,4 +378,4 @@ href='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$a -{/block} \ No newline at end of file +{/block} diff --git a/docs/1270-SEONexus-Codex多版本协作交接总文档.md b/docs/1270-SEONexus-Codex多版本协作交接总文档.md index 9137756..6410949 100644 --- a/docs/1270-SEONexus-Codex多版本协作交接总文档.md +++ b/docs/1270-SEONexus-Codex多版本协作交接总文档.md @@ -1247,7 +1247,7 @@ chown -R www:www /www/wwwroot/diff-maccms/SEONexus/docs 例如: -- [1269-SEONexus-老模板第一阶段回灌执行文档](/www/wwwroot/diff-maccms/docs/1269-SEONexus-老模板第一阶段回灌执行文档.md) +- [1269-SEONexus-老模板第一阶段回灌执行文档](/www/wwwroot/diff-maccms/docs/01-老模板第一阶段回灌执行文档.md) 适合记录: diff --git a/docs/1308-SEONexus-老模板SEO公共总览-2026-04-17.md b/docs/1308-SEONexus-老模板SEO公共总览-2026-04-17.md new file mode 100644 index 0000000..ac6e846 --- /dev/null +++ b/docs/1308-SEONexus-老模板SEO公共总览-2026-04-17.md @@ -0,0 +1,77 @@ +# 1308-SEONexus 老模板 SEO 公共总览 - 2026-04-17 + +## 目的 + +这份文档放在 `docs/` 根目录,只承担公共入口作用。 + +它不是老模板支线的详细分析文档,而是给所有协作者一个统一说明: + +1. 这条老模板 SEO 线已经单独收进 `docs/old-tmp-seo/` +2. 公共层只保留最少的主线判断 +3. 需要下钻时,再进入老模板子目录 + +--- + +## 一、当前公共结论 + +当前仓库里的文档已经分成两层: + +### 公共层 + +继续保留在 `docs/` 根目录: + +- `1270-SEONexus-Codex多版本协作交接总文档.md` +- `2026-04-16-admin2-spider-workbench-production-fix.md` +- `2026-04-17-spider-nginx-运维摘要.md` +- `2026-04-17-当前阶段总结.md` +- `2026-04-17-本轮交付清单.md` +- `Codex启动提示词模板.md` +- `接手检查清单模板.md` + +这些文档服务的是: + +- 多人协作 +- 公共排障 +- 生产辅助 +- 总交接 + +### 老模板支线 + +已经统一收进: + +- [docs/old-tmp-seo/README.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/README.md) + +这条支线只服务: + +- 老模板 `1001-1005` +- 样板站: + - `yagyjt.com` + - `www.ningxiaowei.com` +- 7 天 SEO 跟踪、复盘、验收、交班 + +--- + +## 二、如果你是公共协作者,先知道这 4 条就够 + +1. 老模板 SEO 现在已经单独成线 +2. 它不再和 GPT 模板共用一套文档入口 +3. 公共层不再被老模板长链路文档淹没 +4. 需要接手老模板时,直接进入 `docs/old-tmp-seo/` + +--- + +## 三、如果你要接手老模板,直接看哪份 + +最短路径是: + +1. 第 1 步:看 [38-老模板SEO交班总览-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/38-老模板SEO交班总览-2026-04-17.md) +2. 第 2 步:新开会话时用 [37-老模板主Codex启动提示词-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/37-老模板主Codex启动提示词-2026-04-17.md) +3. 第 3 步:当天执行看 [33-老模板样板站Day1执行单-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/33-老模板样板站Day1执行单-2026-04-17.md) +4. 第 4 步:每日复盘看 [35-老模板每日复盘模板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/35-老模板每日复盘模板-2026-04-17.md) +5. 第 5 步:首周验收看 [36-老模板首周验收清单-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/36-老模板首周验收清单-2026-04-17.md) + +--- + +## 四、一句话交接 + +> 老模板 SEO 这条线已经从公共 docs 里拆出来了,公共层只保留入口和总判断;需要深入时,统一进入 `docs/old-tmp-seo/`。 diff --git a/docs/2026-04-16-admin2-spider-workbench-production-fix.md b/docs/2026-04-16-admin2-spider-workbench-production-fix.md index 54f7677..bc279c1 100644 --- a/docs/2026-04-16-admin2-spider-workbench-production-fix.md +++ b/docs/2026-04-16-admin2-spider-workbench-production-fix.md @@ -85,7 +85,7 @@ 日志证据来自: -- `/www/wwwlogs/source.video2.com.error.log` +- 线上站点对应的 Nginx/PHP 错误日志 关键错误: diff --git a/docs/README.md b/docs/README.md index 1f74ace..89e9007 100644 --- a/docs/README.md +++ b/docs/README.md @@ -122,13 +122,44 @@ ### 10. 老模板回灌执行文档 -- [1269-SEONexus-老模板第一阶段回灌执行文档.md](/www/wwwroot/diff-maccms/SEONexus/docs/1269-SEONexus-老模板第一阶段回灌执行文档.md) +- [1308-SEONexus-老模板SEO公共总览-2026-04-17.md](/www/wwwroot/VideoSource2/docs/1308-SEONexus-老模板SEO公共总览-2026-04-17.md) +- [old-tmp-seo/README.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/README.md) +- [01-老模板第一阶段回灌执行文档.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/01-老模板第一阶段回灌执行文档.md) 适用场景: -1. 回看老模板第一阶段执行过程 -2. 对照历史回灌动作 -3. 排查旧版本与新版本差异 +1. 想知道老模板支线现在被放在哪个目录 +2. 想先看老模板公共入口,再决定要不要深入 +3. 回看老模板第一阶段执行过程 + +### 10.1 老模板蜘蛛分析交接链 + +如果你当前要接手的是 `2026-04-16` 到 `2026-04-17` 这轮老模板蜘蛛日志分析,建议直接看: + +- [1308-SEONexus-老模板SEO公共总览-2026-04-17.md](/www/wwwroot/VideoSource2/docs/1308-SEONexus-老模板SEO公共总览-2026-04-17.md) +- [38-老模板SEO交班总览-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/38-老模板SEO交班总览-2026-04-17.md) +- [37-老模板主Codex启动提示词-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/37-老模板主Codex启动提示词-2026-04-17.md) +- [36-老模板首周验收清单-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/36-老模板首周验收清单-2026-04-17.md) +- [35-老模板每日复盘模板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/35-老模板每日复盘模板-2026-04-17.md) +- [34-老模板7天SEO跟踪板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/34-老模板7天SEO跟踪板-2026-04-17.md) +- [33-老模板样板站Day1执行单-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/33-老模板样板站Day1执行单-2026-04-17.md) +- [32-老模板样板站URL-Family对照表-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/32-老模板样板站URL-Family对照表-2026-04-17.md) +- [31-老模板样板站域名级SEO任务单-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/31-老模板样板站域名级SEO任务单-2026-04-17.md) +- [30-老模板最新蜘蛛日志实战分析-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/30-老模板最新蜘蛛日志实战分析-2026-04-17.md) +- [17-老模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/17-老模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md) +- [13-主Codex接手摘要-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/13-主Codex接手摘要-2026-04-17.md) +- [12-第一批修正实施方案-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/12-第一批修正实施方案-2026-04-17.md) +- [14-蜘蛛分析交接索引-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/14-蜘蛛分析交接索引-2026-04-17.md) + +适用场景: + +1. 主 Codex 准备从分析切到第一批实现评估 +2. 新会话需要最快速理解这轮蜘蛛分析结论 +3. 想先确认当前主线到底是不是老模板 5 套 +4. 想直接找到 `1271` 到 `1286` 这一整串交接材料 +5. 想直接看最新工作台数据对应到老模板域名和模板编号的实战分析 +6. 想直接进入 `yagyjt.com / ningxiaowei.com` 这类样板站域名级任务 +7. 想快速确认“哪些是旧 family,哪些其实就是当前规范 family” ### 11. Admin2 Spider Workbench 生产排障记录 diff --git a/docs/1269-SEONexus-老模板第一阶段回灌执行文档.md b/docs/old-tmp-seo/01-老模板第一阶段回灌执行文档.md similarity index 100% rename from docs/1269-SEONexus-老模板第一阶段回灌执行文档.md rename to docs/old-tmp-seo/01-老模板第一阶段回灌执行文档.md diff --git a/docs/old-tmp-seo/02-老模板蜘蛛日志观察交接文档-2026-04-16.md b/docs/old-tmp-seo/02-老模板蜘蛛日志观察交接文档-2026-04-16.md new file mode 100644 index 0000000..6138db5 --- /dev/null +++ b/docs/old-tmp-seo/02-老模板蜘蛛日志观察交接文档-2026-04-16.md @@ -0,0 +1,400 @@ +# 1271-SEONexus 老模板蜘蛛日志观察交接文档 - 2026-04-16 + +## 目的 + +这份文档用于把本轮老模板蜘蛛日志观察结果,正式交接给主 Codex。 + +本轮遵循: + +- `01-老模板第一阶段回灌执行文档.md` +- `1270-SEONexus-Codex多版本协作交接总文档.md` + +因此本轮定位不是“旧版本自由发挥改一套实现”,而是: + +- 先观察 +- 先归纳 +- 先分型 +- 给主 Codex 提供下一步 SEO 优先方向 + +## 数据范围 + +- 项目:`SEONexus` +- 数据来源:`code/storage/domain-spider-crawl/runs/*/*/crawl-logs.summary.json` +- 观察对象:`baiduspider` +- 时间窗口:最近 24 小时 +- 观察日期:`2026-04-16` + +## 本轮总判断 + +当前百度蜘蛛的状态已经比较清楚: + +1. 百度不是没来,首页抓取已经普遍存在 +2. 深抓不是完全没有,已经有明确正样本 +3. 当前主要问题不是“入口完全断掉” +4. 当前主要问题是 `301/404` 损耗过高 +5. `category` 仍然弱,说明首页到中继层再到深页的稳定扩散还没普遍形成 + +一句话总结: + +> 当前老模板第一阶段已经证明百度可以稳定进入首页,且部分站点已经出现真实深抓,但整体抓取预算仍在被首页规范化、深页跳转和历史错误入口大量消耗。 + +## 24 小时总览 + +### 页面类型计数 + +- `home`: `509` +- `other`: `266` +- `detail`: `119` +- `play`: `51` +- `category`: `2` + +### 状态码计数 + +- `200`: `532` +- `301`: `231` +- `404`: `183` +- `444`: `1` + +## 当前最重要的统一信号 + +### 1. 首页已成为百度主入口 + +`home` 是当前最主要页面类型,说明首页入口已经建立。 + +### 2. 深抓已经出现,但还没有大面积扩散 + +`detail` 和 `play` 已经不是零,说明深抓链路不是完全断的。 + +### 3. 最大损耗是 `301` 和 `404` + +当前最值得优先处理的,不是继续争论“百度有没有来”,而是: + +- 首页是否直达 +- 深页是否带多余跳转 +- 历史错误入口是否继续吞预算 + +### 4. `category` 仍然偏弱 + +最近 24 小时只有: + +- `category|200 = 2` + +说明首页到分类的中继层仍弱,深抓扩散还没进入更稳的阶段。 + +## 当前高频异常路径 + +本轮最明显的异常路径包括: + +- `/|301` +- `/zb_system/login.php|301` +- `/zb_system/login.php|404` +- `/admin.php|301` +- 多个 `/voddetail/...|301` +- 多个 `/vodplay/...|301` +- 多个 `/video-info/...|301` +- 多个 `/video-play/...|301` +- 多个 `/video-show/...|301` +- `/showchengshi.asp?...|404` +- 一批 `/index.php/...shtml|404` +- 一批 `webuploader / upload / fileupload / preview` 类 `404` + +对应判断: + +1. 首页规范化还没完全收口 +2. 深页历史路径兼容仍然有明显跳转损耗 +3. 后台和旧脚本路径还在抢抓取预算 + +## 站点分型 + +### A 组:深抓正样本,优先保放量 + +#### `yagyjt.com` + +核心统计: + +- `detail|200`: `59` +- `detail|301`: `60` +- `play|200`: `25` +- `play|301`: `22` +- `home|200`: `18` +- `home|301`: `6` + +结论: + +- 百度已经真实进入详情页和播放页 +- 当前主问题不是“能不能深抓” +- 当前主问题是“深页 301 太多,正在吃掉已出现的深抓放量” + +主 Codex 建议: + +- 优先减少 `detail|301` +- 优先减少 `play|301` +- 顺带继续压首页 `/|301` +- 继续观察 `/zb_system/login.php` 这类噪音入口 + +#### `junhaolab.com` + +核心统计: + +- `play|200`: `2` +- `play|301`: `2` + +结论: + +- 这是弱深抓样本 +- 量小,但说明百度已经碰到播放页 + +主 Codex 建议: + +- 作为次级深抓观察对象 +- 重点看播放页跳转能否收敛 + +### B 组:错误入口高消耗样本,先清噪音 + +#### `qf123.net` + +核心统计: + +- `other|404`: `169` +- `home|200`: `1` + +典型异常: + +- `/js/webuploader/demo/server/upload.php|404` +- `/js/webuploader/demo/server/uploadfile.php|404` +- `/lib/webuploader-0.1.15/server/file.php|404` +- `/libs/webuploader/0.1.15/server/fileupload.php|404` + +结论: + +- 当前不是深抓问题 +- 当前是错误入口纯消耗问题 + +主 Codex 建议: + +- 先把这类历史上传组件和旧脚本路径的噪音收敛 +- 在错误入口没下降前,不要把它当深抓效果站 + +#### `sctyjz.com` + +核心统计: + +- `home|200`: `12` +- `home|301`: `6` +- `other|404`: `8` + +典型异常: + +- `/|301` +- `/index.php/heixj/haoxj/haoxj/...shtml|404` + +结论: + +- 首页已开 +- 但首页跳转和历史伪静态错误入口并存 + +主 Codex 建议: + +- 先压首页 `/|301` +- 再处理 `/index.php/...shtml` 类旧路径噪音 + +#### `www.ap-hulan.com` + +核心统计: + +- `home|200`: `12` +- `home|301`: `6` +- `other|301`: `4` + +典型异常: + +- `/|301` +- `/admin.php|301` + +结论: + +- 首页已可抓 +- 后台路径仍在分散预算 + +主 Codex 建议: + +- 先压首页 `301` +- 再压 `/admin.php` 这类旧后台入口 + +### C 组:首页已起量,但 host 和内容路径仍在吃跳转预算 + +#### `www.ningxiaowei.com` + +核心统计: + +- `home|200`: `66` +- `home|301`: `5` +- `other|200`: `20` +- `other|301`: `18` + +典型异常: + +- `/|301` +- `/video-info/...|301` +- `/video-play/...|301` + +#### `ningxiaowei.com` + +核心统计: + +- `home|200`: `13` +- `home|301`: `6` +- `other|200`: `10` +- `other|301`: `10` + +结论: + +- 首页已经起来 +- 裸域和 `www` 都在消耗预算 +- 内容层历史路径也还在持续跳转 + +主 Codex 建议: + +- 优先收 host 规范 +- 再压首页 `/|301` +- 再看 `video-info / video-play` 的兼容是否能进一步减损 + +### D 组:首页稳定样本,适合观察规范收口后是否自然扩深 + +#### `www.haotianhaiyuan.com` / `haotianhaiyuan.com` + +核心统计: + +- `www.haotianhaiyuan.com`: `home|200 = 44`,`home|301 = 9` +- `haotianhaiyuan.com`: `home|200 = 29`,`home|301 = 2`,`other|404 = 2` + +典型异常: + +- `/|301` +- `/showchengshi.asp?...|404` + +#### `hymdrz.com` / `www.hymdrz.com` + +核心统计: + +- `hymdrz.com`: `home|200 = 37`,`home|301 = 2` +- `www.hymdrz.com`: `home|200 = 12`,`home|301 = 6` + +结论: + +- 首页抓取已经很稳 +- 当前主要损耗仍是首页规范化和少量 host 分裂 +- 不是高噪音站,也还不是深抓放量站 + +主 Codex 建议: + +- 把它们作为“首页规范收口样本” +- 观察首页直达后是否自然向分类页和深页扩散 + +#### 首页稳定观察池 + +代表站点: + +- `www.hygfbw.com` +- `www.shxmbz.com` +- `www.tvwallmountreview.com` +- `yaleyishu.com` +- `yqshu8.com` +- `yahuawang88.com` +- `www.syzhzs.com` +- `syzhzs.com` + +共同模式: + +- `home|200` 已有 +- `home|301` 仍在 +- 高频异常多为 `/|301` + +补充信号: + +- `syzhzs.com` 已出现 `category|200 = 2` + +结论: + +- 这批站适合作为“首页已稳、等待分类和深页自然扩散”的观察池 + +## 给主 Codex 的动作优先级 + +### 1. 首页直达化 + +当前最统一、最广泛的问题仍是: + +- `/|301` + +主线优化应优先检查: + +- `http -> https` +- `www -> 非 www` 或反向规范 +- 首页最终规范地址是否在配置、模板、链接输出中一致 + +### 2. 深页减损 + +对 `yagyjt.com` 这类已验证深抓的站点,优先目标不是“发明新入口”,而是: + +- 降低 `detail|301` +- 降低 `play|301` + +### 3. 错误入口降噪 + +对 `qf123.net`、`sctyjz.com` 这类站点,当前更应该先处理: + +- 旧后台 +- 旧上传组件 +- 旧伪静态路径 + +### 4. host 规范收敛 + +当前多个站点都存在: + +- 裸域和 `www` 同时被抓 +- 两边都出现 `home|200` 和 `home|301` + +主线优化要继续盯: + +- canonical +- sitemap +- 站内链接输出 +- 首页最终规范 host + +### 5. 分类层继续观察 + +当前 `category|200` 仍然很弱,因此分类层不是这一轮最主要的问题,但需要继续监测。 + +## 建议的主线推进顺序 + +如果主 Codex 要从日志观察进入实现验证,更合理的顺序是: + +1. 先压首页层 `301` +2. 再压深页层 `301` +3. 再清高频错误入口 `404` +4. 再观察 `category -> detail -> play` 是否自然扩散 + +不建议的顺序是: + +- 还没把入口损耗压下去,就先大改深抓结构 + +## 本轮本地分析材料 + +本轮观察细节已沉淀在以下本地分析文档: + +- `code/storage/_analysis/sources/baiduspider.md` +- `code/storage/_analysis/sources/baiduspider-priority-2026-04-16.md` +- `code/storage/_analysis/sources/baiduspider-action-checklist-2026-04-16.md` +- `code/storage/_analysis/domains/yagyjt.com.md` +- `code/storage/_analysis/domains/qf123.net.md` +- `code/storage/_analysis/domains/ningxiaowei-hosts.md` +- `code/storage/_analysis/domains/sctyjz.com.md` +- `code/storage/_analysis/domains/ap-hulan.com.md` +- `code/storage/_analysis/domains/haotianhaiyuan-hymdrz-hosts.md` +- `code/storage/_analysis/domains/home-stable-cluster.md` + +## 交接结论 + +本轮可以正式交给主 Codex 的核心结论只有一句: + +> 现在最值得做的不是继续证明蜘蛛有没有来,而是先系统性降低首页、深页和历史错误入口造成的 `301/404` 抓取预算损耗。 diff --git a/docs/old-tmp-seo/03-老模板蜘蛛日志与代码映射交接文档-2026-04-16.md b/docs/old-tmp-seo/03-老模板蜘蛛日志与代码映射交接文档-2026-04-16.md new file mode 100644 index 0000000..49d34da --- /dev/null +++ b/docs/old-tmp-seo/03-老模板蜘蛛日志与代码映射交接文档-2026-04-16.md @@ -0,0 +1,326 @@ +# 1272-SEONexus 老模板蜘蛛日志与代码映射交接文档 - 2026-04-16 + +## 目的 + +这份文档是在 `1271` 的基础上继续往前走一步: + +- 不再只停留在日志现象 +- 而是把当前蜘蛛日志现象,映射到项目里最可能对应的代码位置 + +这样主 Codex 接手时,可以直接从关键入口开始排查,而不是重新全仓翻一遍。 + +## 和前置文档的关系 + +- `1269`:定义第一阶段目标 +- `1270`:定义协作边界 +- `1271`:沉淀蜘蛛日志观察结论 +- `1272`:把观察结论映射到代码入口 + +## 当前最关键的代码位置 + +### 1. 路由层 + +主要文件: + +- [router.php](/www/wwwroot/VideoSource2/code/app/home/config/router.php) + +关键点: + +- `robots`、`sitemap`、`rss`、`sitemap_index`、`sitemap-main`、`sitemap-videos-*` 都在这里注册 +- `videoGpt1` 分支里额外注册了大量历史详情页/播放页兼容路由 +- 这些兼容路由正好和日志里高频出现的旧路径高度一致 + +直接对应的日志现象: + +- `/voddetail/...|301` +- `/vodplay/...|301` +- `/video-info/...|301` +- `/video-play/...|301` +- `/video-show/...|301` +- `/shipin/...|301` + +结论: + +> 这批深页历史入口并不是“无路由直接 404”,而是已经被路由层接住了。日志里大量 `301 -> 200` 的前提条件之一,就是这里的兼容路由在工作。 + +### 2. URL 规范输出层 + +主要文件: + +- [UrlBuilder.php](/www/wwwroot/VideoSource2/code/app/common/helper/UrlBuilder.php) +- [VideoService.php](/www/wwwroot/VideoSource2/code/app/services/VideoService.php) + +关键点: + +- `UrlBuilder::detail()` 默认走 `voddetail/{strPinyin}-{intVId}` +- `UrlBuilder::play()` 默认走 `vodplay/{strPinyin}-{intVId}-{strPlayType}-{intPlayIndex}` +- `VideoService::getVideoInfoUrl()` / `getVideoPlayUrl()` 在 `videoGpt1` 下优先走 `UrlBuilder` + +直接对应的日志现象: + +- 当前仍有大量 `voddetail` / `vodplay` 命中 +- 同时又能看到 `video-info` / `video-play` / `video-show` 命中 + +结论: + +> 当前项目里“规范输出路径”和“兼容接入路径”是两层结构。`UrlBuilder` 更像主输出,`router.php` 里的兼容列表负责兜住历史入口。 + +## 和首页 `/|301` 最相关的代码点 + +### 1. DomainModel 的 host 归一口径 + +主要文件: + +- [DomainModel.php](/www/wwwroot/VideoSource2/code/app/model/DomainModel.php) + +关键点: + +- 存在 `canonical_mode` +- 存在 `play_index_mode` +- 多处会对 host 做 `preg_replace('/^www\\./', '', ...)` + +这说明: + +- 系统里已经有“规范 host / canonical 策略”的概念 +- 但从日志看,裸域和 `www` 仍然同时被抓,说明这套策略没有完全在前台最终输出和真实访问上闭环 + +### 2. SiteContext 的域名识别口径 + +主要文件: + +- [SiteContext.php](/www/wwwroot/VideoSource2/code/app/services/SiteContext.php) + +关键点: + +- `getTemplate()` 用的是 `Request->rootDomain()` +- 然后用 root domain 去取 `DomainModel` + +对应判断: + +- 这有利于让 `www.xxx.com` 和 `xxx.com` 落到同一个站点配置 +- 但这本身不会自动消除首页 `301` +- 它更多解决的是“能不能识别到站点”,不是“是否直达最终规范 host” + +结论: + +> 日志里大量 `/|301` 更可能是前台实际访问入口、host 规范和模板/链接输出之间还没有完全统一,而不只是域名识别不到。 + +## 和深页 `301` 最相关的代码点 + +### 1. 兼容路由列表 + +主要文件: + +- [router.php](/www/wwwroot/VideoSource2/code/app/home/config/router.php:166) + +这里显式注册了大量历史深页入口,包括: + +- `voddetail` +- `vodinfo` +- `vod` +- `video-info` +- `video-detail` +- `video` +- `shipin` +- `vodplay` +- `video-play` +- `video-show` +- `shipin-play` +- `shipin-bofang` + +这和日志完全对上了。 + +结论: + +> 现在看到的大量深页 `301`,很可能正是“旧入口先接住,再跳到当前 family 主输出 URL”的结果。 + +### 2. VideoService 的主输出链接 + +主要文件: + +- [VideoService.php](/www/wwwroot/VideoSource2/code/app/services/VideoService.php:80) + +关键点: + +- 详情页和播放页主输出都优先走 `UrlBuilder` +- 如果站点 family 不是历史路径样式,那么历史外链进来后出现一次 `301` 是符合当前结构的 + +这也解释了为什么: + +- `yagyjt.com` 已经能深抓 +- 但 `detail|301` / `play|301` 仍然很高 + +结论: + +> 代码结构上,深页 301 并不奇怪;真正值得主 Codex 继续排的是:哪些 `301` 是必要兼容,哪些 `301` 已经可以进一步压缩。 + +## 和 canonical / robots 最相关的代码点 + +### 1. SiteStyle 的 SEO meta 构建 + +主要文件: + +- [SiteStyle.php](/www/wwwroot/VideoSource2/code/app/common/helper/SiteStyle.php:1800) + +关键点: + +- `detectPageType()` 目前只明确识别: + - `home` + - `voddetail/*` -> `detail` + - `vodplay/*` -> `play` + - `search` + - 部分 `rank` + - 部分 `category` +- `buildSeoMeta()` 里: + - detail 默认 `index,follow` + - play 默认 `noindex,follow` + - play canonical 会回指 detail + +### 2. 当前存在的明显风险 + +`guessDetailUrlFromVideo()` 目前是硬编码回: + +- `/voddetail/{slug}-{id}` +- 或 `/voddetail/{id}` + +这意味着: + +- 如果站点当前主 family 并不以 `voddetail` 作为规范详情路径 +- 或者主输出已经切到别的 detail pattern +- 那么模板 canonical 就可能和当前主输出路径不完全一致 + +这是当前最值得主 Codex 重点核对的一点。 + +### 3. DomainModel 配置和模板输出暂未明显打通 + +虽然 `DomainModel` 已有: + +- `canonical_mode` +- `play_index_mode` + +但从当前代码检索结果看: + +- 这些配置主要存在于模型默认值、标准化、bootstrap 汇总 +- 前台模板 meta 生成仍主要靠 `SiteStyle::buildSeoMeta()` +- 而 `SiteStyle::buildSeoMeta()` 没有明显读取 `DomainModel` 的这两个配置 + +结论: + +> 现在“配置层有 canonical/play_index 策略”和“前台模板真实输出什么 canonical/robots”之间,存在未完全打通的风险。 + +## 和 sitemap 最相关的代码点 + +### 1. 前台 sitemap 读取 + +主要文件: + +- [SiteContext.php](/www/wwwroot/VideoSource2/code/app/services/SiteContext.php:505) + +关键点: + +- `getSiteMapByCode()` 只是按约定文件名读取 `storage/SiteMap/{domain}/...` +- 如果文件不存在,直接返回 `404` + +这说明: + +- `sitemap*.xml` 的稳定性,既依赖路由,也依赖离线文件是否实际生成成功 + +### 2. sitemap 生成逻辑 + +主要文件: + +- [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php) +- [VideoSiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/VideoSiteMapLogic.php) + +关键点: + +- 两处生成逻辑里多次直接写: + - `https://www.{$DomainModel->d_domain}/...` +- `VideoSiteMapLogic` 生成视频详情页时,会优先读当前 `url_family['detail']['pattern']` +- 但最终 host 仍然是硬拼 `https://www.` + domain + +这和日志里的 host 分裂现象是高度相关的。 + +结论: + +> 如果站点真实规范 host 不是 `www`,或者前台访问并没有完全锁在 `www`,那么 sitemap 长期输出 `https://www.xxx.com/...` 本身就可能持续制造首页和深页的规范化跳转。 + +## 和“非 404 而是随机回落”的代码点 + +主要文件: + +- [VideoService.php](/www/wwwroot/VideoSource2/code/app/services/VideoService.php:760) + +关键点: + +- `getVideoByVId()` 在直接按 `v_id` 查不到时,会进入 `resolveFallbackVideoByRequest()` +- `resolveFallbackVideoByRequest()` 会: + - 先看绑定表 + - 再随机采样可播放视频 + - 再做兜底有序回落 +- 命中后会把“请求的旧 id”绑定到“随机或兜底找到的新视频 id” + +这说明: + +- 某些旧深链并不一定直接 404 +- 也可能被系统兜底绑定到别的视频,再输出一个可访问页面 + +对应日志判断: + +- 这能解释为什么一部分历史深链现在表现成 `301 -> 200` +- 但也意味着 canonical 和真实内容语义一致性要特别小心 + +## 给主 Codex 的代码排查优先级 + +### 1. 先查 host 规范是否被多处硬编码成 `www` + +优先看: + +- `SiteMapLogic.php` +- `VideoSiteMapLogic.php` +- 任何模板里直接拼域名的位置 + +原因: + +- 这最直接对应日志里的 `/|301` +- 也最直接对应裸域 / `www` 分裂 + +### 2. 再查 canonical 是否仍硬编码成 `/voddetail/...` + +优先看: + +- `SiteStyle::buildSeoMeta()` +- `SiteStyle::guessDetailUrlFromVideo()` + +原因: + +- 当前 detail/play 主输出已经有 family 概念 +- canonical 仍硬编码 `voddetail` 风险较大 + +### 3. 再查历史兼容路由是否仍有可压缩空间 + +优先看: + +- `app/home/config/router.php` 的 legacy compat 段 + +原因: + +- 这直接对应日志里大量 `video-info` / `video-play` / `video-show` / `shipin` 的命中 +- 主线要判断哪些入口必须保留,哪些入口可以进一步合并或缩短跳转链 + +### 4. 最后查 fallback 视频绑定是否会放大“错链也 200” + +优先看: + +- `VideoService::resolveFallbackVideoByRequest()` + +原因: + +- 这条链对“减少 404”有帮助 +- 但如果过度回落,也可能把错误深链转成语义不一致的 `200` + +## 给主 Codex 的一句话交接 + +如果主 Codex 要开始从实现层排这轮蜘蛛问题,最值得先看的不是模板样式,而是: + +> `router.php` 的历史兼容入口、`SiteStyle` 的 canonical 输出、`VideoSiteMapLogic/SiteMapLogic` 的 `www` host 拼接、以及 `VideoService` 的 fallback 回落链。 diff --git a/docs/old-tmp-seo/04-老模板蜘蛛日志观察更新-2026-04-17.md b/docs/old-tmp-seo/04-老模板蜘蛛日志观察更新-2026-04-17.md new file mode 100644 index 0000000..578f7e7 --- /dev/null +++ b/docs/old-tmp-seo/04-老模板蜘蛛日志观察更新-2026-04-17.md @@ -0,0 +1,305 @@ +# 1273-SEONexus 老模板蜘蛛日志观察更新 - 2026-04-17 + +## 目的 + +这份文档用于承接 `1271` 和 `1272` 之后,基于 `2026-04-17` 最新代码与最新蜘蛛日志,再做一轮更新观察。 + +本轮重点不是重新从零分析,而是回答三个问题: + +1. 相比 `2026-04-16`,整体抓取结构有没有变化 +2. 哪些问题确实改善了 +3. 哪些问题只是从 `301/404` 换成了新的损耗形态 + +## 数据范围 + +- 项目:`SEONexus` +- 数据来源:`code/storage/domain-spider-crawl/runs/*/*/crawl-logs.summary.json` +- 观察对象:`baiduspider` +- 时间窗口:最近 24 小时 +- 观察日期:`2026-04-17` + +## 与上一轮的核心对比 + +### `2026-04-16` + +- `home`: `509` +- `other`: `266` +- `detail`: `119` +- `play`: `51` +- `category`: `2` + +- `200`: `532` +- `301`: `231` +- `404`: `183` +- `444`: `1` + +### `2026-04-17` + +- `home`: `433` +- `other`: `106` +- `detail`: `95` +- `play`: `43` +- `category`: `0` + +- `200`: `478` +- `301`: `158` +- `404`: `9` +- `444`: `32` + +## 第一判断 + +这一轮最明显的变化不是“抓取总量暴涨”,而是“损耗结构明显变化”。 + +一句话总结: + +> `2026-04-17` 相比 `2026-04-16`,百度蜘蛛的 `404` 大幅下降,`301` 也明显下降,说明旧错误入口和部分跳转损耗确实被压掉了;但同时出现了一批新的 `444` 拦截信号,说明问题并没有完全消失,而是部分从“错误入口消耗”转成了“拦截型消耗”。 + +## 本轮最值得确认的改善 + +### 1. `404` 从 `183` 降到 `9` + +这是本轮最明确的正向信号。 + +说明: + +- 之前那批高密度错误入口,不少已经不再继续大量落成 `404` +- 至少从日志表现上,老的纯错误入口吞预算问题大幅缓解 + +### 2. `301` 从 `231` 降到 `158` + +说明: + +- 首页和深页的跳转损耗总体也在下降 +- 尤其是首页 `/|301` 从上一轮的 `98` 次,降到了这轮的 `59` 次 + +这虽然还不算完全收干净,但趋势是对的。 + +### 3. `qf123.net` 基本脱离“纯 404 黑洞” + +上一轮: + +- `qf123.net`: `other|404 = 169` + +这一轮: + +- `qf123.net` 已经没有继续出现高位 `other|404` +- `www.qf123.net` 只看到: + - `home|200 = 2` + - `home|301 = 1` + +这说明: + +- 之前那批 `webuploader / upload / fileupload` 噪音,至少在本轮窗口中已经不再是主问题 + +### 4. `sctyjz.com` 的首页结构比上一轮更分化 + +上一轮: + +- `sctyjz.com`: `home|200 = 12`,`home|301 = 6`,`other|404 = 8` + +这一轮: + +- `sctyjz.com`: `home|200 = 3`,`other|404 = 8` +- `www.sctyjz.com`: `home|200 = 7`,`home|301 = 1`,`other|404 = 1` + +说明: + +- 裸域和 `www` 的抓取重心更明显地往 `www` 偏了 +- 首页 `301` 的问题在 `www.sctyjz.com` 这一侧已明显下降 +- 但旧伪静态 `404` 入口仍未根治 + +## 本轮没有解决、但结构更清楚的问题 + +### 1. `yagyjt.com` 仍然是深抓正样本,但深页 `301` 还在高位 + +本轮统计: + +- `detail|200 = 48` +- `detail|301 = 47` +- `play|200 = 19` +- `play|301 = 20` +- `home|200 = 14` +- `home|301 = 4` + +对比上一轮: + +- `detail|200 = 59` +- `detail|301 = 60` +- `play|200 = 25` +- `play|301 = 22` +- `home|200 = 18` +- `home|301 = 6` + +判断: + +- 深抓还在,说明正样本地位没丢 +- `home|301` 有下降,首页更干净了 +- `detail/play` 的 `301` 也略有下降 +- 但深页 `301` 和 `200` 仍然接近 1:1,主矛盾没有本质变化 + +结论: + +> `yagyjt.com` 依然不是“有没有深抓”的问题,而是“深抓已经建立,但深页规范化损耗仍然偏高”。 + +### 2. `www.ningxiaowei.com` 仍然是内容层跳转样本 + +本轮统计: + +- `home|200 = 25` +- `home|301 = 4` +- `other|200 = 24` +- `other|301 = 24` + +上一轮: + +- `home|200 = 66` +- `home|301 = 5` +- `other|200 = 20` +- `other|301 = 18` + +判断: + +- 首页 `301` 有所下降 +- 但 `other|301` 反而更显眼了 +- 异常仍然主要落在: + - `/video-info/...|301` + - `/video-play/...|301` + +结论: + +> `www.ningxiaowei.com` 当前更像“首页稍微更干净了,但内容层历史路径兼容仍在持续吃预算”。 + +### 3. `junhaolab.com` 仍然只是弱深抓样本 + +本轮: + +- `play|200 = 2` +- `play|301 = 2` + +说明: + +- 播放页信号还在 +- 但量级没有明显放大 + +## 本轮新增需要重点留意的问题 + +### 1. `444` 从 `1` 升到 `32` + +这轮最值得警惕的新变化就是: + +- `444` 明显增加 + +目前主要出现在: + +- `rqgcmc.com` +- `yagyjt.com` +- `www.yagyjt.com` + +### 2. `rqgcmc.com` 出现新的拦截型异常 + +本轮统计: + +- `home|200 = 8` +- `home|301 = 4` +- `other|444 = 27` + +典型异常: + +- `/rqgcmc.com.rar|444` +- `/rqgcmc.com.zip|444` +- `/rqgcmc.rar|444` +- `/rqgcmc.zip|444` +- `/rqgcmc.txt|444` +- `/www.zip|444` +- `/www.rar|444` +- `/wwwroot.rar|444` + +判断: + +- 这不是内容层问题 +- 而是明显的探测、打包、压缩包、站点根目录类异常请求 +- 目前这些请求被 `444` 拦掉了 + +结论: + +> 这类 `444` 比 `404` 更像“防探测拦截生效”,从安全上未必是坏事;但从蜘蛛日志观察角度,它仍然属于抓取预算噪音,需要和真正的 SEO 主路径分开看。 + +### 3. `/zb_system/login.php` 从 `301/404` 变成了 `444` + +上一轮高频里: + +- `/zb_system/login.php|301` +- `/zb_system/login.php|404` + +这一轮高频里: + +- `/zb_system/login.php|444 = 4` + +判断: + +- 这说明后台历史入口仍在被命中 +- 只是处理方式从跳转/未找到,变成了直接拦截 + +## 当前阶段的新结论 + +本轮比上一轮更适合用“三类变化”来理解: + +### 1. 确认改善的 + +- `404` 大幅下降 +- 首页 `/|301` 明显下降 +- `qf123.net` 的错误入口黑洞基本消失 + +### 2. 改善有限但方向正确的 + +- `yagyjt.com` 首页与深页 `301` 略降 +- `sctyjz.com` 的 `www` 侧首页更干净 + +### 3. 新暴露出来的 + +- `444` 上升 +- 一批探测型、压缩包型、后台入口型异常被直接拦截 + +## 给主 Codex 的更新建议 + +### 1. 不要再把当前主矛盾定义成“404 为主” + +`2026-04-17` 这轮后,旧式 `404` 入口问题已经明显下降。 + +现在更应该拆成: + +- 深页 `301` 是否还能继续压 +- 首页 `/|301` 是否还能继续压 +- `444` 是否属于可接受的防探测噪音,还是误伤了正常抓取入口 + +### 2. `yagyjt.com` 仍然是深抓优化第一观察站 + +因为: + +- 深抓仍在 +- 首页更干净了 +- 现在更容易观察“深页跳转能否进一步收敛” + +### 3. `www.ningxiaowei.com` 仍然是内容层历史路径兼容观察站 + +因为: + +- `video-info / video-play` 仍然频繁出现 +- 更适合继续验证 canonical / family / 兼容入口是否完全统一 + +### 4. `rqgcmc.com` 不应和普通 SEO 站点混在一起判断 + +它当前的主要问题已经不是内容入口,而是拦截型探测噪音。 + +### 5. `category` 仍然没有抬头 + +这一轮没有观察到新的 `category` 扩散信号。 + +这说明: + +- 首页入口虽然在改善 +- 但首页 -> 分类 -> 深页 的中继放量还没有明显出现 + +## 一句话交接 + +> `2026-04-17` 这轮最大的变化,是旧式 `404` 错误入口明显下降、首页与部分深页 `301` 也在下降,但问题没有完全消失,而是部分转成了 `444` 拦截型噪音;下一步更值得主 Codex 盯的是深页 `301` 压缩和 `444` 是否只是安全噪音而非误伤 SEO 主路径。 diff --git a/docs/old-tmp-seo/05-老模板蜘蛛日志变化与代码判断更新-2026-04-17.md b/docs/old-tmp-seo/05-老模板蜘蛛日志变化与代码判断更新-2026-04-17.md new file mode 100644 index 0000000..398d935 --- /dev/null +++ b/docs/old-tmp-seo/05-老模板蜘蛛日志变化与代码判断更新-2026-04-17.md @@ -0,0 +1,252 @@ +# 1274-SEONexus 老模板蜘蛛日志变化与代码判断更新 - 2026-04-17 + +## 目的 + +这份文档是在 `1272` 与 `1273` 的基础上,继续把最新日志变化往代码判断上推进一步。 + +这一轮重点回答两个问题: + +1. 为什么 `2026-04-17` 的 `404` 会明显下降 +2. 为什么同一时间又出现更多 `444` + +## 和前置文档的关系 + +- `1271`:日志观察首轮结论 +- `1272`:日志现象与代码位置映射 +- `1273`:`2026-04-17` 新日志更新 +- `1274`:针对 `404 -> 444` 结构变化的代码判断 + +## 本轮关键结论 + +一句话总结: + +> `2026-04-17` 这一轮里,`404` 下降更像是“历史深链和错误 ID 被更多地兜住了”,而 `444` 上升目前没有在应用层看到直接返回逻辑,更像是前置层或安全规则拦截带来的新噪音形态。 + +## 一、为什么 `404` 会明显下降 + +### 1. 旧深页入口早就不是直接裸 404 + +核心文件: + +- [router.php](/www/wwwroot/VideoSource2/code/app/home/config/router.php) + +已经明确存在大量历史兼容入口: + +- `voddetail` +- `vodinfo` +- `vod` +- `video-info` +- `video-detail` +- `video` +- `shipin` +- `vodplay` +- `video-play` +- `video-show` +- `shipin-play` +- `shipin-bofang` + +这意味着: + +- 日志里的旧详情页、旧播放页路径 +- 很多并不是“根本没路由,直接 404” +- 而是已经被路由先接住了 + +所以 `404` 的下降,不能只理解成“错误入口少了”,也要理解成“已有更多旧入口被应用层成功承接”。 + +### 2. VideoService 存在明显的 fallback 回退链 + +核心文件: + +- [VideoService.php](/www/wwwroot/VideoSource2/code/app/services/VideoService.php:905) + +关键逻辑: + +- `getVideoByVId()` 查不到原始 `v_id` 时,不会立刻结束 +- 而是进入 `resolveFallbackVideoByRequest()` + +`resolveFallbackVideoByRequest()` 的处理顺序是: + +1. 先读 host 维度的 fallback 绑定表 +2. 如果已有绑定,则直接回用之前找到的视频 +3. 没绑定时,从库里随机采样一批视频 +4. 找到可用视频后,把“请求旧 id -> 真实新 id”的绑定写入本地文件 +5. 如果随机采样还失败,再走按排序兜底 + +对应代码点: + +- `readFallbackBindings()` +- `writeFallbackBindings()` +- `fallbackBindingsPath()` +- `_fallback_reason = bound_random_video / random_video / ordered_fallback_video` + +### 3. 这条链足以解释一部分“404 明显下降” + +这意味着: + +- 某些过去会直接 404 的旧视频 ID +- 现在可能被 fallback 机制回落成一个可访问页面 + +所以: + +- `404` 下降未必全部来自“外部噪音消失” +- 也可能来自“应用层兜底更积极了” + +这对 SEO 的影响有两面性: + +- 正面:减少了硬 404,抓取预算不再直接浪费 +- 风险:如果旧 URL 被回落到语义不一致的视频页,就会带来 canonical 和内容一致性风险 + +## 二、为什么 `444` 会明显上升 + +### 1. 当前应用层没有看到明确的 `444` 返回逻辑 + +本轮代码检索没有在应用层发现: + +- `http_response_code(444)` +- `return 444` +- `HttpException(444)` + +这意味着: + +- 当前日志里的 `444` +- 很大概率不是 ThinkPHP 应用层主动抛出来的 + +### 2. 应用层的主动拦截主要还是 `404` + +核心文件: + +- [SiteContext.php](/www/wwwroot/VideoSource2/code/app/services/SiteContext.php:560) + +在 `limitRequestRate()` 和 `checkCnzzCookie()` 里,可以看到多类拦截: + +- 黑名单 IP +- 普通访客短时限速 +- 普通访客高频请求拉黑 +- 伪 Googlebot UA +- `Amazonbot / zgrab / crawler` 等 UA +- 无 CNZZ cookie 的普通访客 + +但这些分支最终抛出的都是: + +- `HttpException(404, ...)` + +而且 `isSpider()` 里对以下蜘蛛是直接白名单放行的: + +- `Baiduspider` +- `Googlebot` +- `Sogou` +- `Bytespider` +- `Bingbot` +- 等主流搜索蜘蛛 + +这说明: + +- 对真实 `Baiduspider` 来说,应用层限速本身不太像当前 `444` 的直接来源 + +### 3. 当前 `444` 更像前置层或安全规则拦截 + +从日志表现看,`444` 主要集中在: + +- `/zb_system/login.php` +- `*.rar` +- `*.zip` +- `*.txt` +- `/www.rar` +- `/wwwroot.rar` + +这类 URL 具有明显特点: + +- 都不像正常内容页 +- 更像安全探测、压缩包探测、站点根目录打包探测 + +结合本轮代码检索结果,更合理的判断是: + +- 这类请求大概率在更前层就被拦掉了 +- 例如 nginx / waf / 黑名单 / 探测规则 + +所以: + +- `444` 的上升不应直接按“SEO 主路径坏了”解读 +- 更像“非内容型噪音被更前层提前拒绝” + +## 三、对当前日志变化的更准确解释 + +### 1. `404` 下降,不等于所有问题都解决了 + +更准确的说法应该是: + +- 旧错误入口有一部分确实少了 +- 另一部分则被路由兼容和 fallback 机制兜住了 + +### 2. `444` 上升,不等于主内容路径一定被误伤 + +更准确的说法应该是: + +- 当前看到的 `444` +- 主要还集中在探测型、后台型、压缩包型 URL + +如果后续 `444` 开始扩散到: + +- `robots.txt` +- `sitemap*.xml` +- `/` +- `detail` +- `play` + +那才是更值得警惕的 SEO 主路径误伤。 + +### 3. 目前最值得继续盯的仍然是深页 `301` + +原因很简单: + +- `404` 下降已是阶段性利好 +- `444` 当前更像安全噪音 +- 但 `yagyjt.com` 这类站点的 `detail|301 / play|301` 仍接近 `200` + +这说明: + +- 主内容抓取链路的最大损耗,依然还在深页规范化 + +## 四、给主 Codex 的代码排查建议更新 + +### 1. 优先继续查深页规范化,不要被 `444` 全部带偏 + +当前 `444` 虽然增加,但从现象和代码看: + +- 还更像边缘噪音 +- 暂时不像主内容入口集体误伤 + +所以主线仍应优先: + +- 查 detail/play 主输出和兼容跳转链 +- 查 canonical 是否和当前 family 一致 + +### 2. 对 fallback 机制要做“收益”和“风险”双向评估 + +`VideoService::resolveFallbackVideoByRequest()` 这条链现在值得主 Codex 明确判断: + +- 它是不是正在帮我们减少 404 +- 它是否会把错误 deep link 回落到语义不相干内容 +- 这是否会影响 canonical、一致性、搜索引擎理解 + +### 3. `444` 这条线更适合联动前置层配置看 + +因为当前仓库内没有明显应用层 `444` 返回实现,所以如果主 Codex 要深挖 `444`,下一步更应该查: + +- nginx 配置 +- 前置防护规则 +- UA / 路径黑名单策略 + +而不是只在 PHP 应用层里继续找。 + +## 五、补充说明 + +本轮尝试查看仓库最近提交时,`git` 返回了仓库 ownership 安全限制: + +- `fatal: detected dubious ownership in repository at '/www/wwwroot/VideoSource2'` + +因此这次没有继续依赖 `git log` 判断“哪次提交导致了日志变化”,这里只基于当前代码结构和最新日志做判断。 + +## 一句话交接 + +> 当前 `404` 的显著下降,很可能既有入口噪音减少的因素,也有 `VideoService` fallback 兜底在起作用;而 `444` 的上升目前更像前置层拦截探测噪音,不像应用层主动误伤主内容入口,所以主 Codex 仍应优先盯深页 `301` 和 canonical/family 一致性。 diff --git a/docs/old-tmp-seo/06-主Codex可执行检查清单-2026-04-17.md b/docs/old-tmp-seo/06-主Codex可执行检查清单-2026-04-17.md new file mode 100644 index 0000000..d9140da --- /dev/null +++ b/docs/old-tmp-seo/06-主Codex可执行检查清单-2026-04-17.md @@ -0,0 +1,228 @@ +# 1275-SEONexus 主 Codex 可执行检查清单 - 2026-04-17 + +## 目的 + +这份文档用于把 `1271` 到 `1274` 的分析,压缩成主 Codex 可以直接开干的检查清单。 + +目标不是重复分析结论,而是明确: + +1. 先看哪几个文件 +2. 每个文件要判断什么 +3. 哪些问题优先级最高 + +## 当前建议的排查顺序 + +### 1. 先查深页兼容入口是否仍然过宽 + +优先级:`P0` + +文件: + +- [router.php](/www/wwwroot/VideoSource2/code/app/home/config/router.php:209) + +重点看: + +- `legacyCompatRoutes` 里注册了多少历史 `detail/play` 入口 +- 哪些入口现在仍然在日志里高频出现 +- 哪些入口只是历史遗留,但已经几乎没有真实命中 + +当前直接对应的高频路径: + +- `/voddetail/...` +- `/vodplay/...` +- `/video-info/...` +- `/video-play/...` +- `/video-show/...` +- `/vodbf/...` + +要回答的问题: + +- 这些兼容入口是否都还必须保留 +- 是否存在“先接住再跳一次”的非必要链路 +- 是否可以把部分兼容入口进一步统一到更少的规范路径 + +判断标准: + +- 如果某类旧入口仍然是百度高频命中来源,就不能贸然删 +- 但如果它只是为了兼容而兼容,且跳转链过长,就应优先考虑压缩 + +## 2. 再查 canonical 是否仍然和当前 family 脱节 + +优先级:`P0` + +文件: + +- [SiteStyle.php](/www/wwwroot/VideoSource2/code/app/common/helper/SiteStyle.php:1803) +- [SiteStyle.php](/www/wwwroot/VideoSource2/code/app/common/helper/SiteStyle.php:1831) +- [SiteStyle.php](/www/wwwroot/VideoSource2/code/app/common/helper/SiteStyle.php:1868) + +重点看: + +- `detectPageType()` 目前只识别 `voddetail/*` 和 `vodplay/*` +- `guessDetailUrlFromVideo()` 仍硬编码回 `/voddetail/...` +- `buildSeoMeta()` 的 canonical 生成没有明显读取当前站点 family + +要回答的问题: + +- 当前模板 canonical 是否仍然默认指向 `voddetail` +- 如果某站主输出不是 `voddetail`,canonical 会不会和真实输出路径冲突 +- `play` 页 canonical 回 `detail` 时,是否一定回到了正确 family 下的 detail URL + +判断标准: + +- 如果 canonical 指向的不是当前规范输出 URL,这就是高优先级修复点 +- 这条线和 `yagyjt.com`、`www.ningxiaowei.com` 的深页 `301` 很可能直接相关 + +## 3. 再查 sitemap 是否持续硬编码 `https://www.` + +优先级:`P0` + +文件: + +- [VideoSiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/VideoSiteMapLogic.php:196) +- [VideoSiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/VideoSiteMapLogic.php:203) +- [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php:157) +- [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php:177) +- [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php:193) + +重点看: + +- 视频 sitemap 虽然已经开始读 `url_family['detail']['pattern']` +- 但最终 host 仍然是 `https://www.` + domain +- 小说 sitemap / 分类 / 章节相关输出同样大量直接拼 `https://www.` + +要回答的问题: + +- 当前真实规范 host 到底是不是 `www` +- 如果不是,sitemap 是否正在持续制造 `/|301` 和 host 规范化跳转 +- sitemap 与 canonical、站内链接是否在同一 host 口径下 + +判断标准: + +- 只要 sitemap 输出 host 和真实规范 host 不一致,这就是首页与深页 `301` 的高风险来源 + +## 4. 评估 fallback 机制是在“止血”还是在“制造语义偏差” + +优先级:`P1` + +文件: + +- [VideoService.php](/www/wwwroot/VideoSource2/code/app/services/VideoService.php:821) +- [VideoService.php](/www/wwwroot/VideoSource2/code/app/services/VideoService.php:905) +- [VideoService.php](/www/wwwroot/VideoSource2/code/app/services/VideoService.php:1021) + +重点看: + +- `getVideoByVId()` 查不到时会进入 `resolveFallbackVideoByRequest()` +- fallback 会写入 host 维度的本地绑定文件 +- 可能把旧 `v_id` 回落到随机或排序兜底视频 + +要回答的问题: + +- 这条链当前到底拯救了多少原本会 404 的深链 +- 回落后的页面内容是否和原始 URL 语义足够接近 +- 是否需要限制 fallback 的适用范围,例如只对某些入口生效 + +判断标准: + +- 如果 fallback 只是减少硬 404,它有价值 +- 但如果它让错误 deep link 长期稳定落到无关视频,这会引入新的 SEO 误导风险 + +## 5. `444` 不优先在 PHP 里深挖,先确认前置层 + +优先级:`P1` + +文件: + +- [SiteContext.php](/www/wwwroot/VideoSource2/code/app/services/SiteContext.php:560) + +当前已知判断: + +- 应用层主动拦截主要抛的是 `404` +- `isSpider()` 已对白名单蜘蛛放行 +- 当前仓库里没有明显应用层 `444` 返回逻辑 + +要回答的问题: + +- `444` 是否来自 nginx / waf / 路径探测拦截 +- 当前 `444` 是否已经波及: + - `/` + - `robots.txt` + - `sitemap*.xml` + - `detail` + - `play` + +判断标准: + +- 如果 `444` 只集中在 `.rar/.zip/.txt/zb_system` 这类路径,先视为安全噪音 +- 如果开始进入首页、sitemap、深页主路径,再提升为 `P0` + +## 当前最值得优先验证的 5 个判断 + +### 1. `yagyjt.com` 的深页 `301` 是否主要来自 canonical / family 不一致 + +因为: + +- 它已经是明确深抓正样本 +- 但 `detail|301` / `play|301` 仍接近 `200` + +### 2. `www.ningxiaowei.com` 的 `video-info / video-play` 是否只是兼容入口过多 + +因为: + +- 这批路径仍然高频出现 +- 很适合作为“内容层兼容是否还能继续收口”的观察站 + +### 3. sitemap 输出 host 是否和真实规范 host 一致 + +因为: + +- 这条线会同时影响首页 `/|301` +- 也会影响深页入口持续规范化跳转 + +### 4. fallback 绑定文件是否正在稳定扩大“错误 deep link -> 可访问页面”的覆盖 + +因为: + +- 这可能解释 `404` 的大幅下降 +- 同时也可能埋下语义偏差风险 + +### 5. `444` 是否已经误伤真实搜索蜘蛛主路径 + +因为: + +- 目前看更像前置层安全噪音 +- 但这个结论需要持续观察,不应直接定死 + +## 建议的执行节奏 + +### 第一轮 + +- 只读检查 `router.php` +- 只读检查 `SiteStyle.php` +- 只读检查 `VideoSiteMapLogic.php` / `SiteMapLogic.php` + +目标: + +- 先确认深页主输出、兼容入口、canonical、sitemap host 是否在同一规范口径 + +### 第二轮 + +- 再看 `VideoService` fallback + +目标: + +- 判断 `404` 的下降里有多少是“真实修复” +- 有多少是“应用层兜底” + +### 第三轮 + +- 再去联动前置层查 `444` + +目标: + +- 确认 `444` 是安全噪音,还是已经开始误伤 SEO 主路径 + +## 给主 Codex 的一句话 + +> 如果只能先看 3 个地方,就先看 `router.php` 的历史深页兼容、`SiteStyle.php` 的 canonical 构建、以及 `VideoSiteMapLogic/SiteMapLogic` 的 `https://www.` host 拼接;这三条线最有可能直接对应当前仍未收口的深页 `301` 和首页 `/|301`。 diff --git a/docs/old-tmp-seo/07-主Codex检查清单补充修正-2026-04-17.md b/docs/old-tmp-seo/07-主Codex检查清单补充修正-2026-04-17.md new file mode 100644 index 0000000..3bae2fe --- /dev/null +++ b/docs/old-tmp-seo/07-主Codex检查清单补充修正-2026-04-17.md @@ -0,0 +1,172 @@ +# 1276-SEONexus 主 Codex 检查清单补充修正 - 2026-04-17 + +## 目的 + +这份文档用于补充修正 `1272` 到 `1275` 之间一个很关键的判断差异: + +- `SiteStyle::buildSeoMeta()` 确实存在 canonical 兜底逻辑 +- 但对当前重点观察的 `videoGpt1` 视频模板来说,它未必是前台实际 canonical 的主输出来源 + +这会直接影响主 Codex 的排查顺序。 + +## 本轮补充结论 + +一句话总结: + +> 当前 `videoGpt1` 下,真正更值得优先核对的不是 `SiteStyle::buildSeoMeta()`,而是模板里实际写死的 canonical host 口径,以及 sitemap 里统一写成 `https://www.` 的 host 口径是否冲突。 + +## 一、为什么这是一个重要修正 + +### 1. `SiteStyle::buildSeoMeta()` 不是当前视频模板最直接的 canonical 输出源 + +虽然代码里有: + +- [SiteStyle.php](/www/wwwroot/VideoSource2/code/app/common/helper/SiteStyle.php:1831) + +而且里面存在: + +- `play` 页 canonical 推断 +- `guessDetailUrlFromVideo()` 硬编码 `/voddetail/...` + +但这次继续对模板后发现,`videoGpt1` 的视频模板实际是自己输出 canonical。 + +### 2. `videoGpt1` 详情页模板实际 canonical + +文件: + +- [getVideoInfo.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoInfo.html:39) + +当前实际写法: + +```html + +``` + +这说明: + +- 详情页 canonical 不是由 `SiteStyle::buildSeoMeta()` 直接输出 +- 它走的是模板标签 `{site:vurl ...}`,也就是更贴近当前路由/URL 生成体系 + +### 3. `videoGpt1` 播放页模板实际 canonical + +文件: + +- [getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:117) + +当前实际写法: + +```html + +``` + +并且: + +- `$strPlayCanonicalUrl` 来自 `VideoService::getVideoPlayUrl()` +- 不是回详情页 +- 而是当前播放页自身 URL + +这说明: + +- 当前 `videoGpt1` 播放页 canonical 逻辑,与 `SiteStyle::buildSeoMeta()` 里“play canonical -> detail”的兜底设想并不一致 + +## 二、这会带来什么新的主线判断 + +### 1. 当前更大的风险,不是 `voddetail` 硬编码本身 + +对 `videoGpt1` 视频页来说,更值得优先核对的是: + +- canonical host 到底是 `https://domain` + 还是 +- `https://www.domain` + +因为当前模板里写的是: + +- `https://{$DomainModel->d_domain}` + +而 sitemap 生成逻辑里大量写的是: + +- `https://www.{$DomainModel->d_domain}` + +这两条线如果同时存在,就会直接制造: + +- 首页 `/|301` +- 深页 host 规范化 `301` + +### 2. 当前“模板 canonical”和“sitemap canonical host”口径明显可能不一致 + +模板侧: + +- 详情页 canonical:`https://{$DomainModel->d_domain}...` +- 播放页 canonical:`https://{$DomainModel->d_domain}...` +- 首页 canonical:`https://{$DomainModel->d_domain}/` + +可以参考: + +- [index.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/index/index.html:99) +- [getCategory.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategory.html:34) +- [getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:15) + +sitemap 侧: + +- [VideoSiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/VideoSiteMapLogic.php:203) +- [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php:158) + +都在大量拼: + +- `https://www.{$DomainModel->d_domain}...` + +这意味着: + +- 如果站点真实最终规范 host 不是 `www` +- 那么 sitemap 就在持续喂给蜘蛛一批要再跳一次的 URL + +## 三、对 `1275` 的执行顺序修正 + +### 第一优先级仍然不变 + +还是先看: + +1. 深页兼容入口 +2. canonical +3. sitemap host + +### 但 canonical 这条线的落点要修正 + +主 Codex 在 `videoGpt1` 下应该优先看: + +- 视频模板里真实输出的 canonical + +而不是先把精力放在: + +- `SiteStyle::buildSeoMeta()` 的 `voddetail` 兜底 + +因为从当前代码看,后者更像兜底工具,不像视频模板主输出源。 + +## 四、现在最可能优先改的 3 个点 + +### 1. 统一 canonical 和 sitemap 的 host 口径 + +这是当前最像“能直接减少 `/|301` 与 host 301”的点。 + +### 2. 核对播放页 canonical 是否应该保留在播放页自身 + +当前播放页模板 canonical 指向播放页自己,不是详情页。 + +这条线值得主 Codex 明确判断: + +- 当前策略是不是故意的 +- 是否符合当前 SEO 设计目标 +- 是否会放大 `play|301` 或索引策略混乱 + +### 3. 继续压缩历史兼容入口 + +因为日志里仍然高频出现: + +- `video-info` +- `video-play` +- `video-show` +- `vodbf` + +## 五、给主 Codex 的一句话修正 + +> `videoGpt1` 当前最值得先查的 canonical 问题,不是 `SiteStyle` 里那段 `/voddetail` 兜底,而是模板实际输出的 `https://{$DomainModel->d_domain}` 和 sitemap 统一输出的 `https://www.{$DomainModel->d_domain}` 之间,是否正在持续制造 host 级 301。 diff --git a/docs/old-tmp-seo/08-第一轮只读代码审查发现-2026-04-17.md b/docs/old-tmp-seo/08-第一轮只读代码审查发现-2026-04-17.md new file mode 100644 index 0000000..e66c23c --- /dev/null +++ b/docs/old-tmp-seo/08-第一轮只读代码审查发现-2026-04-17.md @@ -0,0 +1,240 @@ +# 1277-SEONexus 第一轮只读代码审查发现 - 2026-04-17 + +## 目的 + +这份文档是在 `1275` 和 `1276` 的基础上,进一步给主 Codex 提供“第一轮只读代码审查发现”。 + +这不是改动方案文档,而是: + +- 先列发现 +- 再说明为什么它可能对应当前蜘蛛日志 +- 方便主 Codex 直接决定先改哪一处 + +## 发现一:模板 canonical host 与 sitemap host 口径明显不一致 + +严重度:`高` + +### 证据 + +`videoGpt1` 模板侧 canonical 普遍使用: + +- [index.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/index/index.html:99) +- [getCategory.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategory.html:34) +- [getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:15) +- [getVideoInfo.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoInfo.html:39) +- [getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:117) + +这些位置都在输出: + +- `https://{$DomainModel->d_domain}...` + +而 sitemap 生成侧: + +- [VideoSiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/VideoSiteMapLogic.php:203) +- [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php:158) + +都在直接拼: + +- `https://www.{$DomainModel->d_domain}...` + +### 为什么重要 + +如果站点真实规范 host 不是固定 `www`,那么当前系统会同时存在: + +- 模板 canonical 喂一套 host +- sitemap 喂另一套 host + +这会直接制造: + +- 首页 `/|301` +- 深页 host 规范化 `301` +- 裸域与 `www` 并行抓取 + +### 对应当前日志 + +这和当前多站点反复出现的: + +- `/|301` +- `www` 与裸域并行命中 + +是高度一致的。 + +## 发现二:播放页 canonical 指向播放页自身,而不是详情页 + +严重度:`中高` + +### 证据 + +播放页模板: + +- [getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:117) + +当前输出: + +- `` + +并且: + +- `$strPlayCanonicalUrl` 是通过 `VideoService::getVideoPlayUrl()` 生成的当前播放页 URL +- 不是详情页 URL + +### 为什么重要 + +这意味着当前策略是: + +- 播放页 `robots = noindex,follow` +- 但 canonical 仍指向播放页自己 + +这不是绝对错误,但它值得主 Codex 明确确认设计意图: + +- 是不是故意让播放页保留自身规范地址 +- 还是本来希望回详情页,只是实现现在没有这么做 + +### 对应当前日志 + +如果播放页长期保留自己作为 canonical,再叠加历史 `video-play / video-show / vodplay` 兼容路径,就更容易形成: + +- `play|301` +- 多播放路径并行规范化 + +这和 `yagyjt.com`、`junhaolab.com` 当前的播放页 `301/200` 并存现象是对得上的。 + +## 发现三:历史深页兼容入口数量非常大,且覆盖多组别名 + +严重度:`高` + +### 证据 + +文件: + +- [router.php](/www/wwwroot/VideoSource2/code/app/home/config/router.php:209) + +当前兼容了大量 detail/play 历史入口: + +- `voddetail` +- `vodinfo` +- `vod` +- `video-info` +- `video-detail` +- `video` +- `shipin` +- `shipin-xiangqing` +- `shipin-neiron` +- `vodplay` +- `vodbf` +- `vodseed` +- `video-play` +- `video-bofang` +- `video-show` +- `shipin-play` +- `shipin-bofang` +- `shipin-kan` + +### 为什么重要 + +这套兼容入口本身有价值,因为它能避免旧外链直接 404。 + +但副作用也很明显: + +- 会显著扩大“先接住,再跳一次”的路径面 +- 如果 canonical、sitemap、站内链接又没有完全统一,就容易长期维持高位深页 `301` + +### 对应当前日志 + +这和当前高频异常里的: + +- `/voddetail/...|301` +- `/vodplay/...|301` +- `/video-info/...|301` +- `/video-play/...|301` +- `/video-show/...|301` +- `/vodbf/...|301` + +完全一致。 + +## 发现四:分类页 canonical 与 og:url 口径不完全一致 + +严重度:`中` + +### 证据 + +分类列表页: + +- [getCategory.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategory.html:34) +- [getCategory.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategory.html:39) + +当前表现为: + +- canonical 指向分类基础页,不显式带当前分页 +- `og:url` 指向当前分页 URL + +### 为什么重要 + +这不一定是错误,因为分页页面常见策略就是: + +- canonical 回第一页 +- 当前页保留独立可访问 URL + +但如果当前页面内容与第一页差异较大,或者系统没有对深分页做更明确的 noindex/canonical 设计,就可能造成: + +- 蜘蛛抓取了分页 +- 但规范化信号又全部回第一页 + +### 当前判断 + +这条不是现在最优先要改的点,但值得主 Codex 顺手确认是否符合当前分页 SEO 设计。 + +## 发现五:详情页 canonical、列表页 canonical、首页 canonical 都统一走非 `www` 口径 + +严重度:`中高` + +### 证据 + +可以从以下模板直接看到: + +- [首页 canonical](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/index/index.html:99) +- [分类页 canonical](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategory.html:34) +- [一级分类 canonical](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:15) +- [详情页 canonical](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoInfo.html:39) +- [播放页 canonical](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:117) + +都统一是: + +- `https://{$DomainModel->d_domain}` + +### 为什么重要 + +这说明当前模板层其实已经隐含表达了一种明确立场: + +- 规范 host 更像是裸域 + +如果真是这样,那么 sitemap 仍然统一输出 `https://www.` 就更像一个明确冲突,而不是单纯“不同文件各写各的”。 + +## 当前最像真实改动入口的 3 个点 + +### 1. 先统一模板 canonical host 与 sitemap host + +这是当前最像“改完后能直接压掉一批 host 级 301”的地方。 + +### 2. 再明确播放页 canonical 策略 + +要么确认: + +- 播放页 canonical 就该留在播放页 + +要么确认: + +- 播放页 canonical 应该回详情页 + +现在最怕的是逻辑处于“既 noindex,又不完全统一 canonical 目标”的中间态。 + +### 3. 再评估兼容入口是否还能继续收窄 + +因为当前日志里已经明确能看见: + +- 哪些旧入口还在持续命中 +- 哪些别名组仍然在吃 301 预算 + +## 给主 Codex 的一句话 + +> 第一轮只读审查看下来,最像真问题的不是某一条单独路由,而是“模板 canonical 统一走裸域、sitemap 统一走 www、同时历史深页兼容入口又很多”这三件事叠在一起,持续制造了当前日志里看到的首页和深页 `301` 损耗。 diff --git a/docs/old-tmp-seo/09-第一批候选修正方案-2026-04-17.md b/docs/old-tmp-seo/09-第一批候选修正方案-2026-04-17.md new file mode 100644 index 0000000..c36b883 --- /dev/null +++ b/docs/old-tmp-seo/09-第一批候选修正方案-2026-04-17.md @@ -0,0 +1,258 @@ +# 1278-SEONexus 第一批候选修正方案 - 2026-04-17 + +## 目的 + +这份文档用于把 `1277` 的只读审查发现,进一步收敛成主 Codex 可以直接评估的第一批候选修正方案。 + +这里先不进入具体代码实现,只做三件事: + +1. 明确候选修正点 +2. 说明它可能解决什么问题 +3. 说明潜在副作用和验证重点 + +## 先说结论 + +当前最像值得优先动手的,不是十几处零散小修,而是下面 3 条主线: + +1. 统一模板 canonical host 与 sitemap host +2. 明确播放页 canonical 策略 +3. 收缩历史深页兼容入口或跳转链 + +## 候选方案一:统一 canonical 与 sitemap 的 host 口径 + +优先级:`P0` + +### 当前现状 + +模板侧 `videoGpt1` canonical 普遍通过模板标签走 `VideoService -> UrlBuilder` 输出: + +- [Site.php](/www/wwwroot/VideoSource2/code/extend/template/taglib/Site.php:238) +- [VideoService.php](/www/wwwroot/VideoSource2/code/app/services/VideoService.php:87) + +模板里最终拼的是: + +- `https://{$DomainModel->d_domain}...` + +典型位置: + +- [首页](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/index/index.html:99) +- [详情页](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoInfo.html:39) +- [播放页](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:117) +- [分类页](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategory.html:34) + +而 sitemap 生成里大量直接写: + +- `https://www.{$DomainModel->d_domain}...` + +典型位置: + +- [VideoSiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/VideoSiteMapLogic.php:203) +- [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php:158) + +### 候选修正 + +把 sitemap 输出 host 统一到与模板 canonical 一致的规范 host。 + +### 预期收益 + +- 压低首页 `/|301` +- 压低 host 级 `301` +- 降低裸域 / `www` 并行抓取 +- 让 sitemap、canonical、站内链接至少先在 host 维度统一 + +### 潜在副作用 + +- 如果真实线上规范 host 本来就是 `www`,而模板 canonical 才是错的,那么简单改 sitemap 会把问题转移,而不是解决 + +### 实施前必须先确认 + +- 当前业务最终想要的规范 host,到底是裸域还是 `www` +- 前置层 / nginx 的最终 host 跳转策略是什么 + +### 当前更倾向的判断 + +从现有模板和站内链接输出看,系统更像默认把裸域当规范 host。 + +如果这个判断成立,那么更像是: + +- sitemap 侧应向模板 canonical 对齐 + +## 候选方案二:明确播放页 canonical 是回详情页,还是保留播放页自身 + +优先级:`P0` + +### 当前现状 + +播放页模板: + +- [getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:117) + +当前 canonical 指向: + +- 当前播放页自身 URL + +同时: + +- `robots = noindex,follow` + +### 候选修正方向 A + +继续保留播放页 canonical 指向播放页自身。 + +适用前提: + +- 业务明确希望每个播放页都拥有自洽的规范地址 +- 只是通过 `noindex` 控制搜索引擎是否收录 + +### 候选修正方向 B + +把播放页 canonical 改回详情页。 + +适用前提: + +- 业务希望搜索引擎主要把权重聚合到详情页 +- 播放页只作为观看页存在,不作为核心规范承载页 + +### 预期收益 + +如果改为回详情页,可能带来: + +- 更强的 detail 聚合信号 +- 更少的播放页规范化分叉 + +### 潜在副作用 + +如果播放页承载了明显不同的信息结构,强行 canonical 回详情页,也可能让页面意图变得不够清晰。 + +### 当前更值得主 Codex 先做的事 + +不是立刻改,而是先明确设计目标: + +- “播放页保留自身 canonical”是设计决定 +还是 +- “本来想回详情页,只是现在实现成了播放页自身” + +## 候选方案三:收缩历史深页兼容入口 + +优先级:`P1` + +### 当前现状 + +兼容入口非常宽: + +- [router.php](/www/wwwroot/VideoSource2/code/app/home/config/router.php:209) + +包括: + +- `voddetail` +- `vodinfo` +- `vod` +- `video-info` +- `video-detail` +- `video` +- `shipin` +- `vodplay` +- `vodbf` +- `vodseed` +- `video-play` +- `video-show` +- `shipin-play` +- `shipin-bofang` +- `shipin-kan` + +### 候选修正 + +不是一次性删兼容,而是分两步: + +1. 先按日志命中频率分组 +2. 再决定哪些入口必须保留,哪些入口可以逐步收缩 + +### 预期收益 + +- 压低深页 `301` +- 减少“多组别名 -> 同一规范页”的长期跳转预算损耗 + +### 潜在副作用 + +- 如果删掉仍被百度高频命中的入口,会把 `301 -> 200` 又打回 `404` + +### 当前建议 + +这条线不适合第一刀就重手改。 + +更适合在统一 host 和 canonical 口径之后,再做第二轮收缩。 + +## 候选方案四:限制 fallback 的适用范围 + +优先级:`P1` + +### 当前现状 + +`VideoService` 存在回退链: + +- [VideoService.php](/www/wwwroot/VideoSource2/code/app/services/VideoService.php:905) + +查不到原始 `v_id` 时,会: + +- 读绑定 +- 随机采样 +- 排序兜底 + +### 候选修正 + +不是立即移除 fallback,而是评估是否加边界,例如: + +- 只对部分入口生效 +- 只对详情页生效,不对播放页生效 +- 只在存在某些可信条件时生效 + +### 预期收益 + +- 减少“错链也 200”的语义风险 +- 保留对 hard 404 的止血能力 + +### 潜在副作用 + +- fallback 一旦收紧,可能让部分当前已被兜住的旧 deep link 重新回到 `404` + +### 当前建议 + +这条线适合在主 Codex 完成第一轮 host / canonical / 兼容入口收口后,再决定是否调整。 + +## 我更建议的落地顺序 + +### 第一刀 + +先统一 host 口径: + +- 模板 canonical +- sitemap +- RSS +- 站内主要结构化 URL + +### 第二刀 + +再确认播放页 canonical 的产品/SEO 立场: + +- 保持播放页自身 +或 +- 回详情页 + +### 第三刀 + +最后再收缩历史兼容入口与 fallback 边界。 + +## 不建议的顺序 + +不建议一上来先动: + +- 大规模删兼容路由 +- 大规模关闭 fallback + +原因: + +- 这两条线会直接把一批目前还能 `301 -> 200` 的深链重新打回 `404` + +## 给主 Codex 的一句话 + +> 第一批真正值得评估的修正方案,不是“怎么把所有问题都一起修掉”,而是先把 host 规范统一,再明确播放页 canonical 立场,最后才去收深页兼容入口和 fallback 边界。 diff --git a/docs/old-tmp-seo/10-第一批候选修正方案评审建议-2026-04-17.md b/docs/old-tmp-seo/10-第一批候选修正方案评审建议-2026-04-17.md new file mode 100644 index 0000000..63fbb26 --- /dev/null +++ b/docs/old-tmp-seo/10-第一批候选修正方案评审建议-2026-04-17.md @@ -0,0 +1,204 @@ +# 1279-SEONexus 第一批候选修正方案评审建议 - 2026-04-17 + +## 目的 + +这份文档用于在 `1278` 的候选修正方案基础上,再往前走一步: + +- 不只是列方案 +- 而是给出当前更推荐的顺序和取舍建议 + +它的目标受众就是主 Codex。 + +## 先说结论 + +当前最值得主 Codex 优先推进的方案,不是“收兼容入口”,而是: + +1. 先统一 host 规范口径 +2. 再确认播放页 canonical 立场 +3. 最后才动兼容入口和 fallback 边界 + +## 一、为什么 host 统一应该排第一 + +### 1. 模板与 sitemap 目前存在直接冲突 + +模板 canonical 普遍走: + +- `https://{$DomainModel->d_domain}...` + +而 sitemap 生成普遍走: + +- `https://www.{$DomainModel->d_domain}...` + +这不是抽象风险,而是当前代码中已经明确存在的双口径输出。 + +### 2. 日志已经证实多站存在 `www` / 裸域混合抓取 + +最近 24 小时百度抓取里,至少以下 base domain 已经同时出现裸域和 `www`: + +- `ningxiaowei.com` + - `www.ningxiaowei.com = 78` + - `ningxiaowei.com = 9` +- `haotianhaiyuan.com` + - `www.haotianhaiyuan.com = 18` + - `haotianhaiyuan.com = 14` +- `yagyjt.com` + - `yagyjt.com = 162` + - `www.yagyjt.com = 17` +- `ctshuhua.com` + - `www.ctshuhua.com = 78` + - `ctshuhua.com = 72` +- `sctyjz.com` + - `sctyjz.com = 11` + - `www.sctyjz.com = 9` +- `junhaolab.com` + - `www.junhaolab.com = 9` + - `junhaolab.com = 4` + +### 3. 这说明 host 级规范化损耗是真实存在的 + +因此: + +- host 统一不是“理论上更好” +- 而是当前最像正在真实消耗抓取预算的一条主线 + +## 二、为什么播放页 canonical 应该排第二 + +### 1. 它影响深页 `301` 的理解方式 + +当前播放页模板: + +- `robots = noindex,follow` +- `canonical = 当前播放页自身` + +这会直接影响主 Codex 如何判断当前 `play|301`: + +- 如果播放页本来就该保留自身规范 URL,那么当前主要问题是兼容入口过多 +- 如果播放页本来应 canonical 回详情页,那么当前实现就更像未收口 + +### 2. 这条线虽然重要,但收益更依赖设计取舍 + +和 host 统一不同,这条线不是单纯的工程不一致。 + +它更像是: + +- SEO 策略选择 + +所以它应排在第二位: + +- 先统一明显冲突的 host +- 再确认播放页 canonical 立场 + +## 三、为什么兼容入口收缩不应排第一 + +### 1. 当前兼容入口仍在真实命中 + +日志里当前仍高频出现: + +- `voddetail` +- `vodplay` +- `video-info` +- `video-play` +- `video-show` +- `vodbf` + +这说明兼容入口不是“死代码”。 + +### 2. 现在先删,风险很高 + +如果主 Codex 第一刀就去删或大幅收缩兼容入口,很容易把当前一批还能: + +- `301 -> 200` + +的旧 deep link,重新打回: + +- `404` + +### 3. 更稳的顺序 + +更合理的是: + +1. 先把 host 统一 +2. 再把 canonical 立场统一 +3. 观察日志 +4. 再决定兼容入口是否还能继续收 + +## 四、为什么 fallback 边界也不应排第一 + +### 1. fallback 很可能正在帮助压低 `404` + +当前 `404` 的明显下降,不排除有一部分就是 fallback 机制在止血。 + +### 2. 现在先收 fallback,会让数据倒退 + +如果主 Codex 在 host / canonical 还没统一之前,就先把 fallback 收紧,那么很可能会出现: + +- `404` 重新回升 + +这样会把问题重新搅混,不利于判断主线修正是否有效。 + +## 五、当前更推荐的执行顺序 + +### 第一阶段 + +先统一以下几类输出的 host: + +- 首页 canonical +- 分类 canonical +- 详情页 canonical +- 播放页 canonical +- sitemap +- RSS +- 结构化数据里的 URL + +目标: + +- 先让模板、站内主输出、sitemap 至少在 host 维度统一 + +### 第二阶段 + +再确认播放页 canonical 策略: + +- 保留播放页自身 +或 +- 回详情页 + +目标: + +- 让 `play` 页的规范信号有明确立场 + +### 第三阶段 + +最后再做: + +- 兼容入口分组收缩 +- fallback 适用范围收缩 + +目标: + +- 在不把旧 deep link 直接打回 `404` 的前提下,继续压深页 `301` + +## 六、当前最不建议的操作 + +### 1. 不建议先删大量历史兼容入口 + +原因: + +- 风险最大 +- 最容易直接把数据打坏 + +### 2. 不建议先动 fallback + +原因: + +- 当前还没搞清楚它对 `404` 下降贡献有多大 + +### 3. 不建议只改单个模板 canonical + +原因: + +- 当前问题是系统性 host 双口径 +- 只改单页模板,很容易头痛医头 + +## 给主 Codex 的一句话 + +> 当前最值得优先批准推进的,不是“收旧路由”,而是“统一 host 输出口径”;因为这条线同时有代码证据和日志证据,而且副作用最可控、验证也最直接。 diff --git a/docs/old-tmp-seo/11-第一批可落地修正设计-2026-04-17.md b/docs/old-tmp-seo/11-第一批可落地修正设计-2026-04-17.md new file mode 100644 index 0000000..2754e1c --- /dev/null +++ b/docs/old-tmp-seo/11-第一批可落地修正设计-2026-04-17.md @@ -0,0 +1,309 @@ +# 1280-SEONexus 第一批可落地修正设计 - 2026-04-17 + +## 目的 + +这份文档用于把 `1278` 和 `1279` 的候选方案与评审建议,进一步压成主 Codex 可以直接进入实施评估的“第一批可落地修正设计”。 + +这份文档仍然不直接改代码,但已经具备: + +- 改哪些文件 +- 为什么先改这些 +- 改动边界在哪里 +- 怎么验证 + +## 这批设计的总原则 + +第一批只做“低副作用、高确定性、容易验证”的统一动作。 + +因此本批次只建议优先考虑: + +1. 统一 host 输出口径 +2. 暂不碰大规模兼容入口删除 +3. 暂不碰 fallback 收紧 + +## 设计目标 + +### 主目标 + +压低以下两类损耗: + +- 首页 `/|301` +- host 级 `301` + +### 次目标 + +让以下输出口径至少先一致: + +- 模板 canonical +- OG URL +- 结构化数据 URL +- sitemap +- RSS + +## 第一批建议改动范围 + +### A. sitemap 与 RSS 的 host 统一 + +建议优先级:`最高` + +### 涉及文件 + +- [VideoSiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/VideoSiteMapLogic.php:203) +- [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php:158) +- [videoGpt1/rss/so.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/rss/so.xml:12) +- [videoGpt1/rss/baidu.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/rss/baidu.xml:6) + +### 当前问题 + +这几处目前存在明显双口径: + +- sitemap 很多地方硬编码 `https://www.{$DomainModel->d_domain}` +- RSS 中也混有 `www.` 口径 +- 模板 canonical 则统一偏向 `https://{$DomainModel->d_domain}` + +### 建议改动边界 + +第一批不要引入复杂的新 host 策略中心。 + +先做最小收口: + +- 让 sitemap 与 RSS 的 host 输出,先与当前模板 canonical 口径一致 + +也就是: + +- 如果模板当前是 `https://{$DomainModel->d_domain}` +- 那么 sitemap / RSS 第一批也先统一成这一套 + +### 为什么先这样做 + +原因不是“裸域一定对”,而是: + +- 当前模板和站内主输出已经大量使用裸域口径 +- sitemap / RSS 仍输出 `www` +- 这两者冲突会稳定制造 host 级跳转 + +在未建立统一 host 策略中心前,先朝站内主输出对齐,是副作用更小的做法。 + +### 第一批不建议做的事 + +不建议在这一步同时: + +- 动 Nginx host 跳转策略 +- 动 `DomainModel` 的 host 配置语义 +- 动所有历史模板 + +先把 `videoGpt1` 这条主线收口,再看日志反馈。 + +## B. 模板层 canonical / og:url / structured data host 统一复核 + +建议优先级:`高` + +### 涉及文件 + +- [videoGpt1/index/index.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/index/index.html:99) +- [videoGpt1/video/getCategory.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategory.html:34) +- [videoGpt1/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:15) +- [videoGpt1/video/getVideoInfo.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoInfo.html:39) +- [videoGpt1/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:117) + +### 当前问题 + +这些文件虽然大方向一致,都偏向非 `www` host,但仍需要主 Codex 顺手复核: + +- canonical +- `og:url` +- JSON-LD `url` + +是否完全同口径。 + +### 建议改动边界 + +第一批不建议在模板层大改页面语义。 + +只做: + +- host 统一 +- URL 输出口径统一 + +不做: + +- 大改 title/description +- 改动页面结构 +- 改 robots 策略 + +## C. 播放页 canonical 策略先做“确认”,不急着改 + +建议优先级:`中` + +### 涉及文件 + +- [videoGpt1/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:117) +- [VideoService.php](/www/wwwroot/VideoSource2/code/app/services/VideoService.php:137) + +### 当前问题 + +当前播放页: + +- `robots = noindex,follow` +- canonical 指向当前播放页自身 + +这是一个“策略问题”,不是明显 bug。 + +### 第一批建议 + +第一批不要急着改。 + +主 Codex 只需要先确认一件事: + +- 当前产品/SEO 立场,到底是要播放页保留自身 canonical +还是 +- 要回详情页 + +### 为什么不建议第一批就动 + +因为: + +- 这条线会直接影响 `play|301` 的解读 +- 也会影响播放页是否继续作为独立规范对象存在 + +它的风险比 host 统一更偏设计取舍,不适合当第一刀。 + +## D. 历史兼容入口先观察,不立即收缩 + +建议优先级:`中后` + +### 涉及文件 + +- [router.php](/www/wwwroot/VideoSource2/code/app/home/config/router.php:209) + +### 第一批建议 + +这一批只做“分组清单”和“命中频率对应”,不做实际删除。 + +可以先把入口分成三组: + +1. 高频仍命中 +2. 低频偶发命中 +3. 近 24 小时几乎不命中 + +但第一批不建议直接动路由。 + +### 原因 + +如果现在就删,很容易把: + +- `301 -> 200` + +重新打回: + +- `404` + +## E. fallback 机制先保留 + +建议优先级:`后` + +### 涉及文件 + +- [VideoService.php](/www/wwwroot/VideoSource2/code/app/services/VideoService.php:905) + +### 第一批建议 + +先不改 fallback。 + +只做两件事: + +1. 明确它当前的收益 +2. 明确它潜在的语义风险 + +### 原因 + +当前 `404` 的下降,很可能部分就来自 fallback 在止血。 + +在 host / canonical 还没统一前,先动它会让日志重新变脏。 + +## 推荐实施顺序 + +### 第一刀 + +统一 host 口径: + +- sitemap +- RSS +- 模板 canonical +- og:url +- JSON-LD url + +### 第二刀 + +复看日志: + +- `/|301` 是否下降 +- `www` / 裸域混合抓取是否下降 +- `yagyjt.com` / `ningxiaowei.com` 等站的 host 301 是否下降 + +### 第三刀 + +再决定是否推进: + +- 播放页 canonical 策略调整 +- 历史兼容入口收缩 + +## 建议的验证口径 + +### 1. 日志指标 + +优先看: + +- `/|301` +- `home|301` +- `detail|301` +- `play|301` +- 同一 base domain 下 `www` / 裸域双命中是否下降 + +### 2. 页面级抽查 + +至少抽查: + +- 首页 +- 一级分类 +- 二级分类 +- 详情页 +- 播放页 +- `robots.txt` +- `sitemap_index.xml` +- RSS 输出 + +确认: + +- canonical host 一致 +- og:url host 一致 +- JSON-LD URL 一致 +- sitemap / RSS host 一致 + +### 3. 重点域名 + +建议第一轮继续盯: + +- `yagyjt.com` +- `www.ningxiaowei.com` +- `sctyjz.com` +- `www.haotianhaiyuan.com` +- `ctshuhua.com` + +## 本批次最重要的边界 + +### 不做的事 + +- 不大规模删历史兼容路由 +- 不先收 fallback +- 不大改播放页 SEO 立场 +- 不同时改 Nginx + PHP + 模板三层 host 策略 + +### 只做的事 + +- 先统一输出口径 +- 先降低确定性的 host 级损耗 + +## 给主 Codex 的一句话 + +> 第一批最适合真正落地的,不是“重构 SEO 路由体系”,而是先做一次低副作用的输出口径统一,让模板、sitemap、RSS 在 host 维度不再互相打架,再用日志看收益。 diff --git a/docs/old-tmp-seo/12-第一批修正实施方案-2026-04-17.md b/docs/old-tmp-seo/12-第一批修正实施方案-2026-04-17.md new file mode 100644 index 0000000..1bb64dc --- /dev/null +++ b/docs/old-tmp-seo/12-第一批修正实施方案-2026-04-17.md @@ -0,0 +1,249 @@ +# 1281-SEONexus 第一批修正实施方案 - 2026-04-17 + +## 目的 + +这份文档用于把 `1280` 的“可落地修正设计”继续推进成可以直接进入实施评审的方案。 + +它回答的是: + +1. 第一批具体怎么改 +2. 先改哪些文件 +3. 每一步改完怎么验证 +4. 哪些线这一批绝对不要碰 + +## 本批次实施目标 + +只做一件事: + +> 统一 `videoGpt1` 主线上模板、sitemap、RSS 的 host 输出口径,尽量先消除系统内部自带的 host 双口径冲突。 + +不把本批次目标扩散到: + +- 深页兼容路由重构 +- fallback 策略收紧 +- 播放页 canonical 政策改向 + +## 预期收益 + +如果这一批实施正确,最可能看到的收益是: + +1. 首页 `/|301` 继续下降 +2. host 级 `301` 下降 +3. 同一 base domain 下 `www` / 裸域混合抓取下降 +4. `yagyjt.com`、`ningxiaowei.com`、`haotianhaiyuan.com` 这类站的 host 分裂减轻 + +## 本批次改动批次 + +### 批次 A:统一模板与站内公开输出的 host 口径 + +建议优先级:`最高` + +### 目标 + +确认 `videoGpt1` 主线上以下输出全部使用同一 host 口径: + +- 首页 canonical +- 分类页 canonical +- 详情页 canonical +- 播放页 canonical +- `og:url` +- JSON-LD `url` + +### 建议检查文件 + +- [videoGpt1/index/index.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/index/index.html:99) +- [videoGpt1/video/getCategory.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategory.html:34) +- [videoGpt1/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:15) +- [videoGpt1/video/getVideoInfo.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoInfo.html:39) +- [videoGpt1/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:117) + +### 实施建议 + +这一步如果发现这些文件已经统一,则不做逻辑变更,只做复核确认。 + +当前从只读审查来看,它们大方向已经都偏向: + +- `https://{$DomainModel->d_domain}` + +所以这一步更像: + +- 明确模板层口径 +- 作为后续 sitemap / RSS 对齐基线 + +## 批次 B:把 sitemap 输出 host 对齐到模板口径 + +建议优先级:`最高` + +### 目标 + +去掉 sitemap 生成里与模板层相冲突的 `https://www.` 硬编码。 + +### 建议改动文件 + +- [VideoSiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/VideoSiteMapLogic.php:203) +- [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php:158) + +### 当前问题 + +这里大量在拼: + +- `https://www.{$DomainModel->d_domain}` + +### 建议改动方式 + +第一批不建议做复杂抽象。 + +只做最小改动: + +- 把 `https://www.{$DomainModel->d_domain}` 统一替换为与当前模板主输出一致的 host 口径 + +也就是优先对齐: + +- `https://{$DomainModel->d_domain}` + +### 这样做的原因 + +因为当前真正造成系统自冲突的,是: + +- 模板一套 +- sitemap 一套 + +先消掉这层内部打架,比引入新配置中心更稳。 + +## 批次 C:把 RSS 输出 host 对齐到模板口径 + +建议优先级:`高` + +### 建议改动文件 + +- [videoGpt1/rss/baidu.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/rss/baidu.xml:6) +- [videoGpt1/rss/so.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/rss/so.xml:12) + +### 当前问题 + +这两个文件内部 host 口径并不完全一致: + +- `baidu.xml` 的 `` 已偏向非 `www` +- `baidu.xml` 的频道级 `` / `` 仍有 `www` +- `so.xml` 仍在输出 `https://www.{$DomainModel->d_domain}...` + +### 建议改动方式 + +第一批同样只做最小统一: + +- 与模板 canonical 口径对齐 + +## 本批次不改的内容 + +### 1. 不改播放页 canonical 策略 + +原因: + +- 它是策略问题,不是第一批最确定的问题 + +### 2. 不删历史兼容入口 + +原因: + +- 当前高频旧入口仍真实存在 +- 先删风险太高 + +### 3. 不收 fallback + +原因: + +- 当前 `404` 下降可能部分依赖 fallback + +### 4. 不引入新的全局 host 配置中心 + +原因: + +- 第一批目标是低副作用止损 +- 不是立刻做体系重构 + +## 推荐实施顺序 + +### 第一步 + +模板层 host 输出复核: + +- 首页 +- 分类页 +- 详情页 +- 播放页 + +### 第二步 + +改 sitemap host 输出: + +- `VideoSiteMapLogic` +- `SiteMapLogic` + +### 第三步 + +改 RSS host 输出: + +- `baidu.xml` +- `so.xml` + +### 第四步 + +做页面级回归: + +- 首页 +- 分类页 +- 详情页 +- 播放页 +- `sitemap_index.xml` +- `sitemap-videos-1.xml` +- RSS + +## 建议的验证顺序 + +### 一、页面静态验证 + +确认: + +- canonical host 一致 +- `og:url` host 一致 +- JSON-LD `url` 一致 +- sitemap URL host 一致 +- RSS URL host 一致 + +### 二、外网行为验证 + +抽查几个代表域名: + +- `yagyjt.com` +- `www.ningxiaowei.com` +- `www.haotianhaiyuan.com` +- `ctshuhua.com` +- `sctyjz.com` + +重点看: + +- 首页是否仍多跳 +- sitemap 返回内容里的 host 是否统一 + +### 三、日志验证 + +回看下一轮蜘蛛日志时,优先比较: + +- `/|301` +- `home|301` +- `detail|301` +- `play|301` +- 同一 base domain 的 `www` / 裸域双命中是否下降 + +## 止损边界 + +如果本批次改动后出现以下任一情况,应暂停继续扩大: + +1. `404` 明显回升 +2. sitemap / RSS 出现不可访问 +3. 首页或详情页 canonical 异常 +4. `detail|301` / `play|301` 不降反升且幅度明显 + +## 给主 Codex 的一句话 + +> 第一批实施最适合做的,是一次“小范围 host 输出统一手术”:先把模板、sitemap、RSS 的 host 口径对齐,先消除系统内部自带的冲突,再用日志看 `/|301` 和 host 分裂是否下降。 diff --git a/docs/old-tmp-seo/13-主Codex接手摘要-2026-04-17.md b/docs/old-tmp-seo/13-主Codex接手摘要-2026-04-17.md new file mode 100644 index 0000000..a0fe838 --- /dev/null +++ b/docs/old-tmp-seo/13-主Codex接手摘要-2026-04-17.md @@ -0,0 +1,173 @@ +# 1282-SEONexus 主 Codex 接手摘要 - 2026-04-17 + +## 这份文档是干什么的 + +给主 Codex 一个最短路径摘要。 + +如果没有时间从 `1271` 一直读到 `1281`,先看这份,就能知道: + +- 现在日志阶段走到哪里了 +- 当前最像真问题的点是什么 +- 第一批建议先改哪里 + +## 当前阶段结论 + +截至 `2026-04-17`,老模板蜘蛛日志已经不是“百度没来”的问题。 + +当前更准确的判断是: + +1. 首页抓取已经成立 +2. 部分站点已经有真实深抓 +3. `404` 已较前一轮明显下降 +4. 但 `301` 仍在持续消耗预算 +5. 主要损耗已更集中在: + - host 规范化 + - 深页历史兼容入口 + - 部分 `444` 探测型噪音 + +## 这轮最像真问题的 3 个点 + +### 1. 模板 canonical 与 sitemap / RSS 的 host 口径冲突 + +当前 `videoGpt1` 模板主线大量输出: + +- `https://{$DomainModel->d_domain}...` + +但 sitemap / RSS 中仍有多处输出: + +- `https://www.{$DomainModel->d_domain}...` + +这和日志里持续存在的: + +- `/|301` +- 同一 base domain 下 `www` / 裸域并行抓取 + +是高度一致的。 + +### 2. 深页兼容入口很多,仍在真实命中 + +`router.php` 中存在大批旧深页兼容入口: + +- `voddetail` +- `video-info` +- `video-play` +- `video-show` +- `vodbf` +- `shipin-*` + +它们当前不是死代码。 + +所以不能第一刀就删,但它们很可能确实在维持一部分深页 `301`。 + +### 3. 播放页 canonical 当前指向播放页自身 + +这不是明确 bug,但它是一个必须由主 Codex 明确拍板的策略点: + +- 保持播放页自身 canonical +还是 +- 回详情页 + +## 当前最建议优先推进的事情 + +### 第一优先级 + +先统一 host 输出口径。 + +优先统一: + +- 模板 canonical +- `og:url` +- JSON-LD URL +- sitemap +- RSS + +目标: + +- 先减少系统内部自己制造的 host 级 `301` + +### 第二优先级 + +再确认播放页 canonical 立场。 + +目标: + +- 明确 `play` 页在当前 SEO 策略里,到底算不算规范对象 + +### 第三优先级 + +最后才评估: + +- 历史兼容入口收缩 +- fallback 边界收缩 + +## 当前不建议先做的事 + +### 1. 不建议先删大批兼容路由 + +原因: + +- 当前很多旧入口还在真实命中 +- 很容易把 `301 -> 200` 打回 `404` + +### 2. 不建议先动 fallback + +原因: + +- 这条线可能正在帮助压低 `404` + +### 3. 不建议同时改 Nginx + PHP + 模板三层 host 策略 + +原因: + +- 第一批应该做低副作用、可验证的统一动作 + +## 第一批实施建议 + +如果主 Codex 要开做,建议第一批只碰这些文件: + +- [VideoSiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/VideoSiteMapLogic.php:203) +- [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php:158) +- [videoGpt1/rss/baidu.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/rss/baidu.xml:6) +- [videoGpt1/rss/so.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/rss/so.xml:12) +- 再顺手复核 `videoGpt1` 模板里的 canonical / `og:url` / JSON-LD URL 输出 + +## 第一批验证重点 + +改完后优先看: + +- `/|301` 是否下降 +- `home|301` 是否下降 +- 同一 base domain 的 `www` / 裸域双命中是否下降 + +建议继续盯的域名: + +- `yagyjt.com` +- `www.ningxiaowei.com` +- `www.haotianhaiyuan.com` +- `ctshuhua.com` +- `sctyjz.com` + +## 文档导航 + +如果主 Codex 需要往下展开看: + +- 日志首轮总结: + [1271](/www/wwwroot/VideoSource2/docs/old-tmp-seo/02-老模板蜘蛛日志观察交接文档-2026-04-16.md) +- 日志到代码映射: + [1272](/www/wwwroot/VideoSource2/docs/old-tmp-seo/03-老模板蜘蛛日志与代码映射交接文档-2026-04-16.md) +- `2026-04-17` 日志更新: + [1273](/www/wwwroot/VideoSource2/docs/old-tmp-seo/04-老模板蜘蛛日志观察更新-2026-04-17.md) +- `404 -> 444` 代码判断: + [1274](/www/wwwroot/VideoSource2/docs/old-tmp-seo/05-老模板蜘蛛日志变化与代码判断更新-2026-04-17.md) +- 可执行检查清单: + [1275](/www/wwwroot/VideoSource2/docs/old-tmp-seo/06-主Codex可执行检查清单-2026-04-17.md) +- 第一轮只读代码审查发现: + [1277](/www/wwwroot/VideoSource2/docs/old-tmp-seo/08-第一轮只读代码审查发现-2026-04-17.md) +- 第一批候选修正方案: + [1278](/www/wwwroot/VideoSource2/docs/old-tmp-seo/09-第一批候选修正方案-2026-04-17.md) +- 第一批修正实施方案: + [1281](/www/wwwroot/VideoSource2/docs/old-tmp-seo/12-第一批修正实施方案-2026-04-17.md) + +## 一句话交接 + +> 主线现在最值得先动的,不是删旧路由,而是统一 host 输出口径;先把模板、sitemap、RSS 不再互相打架,再看日志里的 `/|301` 和 `www/裸域` 分裂是否继续下降。 diff --git a/docs/old-tmp-seo/14-蜘蛛分析交接索引-2026-04-17.md b/docs/old-tmp-seo/14-蜘蛛分析交接索引-2026-04-17.md new file mode 100644 index 0000000..e55bb23 --- /dev/null +++ b/docs/old-tmp-seo/14-蜘蛛分析交接索引-2026-04-17.md @@ -0,0 +1,195 @@ +# 1283-SEONexus 蜘蛛分析交接索引 - 2026-04-17 + +## 目的 + +这份文档是 `2026-04-16` 到 `2026-04-17` 这轮老模板蜘蛛日志分析的总索引。 + +作用只有一个: + +- 帮主 Codex 或下一轮会话,最快找到该看的文档 + +它不是新的分析结论文档,而是阅读顺序与用途说明。 + +## 纠偏提醒 + +`2026-04-17` 晚些时候已经补了一份老模板范围纠偏文档: + +- [17-老模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/17-老模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md) + +如果你现在接手的是老模板第一阶段 SEO 分析,请先看 `1286`,因为它已经明确: + +- 当前主线是 `1001-1005` +- 也就是 `videoDadi / videoDingZhu / videoBoKu / videoLaoNiu / videoNuNu` +- `videoGpt1` 不属于这条老模板实施主线 + +## 最短阅读路径 + +如果时间很少,只看下面 3 份: + +1. [01-老模板第一阶段回灌执行文档.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/01-老模板第一阶段回灌执行文档.md) +2. [17-老模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/17-老模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md) +3. [02-老模板蜘蛛日志观察交接文档-2026-04-16.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/02-老模板蜘蛛日志观察交接文档-2026-04-16.md) + +这 3 份分别解决: + +- 老模板第一阶段的边界是什么 +- 哪些代码结论需要重新锚定到老模板 5 套 +- 当前日志现状是什么 + +## 完整阅读顺序 + +### 阶段文档 + +#### 1. 阶段目标 + +- [01-老模板第一阶段回灌执行文档.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/01-老模板第一阶段回灌执行文档.md) + +用途: + +- 定义第一阶段想看什么 +- 明确首页、robots、sitemap、canonical、分类、详情、播放这些观察目标 + +#### 2. 协作边界 + +- [1270-SEONexus-Codex多版本协作交接总文档.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/1270-SEONexus-Codex多版本协作交接总文档.md) + +用途: + +- 定义多 Codex 协作边界 +- 明确这轮旧版本主要做观察与交接,而不是自由发明实现 + +## 第一层:日志观察 + +#### 3. 首轮正式日志结论 + +- [02-老模板蜘蛛日志观察交接文档-2026-04-16.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/02-老模板蜘蛛日志观察交接文档-2026-04-16.md) + +用途: + +- 给出 `2026-04-16` 的 24 小时总览 +- 定义第一轮站点分型 + +#### 4. 第二轮日志更新 + +- [04-老模板蜘蛛日志观察更新-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/04-老模板蜘蛛日志观察更新-2026-04-17.md) + +用途: + +- 比较 `2026-04-17` 相比上一轮的变化 +- 明确 `404` 下降、`444` 上升的结构变化 + +## 第二层:日志到代码 + +#### 5. 日志现象与代码位置映射 + +- [03-老模板蜘蛛日志与代码映射交接文档-2026-04-16.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/03-老模板蜘蛛日志与代码映射交接文档-2026-04-16.md) + +用途: + +- 把日志里的 `301/404/444`、深页兼容、canonical、sitemap 现象映射到代码入口 + +#### 6. `404 -> 444` 的代码判断 + +- [05-老模板蜘蛛日志变化与代码判断更新-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/05-老模板蜘蛛日志变化与代码判断更新-2026-04-17.md) + +用途: + +- 解释为什么 `404` 下降 +- 解释为什么 `444` 上升 +- 明确 `444` 目前更像前置层噪音,而不是应用层直接返回 + +## 第三层:主 Codex 可执行清单 + +#### 7. 可执行检查清单 + +- [06-主Codex可执行检查清单-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/06-主Codex可执行检查清单-2026-04-17.md) + +用途: + +- 告诉主 Codex 先看哪些文件 +- 每个文件要回答什么问题 + +#### 8. 检查清单修正 + +- [07-主Codex检查清单补充修正-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/07-主Codex检查清单补充修正-2026-04-17.md) + +用途: + +- 修正对 `SiteStyle` 与模板 canonical 主输出关系的判断 + +## 第四层:只读代码审查发现 + +#### 9. 第一轮只读代码审查发现 + +- [08-第一轮只读代码审查发现-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/08-第一轮只读代码审查发现-2026-04-17.md) + +用途: + +- 固化最像真实问题的发现 +- 包括 host 双口径、播放页 canonical、自带兼容入口过宽等 + +## 第五层:方案与评审 + +#### 10. 第一批候选修正方案 + +- [09-第一批候选修正方案-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/09-第一批候选修正方案-2026-04-17.md) + +用途: + +- 从发现走到候选修正方向 + +#### 11. 第一批候选修正方案评审建议 + +- [10-第一批候选修正方案评审建议-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/10-第一批候选修正方案评审建议-2026-04-17.md) + +用途: + +- 说明当前更推荐的先后顺序 +- 明确为什么先统一 host,再谈其它 + +## 第六层:准备实施 + +#### 12. 第一批可落地修正设计 + +- [11-第一批可落地修正设计-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/11-第一批可落地修正设计-2026-04-17.md) + +用途: + +- 收敛成低副作用、可验证的设计边界 + +#### 13. 第一批修正实施方案 + +- [12-第一批修正实施方案-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/12-第一批修正实施方案-2026-04-17.md) + +用途: + +- 明确第一批建议改哪些文件 +- 明确每一步之后怎么验证 + +#### 14. 主 Codex 接手摘要 + +- [13-主Codex接手摘要-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/13-主Codex接手摘要-2026-04-17.md) + +用途: + +- 一页看完当前阶段 +- 快速接手 + +## 本轮本地分析材料 + +如果需要看更细的原始观察,可回到 `_analysis`: + +- [baiduspider.md](/www/wwwroot/VideoSource2/code/storage/_analysis/sources/baiduspider.md) +- [baiduspider-priority-2026-04-16.md](/www/wwwroot/VideoSource2/code/storage/_analysis/sources/baiduspider-priority-2026-04-16.md) +- [baiduspider-action-checklist-2026-04-16.md](/www/wwwroot/VideoSource2/code/storage/_analysis/sources/baiduspider-action-checklist-2026-04-16.md) +- [yagyjt.com.md](/www/wwwroot/VideoSource2/code/storage/_analysis/domains/yagyjt.com.md) +- [qf123.net.md](/www/wwwroot/VideoSource2/code/storage/_analysis/domains/qf123.net.md) +- [ningxiaowei-hosts.md](/www/wwwroot/VideoSource2/code/storage/_analysis/domains/ningxiaowei-hosts.md) +- [sctyjz.com.md](/www/wwwroot/VideoSource2/code/storage/_analysis/domains/sctyjz.com.md) +- [ap-hulan.com.md](/www/wwwroot/VideoSource2/code/storage/_analysis/domains/ap-hulan.com.md) +- [haotianhaiyuan-hymdrz-hosts.md](/www/wwwroot/VideoSource2/code/storage/_analysis/domains/haotianhaiyuan-hymdrz-hosts.md) +- [home-stable-cluster.md](/www/wwwroot/VideoSource2/code/storage/_analysis/domains/home-stable-cluster.md) + +## 一句话结论 + +> 这轮辅助分析已经从“看日志”推进到“准备实施”,主 Codex 现在最值得先接手的,不是继续补观察,而是按 `1281` 和 `1282` 进入第一批 host 输出口径统一的实现评估。 diff --git a/docs/old-tmp-seo/15-主Codex启动提示-2026-04-17.md b/docs/old-tmp-seo/15-主Codex启动提示-2026-04-17.md new file mode 100644 index 0000000..a9d4fd0 --- /dev/null +++ b/docs/old-tmp-seo/15-主Codex启动提示-2026-04-17.md @@ -0,0 +1,64 @@ +# 1284-SEONexus 主 Codex 启动提示 - 2026-04-17 + +## 用途 + +这份文档用于在主 Codex 新开会话或切回主线时,直接作为启动提示使用。 + +目标是减少重复解释成本,让主 Codex 迅速进入正确上下文。 + +## 建议直接复制给主 Codex 的话术 + +你现在接手的是 `SEONexus` 老模板蜘蛛日志这一轮的主线判断与第一批修正评估。 + +先不要从零分析,也不要先大范围改路由。 + +请按下面顺序进入: + +1. 先看 [1270-SEONexus-Codex多版本协作交接总文档.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/1270-SEONexus-Codex多版本协作交接总文档.md) +2. 再看 [13-主Codex接手摘要-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/13-主Codex接手摘要-2026-04-17.md) +3. 然后看 [12-第一批修正实施方案-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/12-第一批修正实施方案-2026-04-17.md) +4. 如需完整背景,再按 [14-蜘蛛分析交接索引-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/14-蜘蛛分析交接索引-2026-04-17.md) 的顺序回看 + +当前阶段最重要的判断不是“百度没来”,而是: + +- 首页抓取已经成立 +- 部分站点已有真实深抓 +- `404` 已较上一轮明显下降 +- 但系统内部存在 host 输出双口径,仍在持续制造 `301` + +当前最值得优先推进的第一批动作不是删兼容路由,而是统一 host 输出口径。 + +优先检查并评估第一批改动: + +- [VideoSiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/VideoSiteMapLogic.php:203) +- [SiteMapLogic.php](/www/wwwroot/VideoSource2/code/app/task/logic/SiteMapLogic.php:158) +- [videoGpt1/rss/baidu.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/rss/baidu.xml:6) +- [videoGpt1/rss/so.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/rss/so.xml:12) +- `videoGpt1` 主线模板中的 canonical / `og:url` / JSON-LD URL 输出 + +当前不建议第一批先做: + +- 大规模删历史兼容路由 +- 收紧 fallback +- 同时改 Nginx + PHP + 模板三层 host 策略 +- 先拍板播放页 canonical 回详情页 + +第一批实施后的验证重点是: + +- `/|301` 是否下降 +- `home|301` 是否下降 +- 同一 base domain 下 `www` / 裸域双命中是否下降 + +重点观察域名: + +- `yagyjt.com` +- `www.ningxiaowei.com` +- `www.haotianhaiyuan.com` +- `ctshuhua.com` +- `sctyjz.com` + +## 更短的一句话版本 + +如果只给主 Codex 一句话,就发这句: + +> 老模板蜘蛛这轮先别删旧路由,先按 `1281/1282` 统一模板、sitemap、RSS 的 host 输出口径,先压 host 级 `301`,再回看日志决定下一刀。 diff --git a/docs/old-tmp-seo/16-第一批修正验收清单-2026-04-17.md b/docs/old-tmp-seo/16-第一批修正验收清单-2026-04-17.md new file mode 100644 index 0000000..1d970cf --- /dev/null +++ b/docs/old-tmp-seo/16-第一批修正验收清单-2026-04-17.md @@ -0,0 +1,193 @@ +# 1285-SEONexus 第一批修正验收清单 - 2026-04-17 + +## 目的 + +这份文档用于配合 `1281` 的第一批修正实施方案,给主 Codex 提供一份可以直接照着执行的验收清单。 + +它适用于: + +- 第一批 host 输出口径统一前的基线记录 +- 第一批改动后的回归验证 + +## 本批次验收范围 + +本清单只针对第一批动作: + +- 模板 canonical / `og:url` / JSON-LD URL host 口径 +- sitemap host 口径 +- RSS host 口径 + +不用于验收: + +- 历史兼容路由收缩 +- fallback 策略调整 +- 播放页 canonical 政策改变 + +## 一、改动前先记录 + +### 1. 页面级记录 + +每个站至少记录以下页面: + +1. 首页 +2. 一级分类页 +3. 二级分类页 +4. 详情页 +5. 播放页 +6. `robots.txt` +7. `sitemap_index.xml` +8. 一份视频 sitemap +9. RSS + +### 2. 记录字段 + +每个页面至少记录: + +- 最终访问 URL +- 返回状态码 +- 是否发生跳转 +- canonical +- `og:url` +- JSON-LD 中的主要 `url` +- 页面源码中是否出现 `https://www.` +- 页面源码中是否出现 `https://裸域` + +## 二、改动后必须检查的页面 + +### A. 模板页面 + +优先抽查: + +- 首页 +- 分类页 +- 详情页 +- 播放页 + +### B. 数据输出页面 + +优先抽查: + +- `sitemap_index.xml` +- `sitemap-videos-1.xml` +- RSS `baidu.xml` +- RSS `so.xml` + +## 三、页面级通过标准 + +### 1. 首页 + +通过标准: + +- canonical host 与设计目标一致 +- `og:url` host 与 canonical 一致 +- 不应再出现与 sitemap 完全相反的 host 口径 + +### 2. 分类页 + +通过标准: + +- canonical host 一致 +- `og:url` host 一致 +- 若存在 JSON-LD,URL host 一致 + +### 3. 详情页 + +通过标准: + +- canonical host 一致 +- `og:url` host 一致 +- JSON-LD `url` host 一致 + +### 4. 播放页 + +通过标准: + +- `robots = noindex,follow` 维持不变 +- canonical host 一致 +- 不在本批次里要求改变 canonical 指向对象 + +### 5. sitemap + +通过标准: + +- 列出的 URL host 与模板 canonical 设计口径一致 +- 不应继续一部分用 `www`、一部分用裸域 + +### 6. RSS + +通过标准: + +- 频道级 ``、`generator`、正文 `` host 一致 +- 不应继续出现频道级 `www`、正文级裸域的混搭 + +## 四、日志级验收指标 + +### 1. 第一优先级指标 + +重点比较改动前后 24 小时: + +- `/|301` +- `home|301` +- 同一 base domain 的 `www` / 裸域双命中 + +### 2. 第二优先级指标 + +继续观察: + +- `detail|301` +- `play|301` + +说明: + +- 这两项不一定会在第一批立即大幅下降 +- 但如果 host 统一生效,通常应先看到部分改善 + +### 3. 暂不作为第一批成败判断的指标 + +- `444` +- `fallback` 命中情况 +- `category` 扩散 + +这些指标可以观察,但不作为第一批的主判定。 + +## 五、重点观察域名 + +第一批建议固定盯这些域名: + +- `yagyjt.com` +- `www.ningxiaowei.com` +- `www.haotianhaiyuan.com` +- `ctshuhua.com` +- `sctyjz.com` + +原因: + +- 这些域名最能体现 host 分裂、首页 `301`、深页样本差异 + +## 六、风险提示 + +如果出现以下情况,说明第一批改动需要立即复盘: + +1. `404` 明显上升 +2. `sitemap` 或 RSS 无法访问 +3. canonical 丢失 +4. 首页和详情页 canonical host 不一致 +5. `/|301` 不降反升 + +## 七、建议记录格式 + +每次验收至少留一份简表,字段建议如下: + +- 域名 +- 页面类型 +- 访问 URL +- 状态码 +- 跳转后 URL +- canonical +- `og:url` +- JSON-LD URL +- 备注 + +## 一句话说明 + +> 第一批修正的验收重点不是“所有 SEO 指标都立刻变好”,而是先确认模板、sitemap、RSS 在 host 维度不再互相冲突,然后观察 `/|301` 和 `www/裸域` 双命中是否下降。 diff --git a/docs/old-tmp-seo/17-老模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md b/docs/old-tmp-seo/17-老模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md new file mode 100644 index 0000000..6b6c102 --- /dev/null +++ b/docs/old-tmp-seo/17-老模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md @@ -0,0 +1,341 @@ +# 1286-SEONexus 老模板 5 套蜘蛛日志纠偏与 SEO 提示 - 2026-04-17 + +## 目的 + +这份文档只做一件事: + +- 把 `2026-04-16` 到 `2026-04-17` 这轮蜘蛛日志分析,重新锚定回 `1269` 定义的老模板 5 套主线 + +它是对前面一串分析文档的纠偏补充,不是否定全部历史结论。 + +保留有效的部分: + +- `baiduspider` 日志观察 +- `301 / 404 / 444` 的结构判断 +- host 规范化、深页规范化、错误入口消耗预算这些大方向 + +需要重新解释的部分: + +- 任何把 `videoGpt1` 当成当前实施主线的代码映射 +- 任何默认以 GPT 新模板结构作为老模板修正入口的判断 + +## 一、先把范围钉死 + +`1269` 已经写得很明确: + +- 老模板共 5 套 +- 域名会随机绑定其中一套模板 +- 当前不准备把 `videoGpt1` 的整套结构层直接迁过去 + +代码里真实映射已经确认: + +- `1001 = videoDadi` +- `1002 = videoDingZhu` +- `1003 = videoBoKu` +- `1004 = videoLaoNiu` +- `1005 = videoNuNu` + +来源: + +- [01-老模板第一阶段回灌执行文档.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/01-老模板第一阶段回灌执行文档.md) +- [viewTemplate.php](/www/wwwroot/VideoSource2/code/public/initdata/video/viewTemplate.php:6) +- [TemplateSeeder.php](/www/wwwroot/VideoSource2/code/database/seeders/TemplateSeeder.php:58) + +同时确认: + +- `1007 = videoGpt1` + +所以这轮老模板蜘蛛日志分析,后续都应只围绕: + +- `videoDadi` +- `videoDingZhu` +- `videoBoKu` +- `videoLaoNiu` +- `videoNuNu` + +## 二、哪些历史结论仍然有效 + +下面这些日志判断,即使不绑定 `videoGpt1`,仍然成立: + +### 1. `404` 已明显下降 + +从现有观察链看,`2026-04-17` 相比 `2026-04-16`: + +- `404` 明显下降 +- 一部分历史错误入口不再持续高频命中 + +这说明第一阶段回灌后的老模板链路,至少已经在“硬 404 止血”上开始起作用。 + +### 2. `444` 上升更像前置层噪音 + +当前仓库内没有明显应用层主动返回 `444` 的主线证据。 + +所以现阶段更稳的解释仍然是: + +- `444` 更像 nginx / WAF / 安全规则对探测型路径的拦截 +- 还不能直接解释成“老模板 SEO 主路径坏了” + +### 3. `301` 仍是当前最值得盯的主损耗 + +无论从总览还是单站样本看,最像持续消耗抓取预算的,仍然是: + +- 首页 `/|301` +- `home|301` +- 深页 `detail|301` +- 深页 `play|301` +- 以及 host 分裂带来的 `www / 裸域` 规范化跳转 + +### 4. `yagyjt.com` 仍是最重要的深抓样本 + +这类站的意义仍然没变: + +- 不是“有没有深抓” +- 而是“已经深抓了,但深页 `301` 接近 `200`,预算被跳转吃掉了” + +这条判断仍然适合作为老模板第一优先级样本。 + +## 三、老模板 5 套的真实代码共性 + +这 5 套老模板不是“没有 SEO 基础”,而是“基础已存在,但口径没完全统一”。 + +当前已确认的共性如下。 + +### 1. 都有 `robots / sitemap / detail / play` 现成模板 + +5 套模板目录都包含: + +- `sitemap/robots.txt` +- `sitemap/sitemap_index.xml` +- `sitemap/sitemap-main.xml` +- `video/getVideoInfo.html` +- `video/getVideoPlayUrl.html` +- `video/getCategory.html` +- `video/getCategoryType.html` + +这说明: + +- 第一阶段确实应该直接改模板公共代码 +- 不需要先走后台逐站编辑 + +### 2. `robots.txt` 统一指向裸域 `sitemap_index.xml` + +例如: + +- [videoDadi/sitemap/robots.txt](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/sitemap/robots.txt:38) +- [videoDingZhu/sitemap/robots.txt](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/sitemap/robots.txt:38) +- [videoBoKu/sitemap/robots.txt](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/sitemap/robots.txt:38) +- [videoLaoNiu/sitemap/robots.txt](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/sitemap/robots.txt:38) +- [videoNuNu/sitemap/robots.txt](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/sitemap/robots.txt:38) + +当前写法统一是: + +- `Sitemap: https://{$DomainModel->d_domain}/sitemap_index.xml` + +### 3. footer 也统一暴露了 `rss/baidu.xml` 和 `sitemap_index.xml` + +例如: + +- [videoDadi/public/footer.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/public/footer.html:19) +- [videoDingZhu/public/footer.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/public/footer.html:36) +- [videoBoKu/public/footer.html](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/public/footer.html:41) +- [videoLaoNiu/public/footer.html](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/public/footer.html:16) +- [videoNuNu/public/footer.html](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/public/footer.html:14) + +这部分说明: + +- 老模板并不是完全缺少抓取入口 +- 当前更像“入口已暴露,但规范口径不够统一” + +### 4. 详情页 canonical 基本是正常的 + +例如: + +- [videoDadi/video/getVideoInfo.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getVideoInfo.html:79) +- [videoDingZhu/video/getVideoInfo.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getVideoInfo.html:79) +- [videoBoKu/video/getVideoInfo.html](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getVideoInfo.html:80) +- [videoLaoNiu/video/getVideoInfo.html](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getVideoInfo.html:79) +- [videoNuNu/video/getVideoInfo.html](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getVideoInfo.html:79) + +共同特征: + +- canonical 指向详情页自身 +- `og:url` 也基本跟详情页 URL 走 + +### 5. 播放页 canonical 已指向播放页,但 `og:url / JSON-LD url` 仍常指详情页 + +例如: + +- [videoDadi/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getVideoPlayUrl.html:46) +- [videoDadi/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getVideoPlayUrl.html:59) +- [videoBoKu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getVideoPlayUrl.html:46) +- [videoBoKu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getVideoPlayUrl.html:59) +- [videoLaoNiu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getVideoPlayUrl.html:46) +- [videoLaoNiu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getVideoPlayUrl.html:59) +- [videoNuNu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getVideoPlayUrl.html:46) +- [videoNuNu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getVideoPlayUrl.html:59) + +这说明老模板播放页存在一个很典型的“半收口”现象: + +- canonical 试图指向播放页 +- 但 `og:url` 和 JSON-LD `url` 仍可能输出详情页地址 + +这很容易继续制造: + +- 播放页规范信号分裂 +- `play|301` +- 播放页收录不稳定 + +### 6. 分类页 `getCategoryType` 的 `og:url / CollectionPage.url` 明显偏向首页 + +例如: + +- [videoDadi/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getCategoryType.html:19) +- [videoDadi/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getCategoryType.html:46) +- [videoDingZhu/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getCategoryType.html:19) +- [videoBoKu/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getCategoryType.html:19) +- [videoLaoNiu/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getCategoryType.html:19) +- [videoNuNu/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getCategoryType.html:19) + +当前共同特征是: + +- `og:url = https://{$DomainModel->d_domain}` +- `CollectionPage.url = https://{$DomainModel->d_domain}` +- `BreadcrumbList` 才带分类真实地址 + +这说明分类首页页型存在明显规范化信号不一致: + +- 页面实际是分类页 +- 但社交与结构化主 URL 却更像首页 + +这会影响: + +- `category` 页型独立识别 +- 分类页聚合页规范信号 +- 首页与分类页之间的抓取优先级判断 + +### 7. sitemap 与页面主输出存在 `www / 裸域` 双口径风险 + +当前已确认至少有一条老模板共性: + +- `robots.txt` 输出的是裸域 `https://{$DomainModel->d_domain}/sitemap_index.xml` +- 但某些 sitemap 页面内部却在吐 `https://www.{$DomainModel->d_domain}/...` + +例如: + +- [videoDadi/sitemap/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/sitemap/sitemap-main.xml:4) + +这一类双口径如果在 5 套里普遍存在,就会直接对应日志里的: + +- `/|301` +- `home|301` +- 深页命中后再规范化一次 + +## 四、给主 Codex 的老模板专用 SEO 提示 + +下面这组提示,应替代“去看 GPT 模板链路”的旧方向。 + +### 1. 第一优先级不是换骨架,而是统一规范口径 + +老模板第一阶段最值得做的不是大改页面结构,而是统一三种口径: + +- 页面 head 口径 +- sitemap / rss 口径 +- 站内主要链接口径 + +只要这三条不统一,百度即使已经深抓,也会继续把预算消耗在 `301` 上。 + +### 2. 先统一 host,再统一页型 URL + +优先顺序建议固定成: + +1. 先统一 `www / 裸域` +2. 再统一分类页规范 URL +3. 再统一播放页 `canonical / og:url / JSON-LD url` + +原因很简单: + +- host 级 `301` 影响首页、分类、详情、播放全链路 +- 分类页是“从首页到深页”的中间层 +- 播放页规范化是深抓之后的放量优化 + +### 3. 分类页是当前最容易被忽略、但很值得补的一刀 + +现在最容易跑偏的地方是: + +- 看见详情页 canonical 基本正常 +- 就误以为老模板规范化已经差不多了 + +但实际从代码看,分类页 `getCategoryType` 仍然把自己往首页信号上靠。 + +这会导致: + +- 百度更难把分类页当成独立聚合入口 +- `category` 命中量放不起来 +- 首页承担过多入口压力 + +所以对老模板来说,分类页规范化不是附属项,而是主项。 + +### 4. 播放页要看“三件套”,不要只看 canonical + +老模板播放页判断是否真正收口,必须一起看: + +- canonical +- `og:url` +- JSON-LD `url` + +只看 canonical 不够,因为: + +- canonical 对了 +- 但 `og:url` / 结构化还指详情页 + +这仍会继续制造播放页信号分裂。 + +### 5. `404` 已降,不要急着删旧兼容入口 + +根据目前观察: + +- 旧入口兼容链路很可能还在帮我们把一部分历史深链从 `404` 兜成 `301 -> 200` + +因此老模板第一阶段更稳的做法仍然是: + +- 先统一规范输出 +- 先压非必要 `301` +- 暂不激进删除旧 deep link 兼容 + +否则很容易把当前已止血的部分重新打回 `404`。 + +## 五、对前面文档链的使用说明 + +从 `1271` 到 `1274`: + +- 日志观察部分仍然可继续用 +- 但代码映射要以本文件为准重新理解 + +从 `1275` 到 `1285`: + +- 凡是明显把 `videoGpt1` 当成老模板主入口的段落 +- 都不应继续作为老模板第一实施主线 + +更稳的接手方式是: + +1. 先看 [01-老模板第一阶段回灌执行文档.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/01-老模板第一阶段回灌执行文档.md) +2. 再看本文件 +3. 再回头使用 `1271 / 1273 / 1274` 的日志现象结论 +4. 主 Codex 后续如果要继续写实施方案,应只围绕 `1001-1005` 的 5 套模板 + +## 六、下一步最推荐的检查顺序 + +如果主 Codex 现在继续老模板 SEO 分析,建议只按下面顺序: + +1. 检查 5 套模板里 `robots.txt / sitemap_index.xml / sitemap-main.xml / rss/baidu.xml` 的 host 输出是否一致 +2. 检查 5 套模板里 `getCategoryType.html` 的 `og:url / CollectionPage.url` 是否都该改成分类真实 URL +3. 检查 5 套模板里 `getVideoPlayUrl.html` 的 `og:url / JSON-LD url` 是否都应改成播放页真实 URL +4. 再结合下一轮 `baiduspider` 日志看: + - `/|301` 是否继续下降 + - `home|301` 是否继续下降 + - `detail|301 / play|301` 是否开始分离下降 + - `category` 命中是否开始上来 + +## 一句话交接 + +> 老模板这条线当前真正要优化的不是 `videoGpt1`,而是 `1001-1005` 这 5 套老模板自身的规范化输出一致性;现阶段最值得盯的是 host 口径、分类页 URL 信号、播放页三件套,以及它们对 `301` 损耗的影响。 diff --git a/docs/old-tmp-seo/18-老模板站群7天SEO冲量执行方案-2026-04-17.md b/docs/old-tmp-seo/18-老模板站群7天SEO冲量执行方案-2026-04-17.md new file mode 100644 index 0000000..2aa327f --- /dev/null +++ b/docs/old-tmp-seo/18-老模板站群7天SEO冲量执行方案-2026-04-17.md @@ -0,0 +1,344 @@ +# 1287-SEONexus 老模板站群 7 天 SEO 冲量执行方案 - 2026-04-17 + +## 目标 + +这份文档面向当前这一批老模板站群域名。 + +目标不是空泛地说“做 SEO”,而是把目标明确成: + +- 每天都能看到日志层进步 +- 7 天内让这批域名的百度抓取质量明显提升 +- 让部分核心词、站名词、内容词开始更稳定地上首页或靠近首页 + +先说结论: + +> 可以把这批老模板域名往“7 天明显进步”方向推进,但不能把“全部域名 7 天稳定上首页”当成可承诺结果。 + +更现实也更专业的目标是: + +1. 7 天内让抓取预算浪费显著下降 +2. 7 天内让首页、分类页、详情页、播放页的规范化明显收口 +3. 7 天内让深抓样本域名出现更稳定的 `detail|200 / play|200` +4. 7 天内争取让一批品牌词、长尾词、影片词出现首页曝光 + +## 一、当前真实阶段判断 + +结合现有日志,这批老模板站群不是“百度还没来”。 + +当前更像是: + +- 百度已经进首页 +- 部分站已经能碰到详情页和播放页 +- 但预算仍被大量 `301 / 404 / 444 / 错误入口` 消耗 + +所以这批域名要上量,不是先去幻想“大改版马上起飞”,而是先做这 3 件事: + +1. 把百度已经来的流量先接稳 +2. 把百度已经抓到的入口变得更直达 +3. 把错误入口和重复规范化损耗压下去 + +## 二、先把最终目标拆成 3 类 + +### 1. 基础目标 + +这是所有域名都必须追的: + +- 首页尽量直达 `200` +- `robots / sitemap / rss / canonical` 统一 +- `www / 裸域` 只留一个规范口径 + +### 2. 放量目标 + +这是已有深抓信号的域名优先追的: + +- `detail|301` 降 +- `play|301` 降 +- `detail|200` 稳 +- `play|200` 升 + +### 3. 排名目标 + +这是结果层,不是第一天就能硬造出来的: + +- 站名词更稳定进入首页 +- 长尾片名词开始拿到首页曝光 +- 分类聚合词开始从无到有 + +## 三、当前域名应分 3 组推进 + +### A 组:深抓已成立,优先保放量 + +当前代表: + +- `yagyjt.com` + +补充候选: + +- 有 `detail|200` +- 有 `play|200` +- 同时又有明显 `detail|301 / play|301` 的域名 + +这一组的核心目标不是“让百度来”,而是: + +- 让已经来的百度少跳转 +- 让详情页、播放页变成更直接的收录入口 + +### B 组:首页已起,但规范化没收口 + +当前代表: + +- `www.ningxiaowei.com` +- `www.ap-hulan.com` +- `haotianhaiyuan.com / www.haotianhaiyuan.com` +- `hymdrz.com / www.hymdrz.com` +- `sctyjz.com / www.sctyjz.com` + +这一组的目标是: + +- 首页更直达 +- 分类页更独立 +- host 更统一 + +### C 组:错误入口吞预算,先止损 + +当前代表: + +- `qf123.net` + +这一组先不谈“上首页来量”,而是先谈: + +- 停止错误入口吞预算 +- 让百度重新把注意力放回真实内容页 + +## 四、每天要看的不是“感觉”,而是这 8 个指标 + +后续每天复盘都建议固定只看下面 8 项: + +1. `home|200` +2. `home|301` +3. `category|200` +4. `detail|200` +5. `detail|301` +6. `play|200` +7. `play|301` +8. `other|404` + +外加两个附加观察: + +- `/|301` +- `www / 裸域` 是否双命中 + +## 五、7 天节奏建议 + +### Day 1:先统一目标域名和样本域名 + +当天必须做完: + +- 从当前几十个域名里,先挑出 10 个重点域名 +- 其中至少: + - 2 个 A 组 + - 5 个 B 组 + - 3 个 C 组 + +当天验收: + +- 每个重点域名都要有日志基线 +- 每个重点域名都要标记所属模板 +- 每个重点域名都要明确当前规范 host + +如果 Day 1 连这些都没有定死,后面 6 天只会越做越乱。 + +### Day 2:先压首页层损耗 + +核心目标: + +- 首页 `301` 明显下降 +- `/|301` 明显下降 + +重点检查: + +- `www / 非 www` +- `http / https` +- 模板 head 输出 +- sitemap、rss、footer 暴露入口是否统一到同一 host + +当天验收: + +- 重点域名首页规范地址统一 +- 非规范首页跳转链减少 + +### Day 3:修分类页规范化 + +当前老模板很值得优先补的一刀,就是分类页。 + +核心目标: + +- `category|200` 开始增加 +- 分类页不再把自己输出成首页信号 + +重点检查: + +- `getCategoryType.html` +- `og:url` +- `CollectionPage.url` +- Breadcrumb 与页面主 URL 是否一致 + +当天验收: + +- 分类页 URL 信号收口 +- 分类页开始具备独立聚合页身份 + +### Day 4:修详情页和播放页规范信号 + +核心目标: + +- `detail|301` 降 +- `play|301` 降 + +重点检查: + +- `getVideoInfo.html` +- `getVideoPlayUrl.html` +- canonical +- `og:url` +- JSON-LD `url` + +当天验收: + +- 播放页不再只靠 canonical 单点收口 +- 播放页三件套开始一致 + +### Day 5:清错误入口和历史噪音 + +核心目标: + +- `other|404` 降 +- 百度不再把预算花在垃圾入口上 + +重点对象: + +- `webuploader` +- `upload` +- `fileupload` +- `admin.php` +- `zb_system` +- `showchengshi.asp` +- 各类历史模板残留路径 + +当天验收: + +- 高频错误路径数量收缩 +- `qf123.net` 这类域名开始止血 + +### Day 6:做站内放量 + +这是前 5 天基础收口后,才值得做的放量动作。 + +核心目标: + +- 让百度更容易从首页进入分类页、详情页、播放页 + +重点动作: + +- 首页聚合入口更清晰 +- footer 与页面底部的 sitemap 暴露更一致 +- 核心分类入口更稳定 +- 详情页到播放页的站内链更直接 + +当天验收: + +- `category|200`、`detail|200`、`play|200` 至少有部分域名开始上升 + +### Day 7:复盘与冲首页观察 + +第 7 天不能只看日志,要同时看两层结果: + +1. 百度蜘蛛日志结果 +2. 百度搜索结果页表现 + +要重点看: + +- 站名词是否更稳定首页 +- 片名长尾词是否开始首页曝光 +- 分类词是否开始被百度识别 + +## 六、什么叫“每天有进步” + +不是只有“排名上首页”才算进步。 + +对当前这批老模板域名来说,下面这些都算真实进步: + +### 第 1 类:抓取质量进步 + +- `/|301` 下降 +- `home|301` 下降 +- `other|404` 下降 + +### 第 2 类:结构信号进步 + +- `category|200` 从无到有 +- `detail|301` 下降 +- `play|301` 下降 + +### 第 3 类:放量进步 + +- `detail|200` 增加 +- `play|200` 增加 +- 同一站点的 `www / 裸域` 分裂减少 + +### 第 4 类:搜索表现进步 + +- 品牌词更稳 +- 长尾词开始出结果 +- 首页与详情页开始分工更清楚 + +## 七、关于“7 天上首页”的真实预期 + +这件事必须说实话。 + +### 可以争取的 + +7 天内比较有机会看到的是: + +- 站名词首页稳定 +- 某些长尾片名词首页出现 +- 深抓正样本域名的详情页、播放页更容易被看到 + +### 不该乱承诺的 + +不应该直接承诺: + +- 几十个域名全部首页稳定 +- 大量竞争词 7 天全部冲上首页 +- 只靠模板修正就立刻爆发 + +原因不是悲观,而是搜索引擎就不是按“开发日程”线性出结果的。 + +真正能稳住结果的,是: + +- 连续 7 天都在减少损耗 +- 连续 7 天都在强化规范化 +- 连续 7 天都在提升百度对内容层的识别 + +## 八、给主 Codex 的执行原则 + +如果后续主 Codex 要按这条线继续做,建议遵守 5 条: + +1. 先做老模板 5 套公共口径统一,不做逐站手工修补 +2. 先压 `301 / 404`,再谈“内容放量” +3. 先保 A 组深抓样本,再修 B 组,再止损 C 组 +4. 每天都要回看日志,不凭感觉判断 SEO 是否变好 +5. 每天最多只推一到两类核心修正,避免同时动太多导致无法归因 + +## 九、当前最值得先推进的 4 个方向 + +结合现有代码和日志,后续第一批最值得推进的是: + +1. 老模板 5 套统一 `www / 裸域 / http / https` 输出口径 +2. 老模板 5 套统一 `robots / sitemap / rss / footer` 暴露口径 +3. 老模板 5 套修正分类页 `getCategoryType.html` 的主 URL 信号 +4. 老模板 5 套修正播放页 `canonical / og:url / JSON-LD url` 三件套一致性 + +## 一句话交接 + +> 这批老模板站群如果想 7 天内见到量,不是先赌“全部域名直接上首页”,而是先把百度已经来的抓取预算接稳、把规范化跳转压下去、把分类与深页信号做直达;只要这条线每天都在进步,7 天后就有机会从“有抓取”走到“有首页曝光、有内容来量”。 diff --git a/docs/old-tmp-seo/19-老模板站群Day1重点域名基线板-2026-04-17.md b/docs/old-tmp-seo/19-老模板站群Day1重点域名基线板-2026-04-17.md new file mode 100644 index 0000000..96e9c71 --- /dev/null +++ b/docs/old-tmp-seo/19-老模板站群Day1重点域名基线板-2026-04-17.md @@ -0,0 +1,259 @@ +# 1288-SEONexus 老模板站群 Day1 重点域名基线板 - 2026-04-17 + +## 目的 + +这份文档用于承接老模板站群 7 天冲量方案的 Day 1。 + +作用只有一个: + +- 先把当前真正值得盯的重点域名池定下来 + +如果这一步不先做,后面每天的“继续”就会变成: + +- 一会儿看这个域名 +- 一会儿看那个域名 +- 最后没有任何一组样本能连续跟踪 7 天 + +## 一、当前选样原则 + +这次重点域名不按“拍脑袋喜欢哪个域名”选,而按 4 个标准来定: + +1. 最近 run 里确实被蜘蛛命中过 +2. 尽量覆盖不同问题类型 +3. 优先覆盖已经出现百度信号的域名 +4. 同时保留少量明显止损样本 + +## 二、Day 1 第一版重点域名池 + +当前先定 12 个,够用但不至于太散。 + +### A 组:深抓放量样本 + +1. `yagyjt.com` +2. `www.ningxiaowei.com` +3. `ningxiaowei.com` + +这组意义: + +- 已有较强百度信号 +- 适合观察深抓、host 规范化、内容层 URL 收口 + +### B 组:首页与规范化样本 + +4. `sctyjz.com` +5. `www.sctyjz.com` +6. `www.ap-hulan.com` +7. `hymdrz.com` +8. `www.hymdrz.com` + +这组意义: + +- 首页层有信号 +- 但 `www / 裸域`、首页入口、路径规范化仍值得重点盯 + +### C 组:扩展观察样本 + +9. `ctshuhua.com` +10. `hygfbw.com` +11. `syzhzs.com` +12. `yahuawang88.com` + +这组意义: + +- 已在最近 run 中被蜘蛛命中 +- 适合观察这批“非头部样本域名”是否也能随着老模板公共修正一起改善 + +## 三、暂时不放进第一批重点池的域名 + +下面这些域名当前也在 run 中出现过,但 Day 1 先不作为主战样本: + +- `tvwallmountreview.com` +- `www.tvwallmountreview.com` +- `xcgruister.com` +- `www.xcgruister.com` +- `zsxd2020.com` +- `www.zsxd2020.com` +- `qingyejianshe.com` +- `ruantishafa.com` +- `yqshu8.com` + +原因不是它们不重要,而是: + +- 目前样本量还偏少 +- 或者当前日志里更多是 `robots / 444 / 低频 home` +- 先放在第二观察圈更稳 + +## 四、当前每组域名最主要的问题 + +### `yagyjt.com` + +定位: + +- 当前第一优先级深抓样本 + +主问题: + +- 深页 `301` 仍高 +- 内容入口预算被跳转吃掉 + +主目标: + +- 保住 `detail|200 / play|200` +- 压 `detail|301 / play|301` + +### `ningxiaowei.com / www.ningxiaowei.com` + +定位: + +- 首页已起量 +- host 与内容路径规范化样本 + +主问题: + +- `www / 裸域` 分裂 +- `other|301` 明显 + +主目标: + +- 统一规范 host +- 减少非首页入口跳转 + +### `sctyjz.com / www.sctyjz.com` + +定位: + +- 首页层和错误入口混合样本 + +主问题: + +- 首页不够直达 +- 噪音路径还在抢预算 + +主目标: + +- 压 `/|301` +- 压错误入口 + +### `www.ap-hulan.com` + +定位: + +- 首页层可观测样本 + +主问题: + +- 首页仍有规范化损耗 + +主目标: + +- 让首页尽量直达最终 `200` + +### `hymdrz.com / www.hymdrz.com` + +定位: + +- host 规范收敛样本 + +主问题: + +- 双 host 需要明确哪边是规范主域 + +主目标: + +- 收敛 `www / 裸域` + +### `ctshuhua.com / hygfbw.com / syzhzs.com / yahuawang88.com` + +定位: + +- 扩展样本池 + +主问题: + +- 当前量级不高 +- 但已经被百度命中,值得观察是否能一起被老模板公共优化带起来 + +主目标: + +- 看公共修正是否能同步抬升首页与分类信号 + +## 五、Day 1 要固定的 10 个观察指标 + +从今天开始,这 12 个域名每天都尽量只看下面 10 项: + +1. `home|200` +2. `home|301` +3. `robots` +4. `sitemap` +5. `category|200` +6. `detail|200` +7. `detail|301` +8. `play|200` +9. `play|301` +10. `other|404` + +附加观察: + +- `/|301` +- `www / 裸域` 是否双命中 +- 是否开始出现更多真实内容路径 + +## 六、结合百度搜索引擎的优化方向 + +这里说的“结合百度搜索引擎”,不是去做空泛口号,而是结合当前百度真实抓取行为来优化: + +### 1. 百度已经在试探入口层 + +从现有日志看: + +- 首页 +- `robots.txt` +- `sitemap` +- 旧内容路径 + +这些都已经被实际访问。 + +这说明当前最重要的是: + +- 给百度一个更稳定、更低损耗的最终入口 + +### 2. 百度对聚合页和深页的判断,强依赖 URL 信号是否一致 + +所以老模板当前要特别重视: + +- canonical +- `og:url` +- JSON-LD `url` +- sitemap 中的 URL +- 站内真实跳转 URL + +这些信号只要互相打架,百度就更容易: + +- 先抓到 +- 再跳转 +- 再犹豫是否把这个页当成最终页 + +### 3. 百度比“页面好不好看”更先看“入口稳不稳” + +对这批老模板域名来说,短期内真正影响来量的优先级更像: + +1. 能不能稳定抓到 +2. 抓到后是不是直达 `200` +3. 分类页和深页是不是能被识别成独立页型 +4. 之后才是内容质量和词覆盖继续放大 + +## 七、Day 1 之后的直接动作 + +从这份基线板往下走,后面最值得先推进的顺序是: + +1. 先修 12 个重点域名对应的老模板公共规范口径 +2. 优先盯 `A 组 + B 组` +3. 每天记录一次是否出现: + - `home|301` 下降 + - `category|200` 上升 + - `detail|301 / play|301` 下降 + - `detail|200 / play|200` 上升 + +## 一句话交接 + +> 这 12 个域名就是当前老模板站群 7 天冲量的 Day 1 样本池,后面每天的 SEO 推进、日志复盘、效果判断,都应该优先围绕这批域名来做,而不是继续散点式看全站群。 diff --git a/docs/old-tmp-seo/20-老模板第一批SEO高收益修正清单-2026-04-17.md b/docs/old-tmp-seo/20-老模板第一批SEO高收益修正清单-2026-04-17.md new file mode 100644 index 0000000..9b2f7b4 --- /dev/null +++ b/docs/old-tmp-seo/20-老模板第一批SEO高收益修正清单-2026-04-17.md @@ -0,0 +1,262 @@ +# 1289-SEONexus 老模板第一批 SEO 高收益修正清单 - 2026-04-17 + +## 目的 + +这份文档只回答一个问题: + +- 老模板 5 套里,第一批最值得先改、而且最可能在 7 天内看到收益的 SEO 点,到底是什么 + +这里不再泛泛而谈,而是直接基于代码共性给出优先级。 + +适用范围只限: + +- `1001 = videoDadi` +- `1002 = videoDingZhu` +- `1003 = videoBoKu` +- `1004 = videoLaoNiu` +- `1005 = videoNuNu` + +## 总判断 + +当前老模板站群如果想在短期内更快看到百度放量,第一批最值得动的不是视觉结构,而是下面 3 条公共信号链: + +1. 分类页主 URL 信号 +2. 播放页主 URL 信号 +3. sitemap host 口径 + +这 3 条之所以优先级最高,是因为它们同时影响: + +- 百度是否把页面识别成独立页型 +- 百度是否先抓到再跳转 +- 百度是否持续把预算浪费在规范化上 + +## 一、第一优先级:修分类页主 URL 信号 + +### 当前问题 + +5 套老模板的 `getCategoryType.html` 当前都存在同样的问题: + +- `og:url` 指向首页 +- `CollectionPage.url` 指向首页 +- 但 `BreadcrumbList` 却带分类真实 URL + +这会形成一个非常糟糕的混合信号: + +- 页面内容是分类页 +- 页面标题和 H1 也是分类页 +- 但页面主 URL 信号又像首页 + +### 直接影响 + +这会削弱百度对分类页的判断,典型影响包括: + +- 分类页不容易被识别成独立聚合页 +- `category|200` 起量慢 +- 首页承担过多聚合入口角色 +- 首页与分类页之间可能互相稀释 + +### 受影响文件 + +- [videoDadi/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getCategoryType.html:19) +- [videoDingZhu/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getCategoryType.html:19) +- [videoBoKu/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getCategoryType.html:19) +- [videoLaoNiu/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getCategoryType.html:19) +- [videoNuNu/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getCategoryType.html:19) + +以及对应的结构化数据位置: + +- [videoDadi/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getCategoryType.html:46) +- [videoDingZhu/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getCategoryType.html:46) +- [videoBoKu/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getCategoryType.html:46) +- [videoLaoNiu/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getCategoryType.html:46) +- [videoNuNu/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getCategoryType.html:46) + +### 建议修正方向 + +统一原则: + +- 分类页的 `og:url` 应指向当前分类页真实 URL +- `CollectionPage.url` 应指向当前分类页真实 URL +- 最好补上分类页 canonical,进一步收口 + +### 预期收益 + +这条修正最容易带来的短期收益是: + +- `category|200` 更容易开始出现 +- 分类页独立识别增强 +- 首页不再过度承载所有聚合信号 + +## 二、第二优先级:修播放页三件套一致性 + +### 当前问题 + +5 套老模板的 `getVideoPlayUrl.html` 当前共同表现是: + +- canonical 指向播放页 +- 但 `og:url` 指向详情页 +- JSON-LD 里的 `url` 也指向详情页 + +这是一种非常典型的“半收口”状态。 + +### 直接影响 + +这会导致播放页在百度看来信号分裂: + +- 页面本身是播放页 +- canonical 说“我是播放页” +- 但 `og:url` 和结构化又在说“我是详情页” + +这种信号分裂最容易造成: + +- `play|301` 长期偏高 +- 播放页不容易稳定成为最终页 +- 详情页和播放页之间相互争夺规范身份 + +### 受影响文件 + +- [videoDadi/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getVideoPlayUrl.html:41) +- [videoDingZhu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getVideoPlayUrl.html:41) +- [videoBoKu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getVideoPlayUrl.html:41) +- [videoLaoNiu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getVideoPlayUrl.html:41) +- [videoNuNu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getVideoPlayUrl.html:41) + +canonical 位置: + +- [videoDadi/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getVideoPlayUrl.html:54) +- [videoDingZhu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getVideoPlayUrl.html:55) +- [videoBoKu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getVideoPlayUrl.html:55) +- [videoLaoNiu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getVideoPlayUrl.html:55) +- [videoNuNu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getVideoPlayUrl.html:55) + +JSON-LD `url` 位置: + +- [videoDadi/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getVideoPlayUrl.html:68) +- [videoDingZhu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getVideoPlayUrl.html:69) +- [videoBoKu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getVideoPlayUrl.html:69) +- [videoLaoNiu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getVideoPlayUrl.html:70) +- [videoNuNu/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getVideoPlayUrl.html:70) + +### 建议修正方向 + +统一原则: + +- 播放页 canonical、`og:url`、JSON-LD `url` 三者全部指向播放页真实 URL + +### 预期收益 + +这条修正最容易带来的短期收益是: + +- `play|301` 更容易下降 +- 播放页更容易被百度稳定识别 +- 深抓样本域名更容易把播放页转成有效入口 + +## 三、第三优先级:统一 sitemap host 口径 + +### 当前问题 + +5 套老模板当前共同特征是: + +- `robots.txt` 指向裸域 `https://{$DomainModel->d_domain}/sitemap_index.xml` +- 但 `sitemap-main.xml` 内部却使用 `https://www.{$DomainModel->d_domain}` + +更关键的是,`sitemap-main.xml` 里当前还是一组很不合理的输出: + +- 既用了 `www` +- 又用了 `novel:category / site:nflurl` + +这说明这份 sitemap 文件至少存在“视频站复用小说逻辑”的强疑点。 + +### 直接影响 + +这类问题会造成: + +- sitemap 自己就在制造 host 级 `301` +- 首页和聚合页入口口径不统一 +- 百度从 sitemap 进入的路径可能不是最终规范页 + +### 受影响文件 + +- [videoDadi/sitemap/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/sitemap/sitemap-main.xml:4) +- [videoDingZhu/sitemap/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/sitemap/sitemap-main.xml:4) +- [videoBoKu/sitemap/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/sitemap/sitemap-main.xml:4) +- [videoLaoNiu/sitemap/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/sitemap/sitemap-main.xml:4) +- [videoNuNu/sitemap/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/sitemap/sitemap-main.xml:4) + +同时要对照: + +- [videoDadi/sitemap/robots.txt](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/sitemap/robots.txt:38) +- [videoDingZhu/sitemap/robots.txt](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/sitemap/robots.txt:38) +- [videoBoKu/sitemap/robots.txt](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/sitemap/robots.txt:38) +- [videoLaoNiu/sitemap/robots.txt](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/sitemap/robots.txt:38) +- [videoNuNu/sitemap/robots.txt](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/sitemap/robots.txt:38) + +### 建议修正方向 + +统一原则: + +- sitemap 中的 host 必须与页面主输出一致 +- 如果规范主域是裸域,就不要在 sitemap 里继续吐 `www` +- 同时要复核 `sitemap-main.xml` 是否本身就写错了页型逻辑 + +### 预期收益 + +这条修正最容易带来的短期收益是: + +- `/|301` 和 host 级 `301` 更容易下降 +- sitemap 对百度更有正向价值 +- 首页和聚合入口更加统一 + +## 四、为什么这 3 条比别的更优先 + +因为它们满足 4 个条件: + +1. 5 套老模板都有共性问题 +2. 不需要逐站后台编辑 +3. 改一处能影响一批域名 +4. 更容易在 7 天窗口内看到日志变化 + +相比之下,像下面这些动作当前都应该后置: + +- 首页 UI 大改 +- 列表模块大重构 +- 逐站重写标题库 +- 逐站改内容文本 + +不是这些不重要,而是它们不适合当前“先把百度抓取效率和规范化收口拉起来”的阶段。 + +## 五、建议的第一批实施顺序 + +如果主 Codex 现在开始真正落代码,顺序建议固定成: + +1. 先修 `getCategoryType.html` +2. 再修 `getVideoPlayUrl.html` +3. 再修 `sitemap-main.xml` + +原因: + +- 分类页修正最可能带来 `category` 页型收益 +- 播放页修正最可能带来 `play|301` 收敛 +- sitemap 修正最可能带来首页与 host 规范化收益 + +## 六、这批修正完成后要看什么 + +修完后,最值得连续看 3 天到 7 天的指标是: + +1. `/|301` 是否下降 +2. `home|301` 是否下降 +3. `category|200` 是否从无到有或持续增加 +4. `detail|301` 是否下降 +5. `play|301` 是否下降 +6. `detail|200 / play|200` 是否稳住或上升 + +重点样本优先看: + +- `yagyjt.com` +- `ningxiaowei.com / www.ningxiaowei.com` +- `sctyjz.com / www.sctyjz.com` +- `www.ap-hulan.com` + +## 一句话结论 + +> 老模板第一批最该动的,不是页面大改,而是分类页 URL 信号、播放页三件套、sitemap host 口径;这 3 刀是当前最可能在短期内直接减少抓取损耗、提升百度识别效率、并给排名放量创造条件的高收益修正点。 diff --git a/docs/old-tmp-seo/21-老模板实施安全边界与GPT隔离说明-2026-04-17.md b/docs/old-tmp-seo/21-老模板实施安全边界与GPT隔离说明-2026-04-17.md new file mode 100644 index 0000000..7721668 --- /dev/null +++ b/docs/old-tmp-seo/21-老模板实施安全边界与GPT隔离说明-2026-04-17.md @@ -0,0 +1,152 @@ +# 1290-SEONexus 老模板实施安全边界与 GPT 隔离说明 - 2026-04-17 + +## 目的 + +这份文档用于明确两件事: + +1. 老模板第一批 SEO 修正,具体应该改哪些文件 +2. 为什么这些改动可以与 `videoGpt1` 隔离,不会直接误伤 GPT 模板 + +## 一、当前边界结论 + +老模板第一批建议改动范围,只限下面 5 套目录: + +- `code/app/home/view/videoDadi` +- `code/app/home/view/videoDingZhu` +- `code/app/home/view/videoBoKu` +- `code/app/home/view/videoLaoNiu` +- `code/app/home/view/videoNuNu` + +`videoGpt1` 是单独目录: + +- `code/app/home/view/videoGpt1` + +因此只要后续改动严格限制在老模板 5 套目录内,物理上就不会直接修改到 `videoGpt1` 模板文件。 + +## 二、第一批建议改动文件清单 + +每套老模板当前建议只动 4 个文件: + +1. `video/getCategoryType.html` +2. `video/getVideoPlayUrl.html` +3. `sitemap/sitemap-main.xml` +4. `sitemap/robots.txt` + +总计: + +- 5 套模板 x 4 个文件 = 20 个文件 + +这就是当前最稳的第一批实施边界。 + +## 三、为什么这批改动不会直接碰到 GPT 模板 + +### 1. 文件不共享 + +老模板和 GPT 模板虽然文件名类似,但文件路径不同。 + +例如: + +- 老模板: + - [videoDadi/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getCategoryType.html:1) + - [videoDingZhu/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getCategoryType.html:1) +- GPT 模板: + - [videoGpt1/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:1) + +这不是同一个文件的不同分支,而是完全独立的模板文件。 + +### 2. GPT 模板当前本身已经有更正确的写法 + +例如 `videoGpt1` 分类页: + +- [videoGpt1/video/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:14) + +当前已经是: + +- canonical 指向分类页真实 URL +- `og:url` 指向分类页真实 URL +- `CollectionPage.url` 指向分类页真实 URL + +这恰好说明: + +- 老模板要修的是自己的旧写法 +- 不是去改 GPT 模板的现有逻辑 + +### 3. GPT 模板播放页也有独立实现 + +例如: + +- [videoGpt1/video/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:1) + +GPT 模板播放页已经接了自己的: + +- `seoCopy` +- breadcrumb 构造 +- `VideoService` 调用链 + +因此老模板这次第一批修正,没有必要也不应该去碰 GPT 模板播放页。 + +## 四、目前真正需要注意的风险,不在模板文件本身 + +虽然模板文件可隔离,但仍有两类风险需要提醒主 Codex: + +### 1. 如果去改共享底层服务,就可能波及 GPT + +例如这类底层: + +- `SiteContext` +- `VideoService` +- 通用 taglib / helper +- 路由层 + +如果后续修正不是停留在模板输出,而是去改这些共享服务,那就有可能影响 `videoGpt1`。 + +所以当前建议是: + +- 第一批先只改模板层 +- 不先动共享服务层 + +### 2. sitemap 问题看起来可能是全模板共性 + +这次复核时还确认了: + +- `videoGpt1/sitemap/sitemap-main.xml` 也有与老模板类似的 `www + novel` 可疑写法 + +例如: + +- [videoGpt1/sitemap/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/sitemap/sitemap-main.xml:4) + +但这不代表这次应该顺手一起改 GPT。 + +更稳的做法是: + +- 先把老模板线独立处理 +- GPT 那边单独开任务、单独验证 + +## 五、第一批实施时的安全规则 + +主 Codex 如果开始动代码,建议固定遵守下面 5 条: + +1. 只改 `videoDadi / videoDingZhu / videoBoKu / videoLaoNiu / videoNuNu` +2. 第一批只改 `getCategoryType / getVideoPlayUrl / sitemap-main / robots.txt` +3. 不碰 `videoGpt1` 目录 +4. 不先碰 `VideoService / SiteContext / router` 这类共享底层 +5. 每改完一类文件,就先做老模板样本验证,再决定是否继续 + +## 六、最稳的实施顺序 + +从安全性和 SEO 收益一起看,最稳顺序是: + +1. 先改 5 套 `getCategoryType.html` +2. 再改 5 套 `getVideoPlayUrl.html` +3. 再改 5 套 `sitemap/sitemap-main.xml` +4. 最后复核 5 套 `robots.txt` + +这样做的好处是: + +- 改动集中 +- 影响面可控 +- 每一步都容易归因 + +## 一句话结论 + +> 当前老模板第一批 SEO 修正可以和 `videoGpt1` 明确隔离,最安全的落地边界就是只动老模板 5 套目录下那 20 个模板文件;只要不下沉去改共享服务层,就不会直接影响 GPT 模板。 diff --git a/docs/old-tmp-seo/22-老模板第一批实施任务单与验收矩阵-2026-04-17.md b/docs/old-tmp-seo/22-老模板第一批实施任务单与验收矩阵-2026-04-17.md new file mode 100644 index 0000000..e613f48 --- /dev/null +++ b/docs/old-tmp-seo/22-老模板第一批实施任务单与验收矩阵-2026-04-17.md @@ -0,0 +1,321 @@ +# 1291-SEONexus 老模板第一批实施任务单与验收矩阵 - 2026-04-17 + +## 目的 + +这份文档把当前老模板第一批 SEO 修正,从“分析结论”继续推进到“可直接施工”的层级。 + +它回答 4 个问题: + +1. 具体改哪些文件 +2. 每个文件改什么 +3. 改完先看哪些域名 +4. 怎么判断这批改动是有效还是无效 + +## 一、第一批实施范围 + +本批次只处理老模板 5 套: + +- `videoDadi` +- `videoDingZhu` +- `videoBoKu` +- `videoLaoNiu` +- `videoNuNu` + +只改下面 3 类文件: + +1. `video/getCategoryType.html` +2. `video/getVideoPlayUrl.html` +3. `sitemap/sitemap-main.xml` + +`robots.txt` 这次先只复核,不作为第一刀主改动。 + +原因: + +- 当前 `robots.txt` 已经统一指向裸域 `sitemap_index.xml` +- 真正更急的矛盾出在分类页、播放页、sitemap-main 的输出口径 + +## 二、任务 1:修分类页 `getCategoryType.html` + +### 目标 + +让分类页从“看起来像首页”变成“明确就是分类页”。 + +### 当前问题 + +5 套模板都存在: + +- `og:url = https://{$DomainModel->d_domain}` +- `CollectionPage.url = https://{$DomainModel->d_domain}` + +对应位置: + +- `videoDadi`: + - [getCategoryType.html:19](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getCategoryType.html:19) + - [getCategoryType.html:48](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getCategoryType.html:48) +- `videoDingZhu`: + - [getCategoryType.html:19](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getCategoryType.html:19) + - [getCategoryType.html:48](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getCategoryType.html:48) +- `videoBoKu`: + - [getCategoryType.html:19](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getCategoryType.html:19) + - [getCategoryType.html:48](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getCategoryType.html:48) +- `videoLaoNiu`: + - [getCategoryType.html:19](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getCategoryType.html:19) + - [getCategoryType.html:48](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getCategoryType.html:48) +- `videoNuNu`: + - [getCategoryType.html:19](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getCategoryType.html:19) + - [getCategoryType.html:48](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getCategoryType.html:48) + +### 建议改法 + +统一增加一个分类页真实 URL 变量,然后三处统一引用: + +1. canonical +2. `og:url` +3. `CollectionPage.url` + +建议目标写法参考 `videoGpt1`: + +- [videoGpt1/getCategoryType.html:14](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:14) +- [videoGpt1/getCategoryType.html:18](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:18) +- [videoGpt1/getCategoryType.html:42](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:42) + +### 预期效果 + +最值得观察的不是“页面能打开”,而是: + +- `category|200` 是否开始增加 +- 首页和分类页的规范信号是否不再打架 + +### 重点验收域名 + +- `ningxiaowei.com / www.ningxiaowei.com` +- `sctyjz.com / www.sctyjz.com` +- `www.ap-hulan.com` + +## 三、任务 2:修播放页 `getVideoPlayUrl.html` + +### 目标 + +让播放页三件套一致: + +- canonical +- `og:url` +- JSON-LD `url` + +### 当前问题 + +5 套模板共同表现是: + +- canonical 指向播放页 +- `og:url` 指向详情页 +- JSON-LD `url` 指向详情页 + +对应位置: + +- `videoDadi`: + - [getVideoPlayUrl.html:46](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getVideoPlayUrl.html:46) + - [getVideoPlayUrl.html:58](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getVideoPlayUrl.html:58) + - [getVideoPlayUrl.html:71](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getVideoPlayUrl.html:71) +- `videoDingZhu`: + - [getVideoPlayUrl.html:46](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getVideoPlayUrl.html:46) + - [getVideoPlayUrl.html:59](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getVideoPlayUrl.html:59) + - [getVideoPlayUrl.html:72](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getVideoPlayUrl.html:72) +- `videoBoKu`: + - [getVideoPlayUrl.html:46](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getVideoPlayUrl.html:46) + - [getVideoPlayUrl.html:59](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getVideoPlayUrl.html:59) + - [getVideoPlayUrl.html:72](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getVideoPlayUrl.html:72) +- `videoLaoNiu`: + - [getVideoPlayUrl.html:46](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getVideoPlayUrl.html:46) + - [getVideoPlayUrl.html:59](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getVideoPlayUrl.html:59) + - [getVideoPlayUrl.html:73](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getVideoPlayUrl.html:73) +- `videoNuNu`: + - [getVideoPlayUrl.html:46](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getVideoPlayUrl.html:46) + - [getVideoPlayUrl.html:59](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getVideoPlayUrl.html:59) + - [getVideoPlayUrl.html:73](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getVideoPlayUrl.html:73) + +### 建议改法 + +统一定义播放页真实 URL,并让: + +1. canonical 指向它 +2. `og:url` 指向它 +3. JSON-LD `url` 指向它 + +注意: + +- 不要只修 canonical +- 只修 canonical 不足以解决百度对播放页的规范判断 + +### 预期效果 + +最值得观察的是: + +- `play|301` 是否下降 +- `play|200` 是否更稳 + +### 重点验收域名 + +- `yagyjt.com` +- `ningxiaowei.com / www.ningxiaowei.com` + +## 四、任务 3:修 `sitemap-main.xml` + +### 目标 + +让 sitemap 自己不再制造 host 混乱和错误页型。 + +### 当前问题 + +5 套模板共同存在: + +- 使用 `https://www.{$DomainModel->d_domain}` +- 使用 `novel:category` +- 使用 `site:nflurl` + +对应位置: + +- `videoDadi`: + - [sitemap-main.xml:4](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/sitemap/sitemap-main.xml:4) + - [sitemap-main.xml:18](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/sitemap/sitemap-main.xml:18) + - [sitemap-main.xml:24](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/sitemap/sitemap-main.xml:24) +- `videoDingZhu`: + - [sitemap-main.xml:4](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/sitemap/sitemap-main.xml:4) + - [sitemap-main.xml:18](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/sitemap/sitemap-main.xml:18) + - [sitemap-main.xml:24](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/sitemap/sitemap-main.xml:24) +- `videoBoKu`: + - [sitemap-main.xml:4](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/sitemap/sitemap-main.xml:4) + - [sitemap-main.xml:18](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/sitemap/sitemap-main.xml:18) + - [sitemap-main.xml:24](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/sitemap/sitemap-main.xml:24) +- `videoLaoNiu`: + - [sitemap-main.xml:4](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/sitemap/sitemap-main.xml:4) + - [sitemap-main.xml:18](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/sitemap/sitemap-main.xml:18) + - [sitemap-main.xml:24](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/sitemap/sitemap-main.xml:24) +- `videoNuNu`: + - [sitemap-main.xml:4](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/sitemap/sitemap-main.xml:4) + - [sitemap-main.xml:18](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/sitemap/sitemap-main.xml:18) + - [sitemap-main.xml:24](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/sitemap/sitemap-main.xml:24) + +### 建议改法 + +第一批不要求把 sitemap 一次做成最终完美版,但至少要先做到: + +1. host 口径与当前模板主输出一致 +2. 不再继续输出明显像小说站的路径 +3. 首页和主要聚合入口不再强制走 `www` + +如果主 Codex 发现 `sitemap-main.xml` 当前其实线上没有被主路由使用,也不要直接忽略。 + +因为只要它还可能被 `sitemap_index.xml` 引用或被蜘蛛命中,它就仍然会制造噪音。 + +### 预期效果 + +最值得观察的是: + +- `/|301` 是否下降 +- `home|301` 是否下降 +- host 级分裂是否减轻 + +### 重点验收域名 + +- `sctyjz.com / www.sctyjz.com` +- `www.ap-hulan.com` +- `hymdrz.com / www.hymdrz.com` + +## 五、本批次先不主改 `robots.txt` + +### 当前结论 + +5 套 `robots.txt` 当前至少有两点是统一的: + +- 允许主搜索爬虫 +- sitemap 已指向裸域 `https://{$DomainModel->d_domain}/sitemap_index.xml` + +位置: + +- [videoDadi/robots.txt:38](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/sitemap/robots.txt:38) +- [videoDingZhu/robots.txt:38](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/sitemap/robots.txt:38) +- [videoBoKu/robots.txt:38](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/sitemap/robots.txt:38) +- [videoLaoNiu/robots.txt:38](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/sitemap/robots.txt:38) +- [videoNuNu/robots.txt:38](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/sitemap/robots.txt:38) + +### 当前建议 + +本批次先不优先修改 `robots.txt`,除非主 Codex 复核时发现: + +- `robots.txt` 与真实 sitemap 路由不一致 +- 或 `robots.txt` 的 AI 爬虫屏蔽策略影响到了实际搜索引擎主抓取 + +## 六、推荐实施顺序 + +最稳顺序: + +1. 先改 5 套 `getCategoryType.html` +2. 再改 5 套 `getVideoPlayUrl.html` +3. 最后改 5 套 `sitemap-main.xml` + +原因: + +- 分类页修正对聚合层收益最大 +- 播放页修正对深抓层收益最大 +- sitemap 修正对整体 host 规范化收益最大 + +## 七、实施后验收矩阵 + +### 第 1 轮:页面级验收 + +分类页验收: + +- 页面能正常打开 +- canonical 指向分类页自己 +- `og:url` 指向分类页自己 +- `CollectionPage.url` 指向分类页自己 + +播放页验收: + +- 页面能正常打开 +- canonical 指向播放页自己 +- `og:url` 指向播放页自己 +- JSON-LD `url` 指向播放页自己 + +sitemap 验收: + +- `sitemap-main.xml` 返回正常 +- 输出 host 与页面主输出口径一致 +- 不再出现明显小说站路径 + +### 第 2 轮:日志级验收 + +实施后连续看 3 天: + +1. `/|301` 是否下降 +2. `home|301` 是否下降 +3. `category|200` 是否增加 +4. `play|301` 是否下降 +5. `play|200` 是否稳住或增加 + +### 第 3 轮:搜索表现验收 + +实施后 3 到 7 天,重点看: + +- 站名词是否更稳定 +- 分类词是否开始出现首页或前两页曝光 +- 片名长尾和播放词是否更容易命中播放页 + +## 八、失败信号 + +如果实施后出现下面任一情况,要立刻回看: + +1. `404` 突然增加 +2. `detail|200 / play|200` 明显掉量 +3. `category` 信号没有上升,反而首页抓取下降 +4. sitemap 输出开始异常 + +这通常说明: + +- URL 收口写错了 +- 页面真实路由和模板输出不一致 +- 或者把原本的兼容链路误伤了 + +## 一句话交接 + +> 老模板第一批施工,最稳的做法就是先改 15 个文件:5 套分类页、5 套播放页、5 套 sitemap-main;按“分类页先收口、播放页再收口、sitemap 最后收口”的顺序推进,边改边看重点域名日志,避免一次性大改失去归因。 diff --git a/docs/old-tmp-seo/23-老模板逐文件改动蓝图-2026-04-17.md b/docs/old-tmp-seo/23-老模板逐文件改动蓝图-2026-04-17.md new file mode 100644 index 0000000..17d2c74 --- /dev/null +++ b/docs/old-tmp-seo/23-老模板逐文件改动蓝图-2026-04-17.md @@ -0,0 +1,337 @@ +# 1292-SEONexus 老模板逐文件改动蓝图 - 2026-04-17 + +## 目的 + +这份文档不是再讲“为什么要改”,而是给主 Codex 一个几乎可以直接照着写 patch 的蓝图。 + +使用方式: + +1. 先看 [21-老模板实施安全边界与GPT隔离说明-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/21-老模板实施安全边界与GPT隔离说明-2026-04-17.md) +2. 再看 [22-老模板第一批实施任务单与验收矩阵-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/22-老模板第一批实施任务单与验收矩阵-2026-04-17.md) +3. 最后按本文件逐文件落 patch + +## 一、分类页 `getCategoryType.html` 改动蓝图 + +### 适用文件 + +- `videoDadi/video/getCategoryType.html` +- `videoDingZhu/video/getCategoryType.html` +- `videoBoKu/video/getCategoryType.html` +- `videoLaoNiu/video/getCategoryType.html` +- `videoNuNu/video/getCategoryType.html` + +### 当前问题 + +共同问题: + +- `og:url` 指首页 +- `CollectionPage.url` 指首页 +- 缺 canonical + +### 目标状态 + +分类页 head 里至少统一成: + +1. `canonical = 当前分类页真实 URL` +2. `og:url = 当前分类页真实 URL` +3. `CollectionPage.url = 当前分类页真实 URL` + +### 最稳参考 + +直接参考 `videoGpt1` 当前写法: + +- [videoGpt1/getCategoryType.html:15](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:15) +- [videoGpt1/getCategoryType.html:19](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:19) +- [videoGpt1/getCategoryType.html:46](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:46) + +### 建议实现结构 + +在 `head` block 最前面补一条分类页 canonical: + +```tpl + +``` + +然后把现有: + +```tpl + +``` + +统一改成: + +```tpl + +``` + +再把 JSON-LD 里的: + +```tpl +"url": "https://{$DomainModel->d_domain}", +``` + +改成: + +```tpl +"url": "https://{$DomainModel->d_domain}{site:vciurl parent_category="$Request.route.strParentCategory" /}", +``` + +### 可顺手补的项 + +如果改动很顺,也建议补: + +```tpl + +``` + +这不是当前最核心收益点,但与分类页聚合定位是一致的。 + +### 改后页面级验收 + +打开任一分类页,确认: + +1. 页面源代码出现 canonical +2. canonical 指向分类页自己 +3. `og:url` 指向分类页自己 +4. JSON-LD `CollectionPage.url` 指向分类页自己 + +## 二、播放页 `getVideoPlayUrl.html` 改动蓝图 + +### 适用文件 + +- `videoDadi/video/getVideoPlayUrl.html` +- `videoDingZhu/video/getVideoPlayUrl.html` +- `videoBoKu/video/getVideoPlayUrl.html` +- `videoLaoNiu/video/getVideoPlayUrl.html` +- `videoNuNu/video/getVideoPlayUrl.html` + +### 当前问题 + +共同问题: + +- canonical 指播放页 +- `og:url` 指详情页 +- JSON-LD `url` 指详情页 + +### 目标状态 + +播放页三件套统一: + +1. canonical 指播放页自己 +2. `og:url` 指播放页自己 +3. JSON-LD `url` 指播放页自己 + +### 最稳参考 + +参考 `videoGpt1` 播放页: + +- [videoGpt1/getVideoPlayUrl.html:117](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:117) +- [videoGpt1/getVideoPlayUrl.html:143](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:143) +- [videoGpt1/getVideoPlayUrl.html:202](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:202) + +### 建议实现结构 + +老模板现在已经有 canonical,例如: + +- [videoDadi/getVideoPlayUrl.html:58](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getVideoPlayUrl.html:58) + +第一批最稳做法不是大改数据流,而是先把现有 `site:vpurl ...` 结果复用起来。 + +如果模板表达式可读性允许,直接统一为: + +```tpl +{assign name="strPlayCanonicalUrl" value='https://`$DomainModel->d_domain`{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}' /} +``` + +如果 `assign` 混模板标签不稳,就直接把原地三处替换成同一条 `site:vpurl ...` 写法。 + +将当前: + +```tpl + +``` + +改成: + +```tpl + +``` + +将 JSON-LD 里的: + +```tpl +"url": 'https://{$DomainModel->d_domain}{site:vurl ...}', +``` + +改成: + +```tpl +"url": 'https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}', +``` + +### 当前第一批的保守策略 + +这里有一个需要主 Codex 注意的地方: + +当前老模板 canonical 写死的是: + +- `play_type="default"` +- `play_index="1"` + +这并不一定等于当前访问中的真实线路和集数。 + +所以第一批有两种路线: + +#### 路线 A:保守收口 + +目标: + +- 先让三件套一致 +- 即使先全部收口到默认播放页,也比 detail/play 信号分裂更好 + +优点: + +- 改动小 +- 风险低 +- 更快看到 `play|301` 收敛 + +#### 路线 B:精确收口 + +目标: + +- canonical / `og:url` / JSON-LD 精确指向当前播放中的真实 `play_type + play_index` + +优点: + +- 信号最准确 + +风险: + +- 老模板当前 `Request.route` 和数据链未必完全统一 +- 更容易把第一批改动做复杂 + +当前建议: + +- 第一批先走路线 A +- 第二批再考虑是否升级到路线 B + +### 改后页面级验收 + +打开任一播放页,确认: + +1. canonical 存在 +2. `og:url` 与 canonical 一致 +3. JSON-LD `url` 与 canonical 一致 + +## 三、`sitemap-main.xml` 改动蓝图 + +### 适用文件 + +- `videoDadi/sitemap/sitemap-main.xml` +- `videoDingZhu/sitemap/sitemap-main.xml` +- `videoBoKu/sitemap/sitemap-main.xml` +- `videoLaoNiu/sitemap/sitemap-main.xml` +- `videoNuNu/sitemap/sitemap-main.xml` + +### 当前问题 + +共同问题: + +1. 输出 host 带 `www` +2. 目录明明是视频站,却用了: + - `novel:category` + - `site:nflurl` + +### 第一批目标 + +第一批不追求“一步做出终极 sitemap”,先做两件事: + +1. 不继续输出明显错误的小说站 URL +2. host 口径与当前主模板输出一致 + +### 建议改法 + +#### 最保守版本 + +如果主 Codex 当前对视频站 sitemap 真实结构还没完全确认,第一批可以先把 `sitemap-main.xml` 收缩成最小正确集: + +- 首页 +- 榜单页 + +也就是保留: + +- [sitemap-main.xml:3-15](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/sitemap/sitemap-main.xml:3) + +但把: + +- [sitemap-main.xml:17-31](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/sitemap/sitemap-main.xml:17) + +这一整段小说站逻辑先移除或注释为待重建。 + +同时把: + +```xml +https://www.{$DomainModel->d_domain} +``` + +统一改成: + +```xml +https://{$DomainModel->d_domain} +``` + +#### 更积极版本 + +如果主 Codex 很快确认了视频分类页应走 `site:vciurl` 或其他视频路由,那就直接按视频分类 URL 重建分类 sitemap。 + +当前我建议第一批先别赌这一步,先走最保守版本更稳。 + +### 改后页面级验收 + +访问 `sitemap-main.xml`,确认: + +1. 返回正常 XML +2. 没有 `novel`/`nflurl` 这类错误视频站路径 +3. host 输出与页面主输出一致 + +## 四、逐文件施工顺序 + +建议主 Codex 严格按下面顺序: + +1. 五套 `getCategoryType.html` +2. 五套 `getVideoPlayUrl.html` +3. 五套 `sitemap-main.xml` + +不要交叉着零散改。 + +原因: + +- 先收聚合页 +- 再收播放页 +- 最后再收 sitemap + +这样每一步的日志变化更容易归因。 + +## 五、改动后的优先复测域名 + +### 分类页优先复测 + +- `ningxiaowei.com` +- `www.ningxiaowei.com` +- `sctyjz.com` +- `www.ap-hulan.com` + +### 播放页优先复测 + +- `yagyjt.com` +- `ningxiaowei.com` + +### sitemap 优先复测 + +- `sctyjz.com` +- `hymdrz.com` +- `www.ap-hulan.com` + +## 六、一句话交接 + +> 主 Codex 如果现在开始动老模板第一批 patch,最稳方法就是:分类页直接参考 `videoGpt1` 的分类页写法做 URL 收口;播放页先保守统一到同一条 `site:vpurl`;sitemap-main 第一批先去掉明显错误的小说逻辑并收口 host。先把信号统一,再追求更精细化。 diff --git a/docs/old-tmp-seo/24-老模板第一批施工索引页-2026-04-17.md b/docs/old-tmp-seo/24-老模板第一批施工索引页-2026-04-17.md new file mode 100644 index 0000000..d151277 --- /dev/null +++ b/docs/old-tmp-seo/24-老模板第一批施工索引页-2026-04-17.md @@ -0,0 +1,190 @@ +# 1293-SEONexus 老模板第一批施工索引页 - 2026-04-17 + +## 目的 + +这份文档是给主 Codex、后续会话、或人工接手时使用的“一页开工入口”。 + +它不重复长篇分析,只做三件事: + +1. 告诉你先看哪几份文档 +2. 告诉你第一批到底改哪 15 个文件 +3. 告诉你改完先验哪些域名和哪些指标 + +## 一、先看这 4 份就够开工 + +如果现在要正式进入老模板第一批 SEO 实施,只看下面 4 份: + +1. [21-老模板实施安全边界与GPT隔离说明-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/21-老模板实施安全边界与GPT隔离说明-2026-04-17.md) +2. [20-老模板第一批SEO高收益修正清单-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/20-老模板第一批SEO高收益修正清单-2026-04-17.md) +3. [22-老模板第一批实施任务单与验收矩阵-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/22-老模板第一批实施任务单与验收矩阵-2026-04-17.md) +4. [23-老模板逐文件改动蓝图-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/23-老模板逐文件改动蓝图-2026-04-17.md) + +它们分别解决: + +- 改动边界 +- 优先级 +- 实施顺序与验收方式 +- 逐文件改法 + +## 二、第一批只改这 15 个文件 + +本批次不扩散,不自由发挥,只改下面 15 个文件。 + +### 1. 分类页 5 个 + +- [videoDadi/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getCategoryType.html:15) +- [videoDingZhu/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getCategoryType.html:15) +- [videoBoKu/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getCategoryType.html:15) +- [videoLaoNiu/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getCategoryType.html:15) +- [videoNuNu/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getCategoryType.html:15) + +### 2. 播放页 5 个 + +- [videoDadi/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getVideoPlayUrl.html:22) +- [videoDingZhu/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getVideoPlayUrl.html:22) +- [videoBoKu/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getVideoPlayUrl.html:22) +- [videoLaoNiu/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getVideoPlayUrl.html:22) +- [videoNuNu/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getVideoPlayUrl.html:22) + +### 3. sitemap-main 5 个 + +- [videoDadi/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/sitemap/sitemap-main.xml:1) +- [videoDingZhu/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/sitemap/sitemap-main.xml:1) +- [videoBoKu/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/sitemap/sitemap-main.xml:1) +- [videoLaoNiu/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/sitemap/sitemap-main.xml:1) +- [videoNuNu/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/sitemap/sitemap-main.xml:1) + +## 三、这 15 个文件分别要做什么 + +### 分类页 5 个 + +统一目标: + +- 增加 canonical +- 把 `og:url` 从首页改成分类页真实 URL +- 把 `CollectionPage.url` 从首页改成分类页真实 URL + +参考模板: + +- [videoGpt1/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:13) + +### 播放页 5 个 + +统一目标: + +- canonical、`og:url`、JSON-LD `url` 三件套全部统一到播放页 URL + +当前策略: + +- 第一批先采用保守收口方案 +- 不追求一步做到“当前线路当前集数完全精确” +- 先让信号一致,先压 `play|301` + +参考模板: + +- [videoGpt1/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:113) + +### sitemap-main 5 个 + +统一目标: + +- 先把 `www` 口径收掉 +- 先把明显错误的 `novel:category / site:nflurl` 逻辑去掉 +- 第一批先收缩为最小正确集,不急着一步重建完美视频 sitemap + +## 四、推荐施工顺序 + +施工顺序不要乱,固定按这三段: + +1. 先改 5 个分类页 +2. 再改 5 个播放页 +3. 最后改 5 个 sitemap-main + +理由: + +- 分类页收益最容易扩散到站群 +- 播放页收益最容易体现在深抓 +- sitemap 最后改,更方便归因首页与 host 变化 + +## 五、每一段改完先验什么 + +### 改完分类页后 + +先验页面: + +- 分类页源代码里有没有 canonical +- canonical 是否是分类页真实 URL +- `og:url` 是否是分类页真实 URL +- `CollectionPage.url` 是否是分类页真实 URL + +先验域名: + +- `ningxiaowei.com` +- `www.ningxiaowei.com` +- `sctyjz.com` +- `www.ap-hulan.com` + +### 改完播放页后 + +先验页面: + +- canonical 是否存在 +- `og:url` 是否与 canonical 一致 +- JSON-LD `url` 是否与 canonical 一致 + +先验域名: + +- `yagyjt.com` +- `ningxiaowei.com` + +### 改完 sitemap-main 后 + +先验页面: + +- XML 是否正常 +- host 是否与模板主输出一致 +- 是否还残留 `novel`/`nflurl` 逻辑 + +先验域名: + +- `sctyjz.com` +- `hymdrz.com` +- `www.ap-hulan.com` + +## 六、日志里优先看这 6 个指标 + +第一批改完,不要贪多,每天先盯这 6 项: + +1. `/|301` +2. `home|301` +3. `category|200` +4. `play|301` +5. `play|200` +6. `other|404` + +如果这 6 个指标开始朝对的方向走,说明第一批动作在起作用。 + +## 七、失败时先查什么 + +如果改完后日志没改善,或者反而变差,优先回查: + +1. 分类页 canonical 是否写错成首页 +2. 播放页三件套是否仍然一半详情页一半播放页 +3. sitemap-main 是否还在输出错误 host +4. 是否误伤了老模板原本还能承接旧 deep link 的链路 + +## 八、明确不做的事 + +第一批不要顺手做下面这些: + +- 不改 `videoGpt1` +- 不改共享底层服务 +- 不做首页大改版 +- 不做逐站后台手工 SEO +- 不做内容文案大规模回灌 + +不是这些不重要,而是它们不属于当前第一批“高收益、低扩散、易归因”的实施范围。 + +## 一句话交接 + +> 如果现在主 Codex 要正式开工,直接从这 15 个文件开始,按“分类页 5 个 -> 播放页 5 个 -> sitemap-main 5 个”的顺序施工,改完立刻按重点域名和 6 个核心日志指标复测,不要扩散到 GPT 模板和共享底层。 diff --git a/docs/old-tmp-seo/25-老模板分类页Patch模板-2026-04-17.md b/docs/old-tmp-seo/25-老模板分类页Patch模板-2026-04-17.md new file mode 100644 index 0000000..86e6c3b --- /dev/null +++ b/docs/old-tmp-seo/25-老模板分类页Patch模板-2026-04-17.md @@ -0,0 +1,181 @@ +# 1294-SEONexus 老模板分类页 Patch 模板 - 2026-04-17 + +## 目的 + +这份文档专门服务第一批 5 个分类页文件。 + +它不是分析文档,而是一份“主 Codex 可直接照着写 patch”的模板说明。 + +适用文件: + +- `videoDadi/video/getCategoryType.html` +- `videoDingZhu/video/getCategoryType.html` +- `videoBoKu/video/getCategoryType.html` +- `videoLaoNiu/video/getCategoryType.html` +- `videoNuNu/video/getCategoryType.html` + +## 一、这 5 个文件当前共同问题 + +共同点几乎完全一致: + +1. 缺少 canonical +2. `og:url` 指向首页 +3. `CollectionPage.url` 指向首页 + +对应当前老模板写法: + +```tpl + +``` + +以及: + +```tpl +"url": "https://{$DomainModel->d_domain}", +``` + +## 二、目标状态 + +统一收口成: + +1. `meta name="robots" content="index,follow"` +2. canonical 指向当前分类页真实 URL +3. `og:url` 指向当前分类页真实 URL +4. `CollectionPage.url` 指向当前分类页真实 URL + +最稳参考来源: + +- [videoGpt1/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:13) + +## 三、推荐 patch 思路 + +### 第一步:在 `head` block 顶部补两行 + +在: + +```tpl +{block name="head"} +``` + +后面直接补: + +```tpl + + +``` + +### 第二步:替换 `og:url` + +把当前: + +```tpl + +``` + +替换为: + +```tpl + +``` + +### 第三步:替换 JSON-LD 的 `CollectionPage.url` + +把当前: + +```tpl +"url": "https://{$DomainModel->d_domain}", +``` + +替换为: + +```tpl +"url": "https://{$DomainModel->d_domain}{site:vciurl parent_category="$Request.route.strParentCategory" /}", +``` + +## 四、推荐的统一替换结果 + +如果主 Codex 想直接对照最终形态,`head` block 开头应该接近下面这样: + +```tpl +{block name="head"} + + + + + + + +``` + +对应 JSON-LD 开头应接近: + +```tpl +{ + "@context": "https://schema.org", + "@type": "CollectionPage", + "name": "{$DomainModel->d_name} - 最新{site:getval code="strVideoParentCategoryName" /}推荐", + "url": "https://{$DomainModel->d_domain}{site:vciurl parent_category="$Request.route.strParentCategory" /}", + "description": "{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}", +``` + +## 五、5 个文件的微差异提醒 + +这 5 个文件里真正需要注意的差异非常少: + +### `videoNuNu` + +它的 `ranklist` 参数写的是: + +```tpl +v_category_en="$Request.route.strParentCategory" +``` + +不是别的模板常见的: + +```tpl +v_parent_category_en="$Request.route.strParentCategory" +``` + +但这不影响本次 patch,因为我们只改: + +- canonical +- `og:url` +- `CollectionPage.url` + +### 其它 4 套 + +这 4 套在这次 patch 涉及的区域里基本是同构的,可以直接统一处理。 + +## 六、建议验收方式 + +每改完 1 个文件就做一次最小验收,不要 5 个全改完才看。 + +### 页面源代码验收 + +确认: + +1. 有 canonical +2. canonical 指向分类页自己 +3. `og:url` 指向分类页自己 +4. JSON-LD `CollectionPage.url` 指向分类页自己 + +### 域名级优先验收 + +优先看: + +- `ningxiaowei.com` +- `www.ningxiaowei.com` +- `sctyjz.com` +- `www.ap-hulan.com` + +## 七、验收后的日志观察 + +改完这 5 个分类页之后,连续看 3 天最值得盯的是: + +1. `category|200` 是否开始增加 +2. `/|301` 是否继续下降 +3. `home|301` 是否继续下降 + +## 一句话交接 + +> 老模板第一批最适合先落地的,就是这 5 个分类页 patch;它们结构接近、收益集中、风险低,而且能最快验证“分类页从首页附属信号变成独立聚合页”这条 SEO 主线是否开始生效。 diff --git a/docs/old-tmp-seo/26-老模板播放页Patch模板-2026-04-17.md b/docs/old-tmp-seo/26-老模板播放页Patch模板-2026-04-17.md new file mode 100644 index 0000000..a39438a --- /dev/null +++ b/docs/old-tmp-seo/26-老模板播放页Patch模板-2026-04-17.md @@ -0,0 +1,197 @@ +# 1295-SEONexus 老模板播放页 Patch 模板 - 2026-04-17 + +## 目的 + +这份文档专门服务第一批 5 个播放页文件。 + +它的作用和 [25-老模板分类页Patch模板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/25-老模板分类页Patch模板-2026-04-17.md) 一样: + +- 不是继续分析 +- 而是给主 Codex 一份可以直接照着写 patch 的模板 + +适用文件: + +- `videoDadi/video/getVideoPlayUrl.html` +- `videoDingZhu/video/getVideoPlayUrl.html` +- `videoBoKu/video/getVideoPlayUrl.html` +- `videoLaoNiu/video/getVideoPlayUrl.html` +- `videoNuNu/video/getVideoPlayUrl.html` + +## 一、这 5 个文件当前共同问题 + +共同问题非常一致: + +1. canonical 已经是播放页 +2. `og:url` 仍然是详情页 +3. JSON-LD `url` 仍然是详情页 + +也就是说当前是典型的: + +- 一半在说“我是播放页” +- 一半在说“我是详情页” + +这会持续制造: + +- `play|301` +- 详情页与播放页规范信号冲突 + +## 二、目标状态 + +播放页三件套全部统一: + +1. canonical 指向播放页 +2. `og:url` 指向播放页 +3. JSON-LD `url` 指向播放页 + +## 三、当前最稳策略 + +### 第一批先走保守收口 + +当前老模板 canonical 写法普遍是: + +```tpl +{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /} +``` + +这不一定是当前真实线路和真实集数,但它至少已经是“播放页路径”。 + +因此第一批最稳策略不是一步做复杂,而是: + +- 先让 `og:url` 和 JSON-LD `url` 与当前 canonical 完全一致 + +这样能最快消除 detail/play 信号分裂。 + +## 四、最稳参考 + +可以参考 `videoGpt1` 当前播放页: + +- [videoGpt1/getVideoPlayUrl.html:117](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:117) +- [videoGpt1/getVideoPlayUrl.html:143](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:143) +- [videoGpt1/getVideoPlayUrl.html:202](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:202) + +GPT 那边已经是: + +- canonical、`og:url`、JSON-LD `url` 三者完全一致 + +## 五、推荐 patch 思路 + +### 第一步:保留当前 canonical 不动 + +当前老模板 canonical 已经存在,例如: + +```tpl +{if $Request.route.intVId && $Request.route.intVForgeId} + +{/if} +``` + +第一批先不要动这段结构。 + +### 第二步:把 `og:url` 改成和 canonical 一致 + +把当前: + +```tpl + +``` + +统一替换为: + +```tpl + +``` + +### 第三步:把 JSON-LD `url` 改成和 canonical 一致 + +把当前: + +```tpl +"url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en"/}', +``` + +统一替换为: + +```tpl +"url": 'https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}', +``` + +## 六、推荐的统一替换结果 + +### 头部关键区域 + +最终应接近: + +```tpl +{if $Request.route.intVId && $Request.route.intVForgeId} + +{/if} + + +``` + +### JSON-LD 区域 + +最终应接近: + +```tpl +"url": 'https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}', +``` + +## 七、5 个文件的差异提醒 + +这 5 个文件在当前 patch 涉及区域内几乎完全同构。 + +也就是说: + +- 这组 patch 比分类页还更适合批量统一处理 + +目前没有看到会影响这次 patch 的明显结构差异。 + +## 八、为什么第一批不直接做“当前线路当前集数精确 URL” + +因为那会把这批 patch 从“稳定收口”变成“逻辑改造”。 + +第一批更稳的目标是: + +- 先把 detail/play 信号分裂压掉 +- 先让播放页内部信号统一 + +等第一批跑通之后,第二批再评估要不要升级为: + +- 根据 `Request.route.strPlayType` +- 根据 `Request.route.intPlayIndex` +- 输出当前真实播放页 URL + +## 九、建议验收方式 + +每改完 1 个文件,至少做一次页面级验收。 + +### 页面源代码验收 + +确认: + +1. canonical 仍存在 +2. `og:url` 与 canonical 完全一致 +3. JSON-LD `url` 与 canonical 完全一致 + +### 域名级优先验收 + +优先看: + +- `yagyjt.com` +- `ningxiaowei.com` + +## 十、验收后的日志观察 + +改完这 5 个播放页之后,连续看 3 天最值得盯的是: + +1. `play|301` 是否下降 +2. `play|200` 是否更稳 +3. `detail|301` 是否开始和 `play|301` 一起收敛 + +## 一句话交接 + +> 老模板第一批播放页 patch 的核心不是“做得多花”,而是先让 canonical、`og:url`、JSON-LD `url` 说同一句话;只要这 5 个播放页先统一收口,深页的百度识别成本就会明显下降。 diff --git a/docs/old-tmp-seo/27-老模板SitemapPatch模板-2026-04-17.md b/docs/old-tmp-seo/27-老模板SitemapPatch模板-2026-04-17.md new file mode 100644 index 0000000..344fb01 --- /dev/null +++ b/docs/old-tmp-seo/27-老模板SitemapPatch模板-2026-04-17.md @@ -0,0 +1,214 @@ +# 1296-SEONexus 老模板 Sitemap Patch 模板 - 2026-04-17 + +## 目的 + +这份文档专门服务第一批 5 个 `sitemap-main.xml` 文件。 + +适用文件: + +- `videoDadi/sitemap/sitemap-main.xml` +- `videoDingZhu/sitemap/sitemap-main.xml` +- `videoBoKu/sitemap/sitemap-main.xml` +- `videoLaoNiu/sitemap/sitemap-main.xml` +- `videoNuNu/sitemap/sitemap-main.xml` + +它的目标不是一步做成终极 sitemap,而是给主 Codex 一份“先止损、先收口”的 patch 模板。 + +## 一、这 5 个文件当前共同问题 + +5 套文件当前完全同构,问题也完全一致: + +1. host 使用 `https://www.{$DomainModel->d_domain}` +2. 页面逻辑明显像小说站: + - `novel:category` + - `novel:sort` + - `novel:status` + - `site:nflurl` + +这意味着当前 `sitemap-main.xml` 至少存在两层问题: + +- host 口径和页面主输出不一致 +- 页型逻辑本身很可能就不属于视频站 + +## 二、为什么第一批不建议“直接重建完整视频 sitemap” + +因为第一批当前更重要的是: + +- 先停止输出错误信号 +- 先停止 sitemap 自己制造 `www` 级跳转 + +如果现在就直接重建完整视频 sitemap,会立刻引入这些风险: + +- 需要重新确认视频分类页、榜单页、详情页到底要进哪些 +- 需要确认对应模板是否都已有稳定最终 URL +- 需要确认分页和去重策略 + +这会让第一批从“快速止损”变成“大重构”。 + +## 三、第一批最稳策略 + +### 策略名:最小正确集 + +第一批建议把 `sitemap-main.xml` 收缩成只保留: + +1. 首页 +2. 榜单首页 + +同时完成两件事: + +- 去掉 `www` +- 删除整段明显错误的小说站逻辑 + +## 四、为什么这个策略是当前最稳的 + +因为现在 `robots.txt` 已经统一指向: + +```txt +Sitemap: https://{$DomainModel->d_domain}/sitemap_index.xml +``` + +也就是说: + +- `robots.txt` 已经在告诉蜘蛛“请走裸域 sitemap” + +但 `sitemap-main.xml` 还在吐: + +```xml +https://www.{$DomainModel->d_domain} +``` + +这本身就在制造冲突。 + +所以第一批先做: + +- `robots.txt` 继续保持不动 +- `sitemap-main.xml` 收口到与它一致 + +这是最容易立刻减少内部冲突的一刀。 + +## 五、推荐 patch 思路 + +### 当前错误版本的典型结构 + +当前文件大致是: + +```xml + + https://www.{$DomainModel->d_domain}/ + ... + + + + https://www.{$DomainModel->d_domain}{$strRankUrlTemp} + ... + + +{novel:category ...} +{novel:sort ...} +{novel:status ...} + + https://www.{$DomainModel->d_domain}{site:nflurl ... /} + ... + +{/novel:status} +{/novel:sort} +{/novel:category} +``` + +### 第一批建议改成 + +保留首页和榜单页,但去掉 `www`: + +```xml + + + + https://{$DomainModel->d_domain}/ + {:date('Y-m-d')} + daily + 1.0 + + + + https://{$DomainModel->d_domain}{$strRankUrlTemp} + {:date('Y-m-d')} + daily + 1.0 + + +``` + +## 六、推荐 patch 结果的优点 + +这个“最小正确集”版本有 4 个优点: + +1. 不再输出明显错误的小说站路径 +2. 不再继续输出 `www` +3. 不需要先设计视频分类 sitemap 结构 +4. 最容易快速验证是否减少 `/|301` 和 host 级冲突 + +## 七、当前不建议在第一批做的事 + +下面这些更适合第二批: + +- 把视频分类页全部灌进 `sitemap-main.xml` +- 把详情页或播放页直接灌进 `sitemap-main.xml` +- 在 `sitemap-main.xml` 里处理复杂分页 +- 重新设计多 sitemap 分片策略 + +不是这些没价值,而是它们更适合在第一批止损之后做。 + +## 八、和 `robots.txt` 的关系 + +当前 5 套 `robots.txt` 的最后一行已经统一是: + +```txt +Sitemap: https://{$DomainModel->d_domain}/sitemap_index.xml +``` + +因此第一批 patch 的原则是: + +- 让 `sitemap-main.xml` 向 `robots.txt` 靠齐 +- 而不是反过来去改 `robots.txt` + +这也是为什么当前建议: + +- `robots.txt` 暂不主改 +- 主改 `sitemap-main.xml` + +## 九、建议验收方式 + +每改完 1 个 `sitemap-main.xml`,先做最小验收。 + +### 页面源代码验收 + +确认: + +1. XML 可以正常访问 +2. 首页 `` 是裸域,不是 `www` +3. 榜单页 `` 是裸域,不是 `www` +4. 文件里不再出现: + - `novel:category` + - `novel:sort` + - `novel:status` + - `site:nflurl` + +### 域名级优先验收 + +优先看: + +- `sctyjz.com` +- `www.ap-hulan.com` +- `hymdrz.com` + +## 十、验收后的日志观察 + +改完这 5 个 sitemap 之后,连续看 3 天最值得盯的是: + +1. `/|301` 是否下降 +2. `home|301` 是否下降 +3. host 分裂是否开始减轻 + +## 十一、一句话交接 + +> 老模板第一批 sitemap patch 的核心不是“马上做大做全”,而是先让 sitemap 不再输出明显错误的小说站路径,不再自带 `www` 级冲突;只要先把 sitemap-main 收成最小正确集,就已经是在给百度减损。 diff --git a/docs/old-tmp-seo/28-老模板第一批施工总表-2026-04-17.md b/docs/old-tmp-seo/28-老模板第一批施工总表-2026-04-17.md new file mode 100644 index 0000000..1797b08 --- /dev/null +++ b/docs/old-tmp-seo/28-老模板第一批施工总表-2026-04-17.md @@ -0,0 +1,246 @@ +# 1297-SEONexus 老模板第一批施工总表 - 2026-04-17 + +## 目的 + +这份文档是老模板第一批 SEO 实施的最终总表。 + +它把前面的: + +- [24-老模板第一批施工索引页-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/24-老模板第一批施工索引页-2026-04-17.md) +- [25-老模板分类页Patch模板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/25-老模板分类页Patch模板-2026-04-17.md) +- [26-老模板播放页Patch模板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/26-老模板播放页Patch模板-2026-04-17.md) +- [27-老模板SitemapPatch模板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/27-老模板SitemapPatch模板-2026-04-17.md) + +压缩成一张主 Codex 可以直接照着执行的表。 + +## 一、实施边界 + +这次只改老模板 5 套: + +- `videoDadi` +- `videoDingZhu` +- `videoBoKu` +- `videoLaoNiu` +- `videoNuNu` + +不碰: + +- `videoGpt1` +- `VideoService` +- `SiteContext` +- 路由层 + +## 二、第一批总任务 + +总共 15 个文件,分 3 组: + +1. 分类页 5 个 +2. 播放页 5 个 +3. sitemap-main 5 个 + +推荐施工顺序固定为: + +1. 分类页 +2. 播放页 +3. sitemap-main + +## 三、逐组施工总表 + +### A 组:分类页 5 个 + +#### 文件 + +- [videoDadi/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getCategoryType.html:15) +- [videoDingZhu/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getCategoryType.html:15) +- [videoBoKu/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getCategoryType.html:15) +- [videoLaoNiu/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getCategoryType.html:15) +- [videoNuNu/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getCategoryType.html:15) + +#### 统一改动 + +- 增加 `meta name="robots" content="index,follow"` +- 增加 canonical +- 把 `og:url` 改成分类页真实 URL +- 把 JSON-LD `CollectionPage.url` 改成分类页真实 URL + +#### 参考模板 + +- [25-老模板分类页Patch模板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/25-老模板分类页Patch模板-2026-04-17.md) +- [videoGpt1/getCategoryType.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getCategoryType.html:13) + +#### 改后先验 + +- `ningxiaowei.com` +- `www.ningxiaowei.com` +- `sctyjz.com` +- `www.ap-hulan.com` + +#### 预期日志信号 + +- `category|200` 上升 +- `/|301` 下降 +- `home|301` 下降 + +### B 组:播放页 5 个 + +#### 文件 + +- [videoDadi/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/video/getVideoPlayUrl.html:22) +- [videoDingZhu/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/video/getVideoPlayUrl.html:22) +- [videoBoKu/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/video/getVideoPlayUrl.html:22) +- [videoLaoNiu/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/video/getVideoPlayUrl.html:22) +- [videoNuNu/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/video/getVideoPlayUrl.html:22) + +#### 统一改动 + +- 保留现有 canonical 结构 +- 把 `og:url` 改成与 canonical 一致 +- 把 JSON-LD `url` 改成与 canonical 一致 + +#### 当前策略 + +- 第一批采用保守收口 +- 统一到当前已有的默认播放页 `site:vpurl` +- 不先做“当前线路当前集数”精确化 + +#### 参考模板 + +- [26-老模板播放页Patch模板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/26-老模板播放页Patch模板-2026-04-17.md) +- [videoGpt1/getVideoPlayUrl.html](/www/wwwroot/VideoSource2/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html:113) + +#### 改后先验 + +- `yagyjt.com` +- `ningxiaowei.com` + +#### 预期日志信号 + +- `play|301` 下降 +- `play|200` 更稳 + +### C 组:sitemap-main 5 个 + +#### 文件 + +- [videoDadi/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoDadi/sitemap/sitemap-main.xml:1) +- [videoDingZhu/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoDingZhu/sitemap/sitemap-main.xml:1) +- [videoBoKu/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoBoKu/sitemap/sitemap-main.xml:1) +- [videoLaoNiu/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoLaoNiu/sitemap/sitemap-main.xml:1) +- [videoNuNu/sitemap-main.xml](/www/wwwroot/VideoSource2/code/app/home/view/videoNuNu/sitemap/sitemap-main.xml:1) + +#### 统一改动 + +- 去掉 `www` +- 删除明显错误的小说站逻辑: + - `novel:category` + - `novel:sort` + - `novel:status` + - `site:nflurl` +- 第一批先收缩成“最小正确集”: + - 首页 + - 榜单首页 + +#### 为什么先这样做 + +- `robots.txt` 当前已经统一指向裸域 `sitemap_index.xml` +- 先让 `sitemap-main.xml` 和它一致 +- 先停止 sitemap 自己制造错误信号 + +#### 参考模板 + +- [27-老模板SitemapPatch模板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/27-老模板SitemapPatch模板-2026-04-17.md) + +#### 改后先验 + +- `sctyjz.com` +- `www.ap-hulan.com` +- `hymdrz.com` + +#### 预期日志信号 + +- `/|301` 下降 +- `home|301` 下降 +- host 分裂减轻 + +## 四、逐步验收顺序 + +不要 15 个文件一次全改完再看。 + +更稳的节奏是: + +### 第 1 步:先落分类页 5 个 + +先验源码: + +- canonical 是否存在 +- `og:url` 是否等于分类页 URL +- `CollectionPage.url` 是否等于分类页 URL + +再看日志: + +- `category|200` +- `/|301` +- `home|301` + +### 第 2 步:再落播放页 5 个 + +先验源码: + +- canonical 是否存在 +- `og:url` 是否和 canonical 一致 +- JSON-LD `url` 是否和 canonical 一致 + +再看日志: + +- `play|301` +- `play|200` + +### 第 3 步:最后落 sitemap-main 5 个 + +先验源码: + +- XML 是否可正常访问 +- 是否还有 `novel`/`nflurl` +- host 是否已经去掉 `www` + +再看日志: + +- `/|301` +- `home|301` +- host 分裂 + +## 五、6 个核心日志指标 + +第一批实施后,每天优先只看这 6 个: + +1. `/|301` +2. `home|301` +3. `category|200` +4. `play|301` +5. `play|200` +6. `other|404` + +## 六、失败时优先回查 + +如果改完后没有改善,或者出现倒退,先看: + +1. 分类页 canonical 是否写错 +2. 播放页三件套是否还没统一 +3. sitemap 是否仍在输出错误 host +4. 是否误伤旧 deep link 的承接能力 + +## 七、建议主 Codex 的最小执行方式 + +如果主 Codex 现在要正式开工,最小合理动作是: + +1. 先提交分类页 5 个 patch +2. 验证 +3. 再提交播放页 5 个 patch +4. 验证 +5. 再提交 sitemap-main 5 个 patch + +不要把 15 个文件混成一笔难以归因的大改。 + +## 一句话交接 + +> 老模板第一批 SEO 落地,现在最稳的执行方式就是按这张总表分三段施工:先分类页、再播放页、最后 sitemap-main;每一段都先看源码、再看重点域名、再看 6 个核心日志指标,始终保持只改老模板 5 套,不扩散到 GPT 模板和共享底层。 diff --git a/docs/old-tmp-seo/29-老模板第一批提交节奏建议-2026-04-17.md b/docs/old-tmp-seo/29-老模板第一批提交节奏建议-2026-04-17.md new file mode 100644 index 0000000..dd2ffa1 --- /dev/null +++ b/docs/old-tmp-seo/29-老模板第一批提交节奏建议-2026-04-17.md @@ -0,0 +1,224 @@ +# 1298-SEONexus 老模板第一批提交节奏建议 - 2026-04-17 + +## 目的 + +这份文档只解决一个实际问题: + +- 主 Codex 如果要正式开始落老模板第一批 SEO patch,应该怎么分提交、怎么分复测,才最稳 + +它不再补新的改动点,而是把现有 15 个目标文件拆成可执行节奏。 + +## 一、总原则 + +这批改动最怕的不是“没想法”,而是: + +- 一次改太多 +- 改完看不出哪一刀起作用 +- 如果效果不对,也不知道该回退哪一组 + +所以第一批一定要遵守: + +1. 分 3 次提交 +2. 每次提交只改一类文件 +3. 每次提交后都先看源码,再看重点域名,再看日志 + +## 二、推荐提交拆分 + +### Commit 1:分类页 5 个 + +建议范围: + +- `videoDadi/video/getCategoryType.html` +- `videoDingZhu/video/getCategoryType.html` +- `videoBoKu/video/getCategoryType.html` +- `videoLaoNiu/video/getCategoryType.html` +- `videoNuNu/video/getCategoryType.html` + +建议提交信息风格: + +- `align legacy category page canonical and url signals` + +这一笔的目标很单纯: + +- 先把分类页从“像首页”改成“就是分类页” + +#### 提交后先验 + +先验页面源代码: + +- canonical 是否存在 +- `og:url` 是否等于分类页 URL +- `CollectionPage.url` 是否等于分类页 URL + +再验重点域名: + +- `ningxiaowei.com` +- `www.ningxiaowei.com` +- `sctyjz.com` +- `www.ap-hulan.com` + +再看日志: + +- `category|200` +- `/|301` +- `home|301` + +### Commit 2:播放页 5 个 + +建议范围: + +- `videoDadi/video/getVideoPlayUrl.html` +- `videoDingZhu/video/getVideoPlayUrl.html` +- `videoBoKu/video/getVideoPlayUrl.html` +- `videoLaoNiu/video/getVideoPlayUrl.html` +- `videoNuNu/video/getVideoPlayUrl.html` + +建议提交信息风格: + +- `align legacy play page canonical og and jsonld urls` + +这一笔的目标也很单纯: + +- 先把播放页三件套说成同一句话 + +#### 提交后先验 + +先验页面源代码: + +- canonical 是否存在 +- `og:url` 是否与 canonical 一致 +- JSON-LD `url` 是否与 canonical 一致 + +再验重点域名: + +- `yagyjt.com` +- `ningxiaowei.com` + +再看日志: + +- `play|301` +- `play|200` +- `detail|301` + +### Commit 3:sitemap-main 5 个 + +建议范围: + +- `videoDadi/sitemap/sitemap-main.xml` +- `videoDingZhu/sitemap/sitemap-main.xml` +- `videoBoKu/sitemap/sitemap-main.xml` +- `videoLaoNiu/sitemap/sitemap-main.xml` +- `videoNuNu/sitemap/sitemap-main.xml` + +建议提交信息风格: + +- `shrink legacy sitemap main to minimal valid set` + +这一笔目标: + +- 先让 sitemap 不再输出错误小说逻辑 +- 先让 sitemap host 跟主输出口径一致 + +#### 提交后先验 + +先验 sitemap: + +- XML 是否正常 +- 是否还有 `novel` / `nflurl` +- host 是否还是 `www` + +再验重点域名: + +- `sctyjz.com` +- `www.ap-hulan.com` +- `hymdrz.com` + +再看日志: + +- `/|301` +- `home|301` +- host 分裂 + +## 三、每次提交后都要做的 3 层验证 + +### 1. 源码层 + +先看页面源代码,不要先看感觉: + +- canonical +- `og:url` +- JSON-LD +- sitemap XML + +### 2. 页面层 + +确认页面能正常打开,不报错,不空白,不走异常跳转。 + +### 3. 日志层 + +至少连续看 1 到 3 个窗口: + +- 是否向目标方向变化 +- 有没有明显副作用 + +## 四、建议的节奏安排 + +最稳节奏不是一口气三笔全上,而是: + +### 节奏 A:保守型 + +1. 先提 Commit 1 +2. 看半天到 1 天 +3. 确认分类页无回退 +4. 再提 Commit 2 +5. 再看半天到 1 天 +6. 再提 Commit 3 + +适合: + +- 当前正式服对波动敏感 +- 希望每一笔都能清楚归因 + +### 节奏 B:中速型 + +1. 白天提 Commit 1 +2. 晚些时候提 Commit 2 +3. 第二天再提 Commit 3 + +适合: + +- 想加快节奏 +- 但仍然保留基本归因能力 + +当前建议优先选: + +- 节奏 A + +## 五、什么情况要暂停继续提交 + +如果出现下面任一情况,不要继续往下提下一笔: + +1. 页面源代码没有按预期输出 +2. 页面打开异常 +3. `404` 明显增加 +4. `detail|200 / play|200` 明显下降 +5. `/|301` 反而明显增加 + +这时应该先停在当前提交点回看,而不是硬着头皮把下一组也推上去。 + +## 六、当前最值得固定看的 6 个日志指标 + +三笔提交都共用这 6 个核心指标: + +1. `/|301` +2. `home|301` +3. `category|200` +4. `play|301` +5. `play|200` +6. `other|404` + +这 6 个指标已经足够判断第一批是否朝正确方向走。 + +## 七、一句话交接 + +> 老模板第一批最稳的提交方式,不是把 15 个文件一把推上去,而是按“分类页 5 个 -> 播放页 5 个 -> sitemap-main 5 个”分 3 笔提交,每笔之后都先做源码、页面、日志三层验证,确认无副作用再推进下一笔。 diff --git a/docs/old-tmp-seo/30-老模板最新蜘蛛日志实战分析-2026-04-17.md b/docs/old-tmp-seo/30-老模板最新蜘蛛日志实战分析-2026-04-17.md new file mode 100644 index 0000000..131a558 --- /dev/null +++ b/docs/old-tmp-seo/30-老模板最新蜘蛛日志实战分析-2026-04-17.md @@ -0,0 +1,542 @@ +# 1299-SEONexus 老模板最新蜘蛛日志实战分析 - 2026-04-17 + +## 目的 + +这份文档只服务老模板 `1001-1005` 的 SEO 主线。 + +目标不是泛泛而谈“蜘蛛有波动”,而是把 `2026-04-17` 当前仓库内最新的 spider workbench 聚合数据,直接翻译成主 Codex 可执行的判断。 + +明确边界: + +- 只看老模板:`videoDadi / videoDingZhu / videoBoKu / videoLaoNiu / videoNuNu` +- 不把 `videoGpt1` 混进本轮结论 +- 当前重点是百度主线,同时兼看 `bytespider / sogou` + +--- + +## 一、数据来源 + +本轮结论不能只看单个 `latest` 文件,而要分两层理解: + +1. 最近一次 push 摘要 + - `code/storage/domain-spider-crawl/latest/spider-crawl.summary.json` + - `code/storage/domain-spider-crawl/latest/spider-crawl.summary.html` +2. 工作台 24h 聚合逻辑 + - `code/app/common/helper/DomainSpiderCrawlWorkbenchHelper.php` + - 通过 `buildSummary(...)` 聚合最近窗口内多次 run + +这里要特别提醒后续主 Codex: + +- `latest/spider-crawl.summary.json` 会被 `SeoCollector::saveCrawlLogs()` 每次新 push 直接覆盖 +- 它代表“最近一次 push 摘要” +- 不天然等于“最近 24h 全局聚合” + +`2026-04-17 20:30` 复核时就已经看到这个现象: + +- `latest` 文件只剩一小批最近推送数据 +- 但 workbench 24h 聚合后,老模板依然有连续深抓记录 + +所以本页正文以下结论,统一以 `WorkbenchHelper::buildSummary(..., windowHours=24, selectedBots=baiduspider,bytespider,sogou)` 为准。 + +--- + +## 二、当前全局结论 + +当前这批老模板域名,按 `2026-04-17 20:30` 的 24h 聚合视角,蜘蛛数据呈现出 4 个非常明确的信号: + +1. 已经有百度深抓样本 + - 不是“完全没抓” + - 已经出现 `detail / play` 命中 +2. 入口层仍然偏弱 + - `robots_requests = 11` + - `sitemap_requests = 2` + - `category_requests = 1` +3. 当前异常主因不是 5xx + - `500 = 0` + - 主要是 `301 / 403 / 444` +4. 当前最该处理的是“入口质量”和“旧路由信号” + - 不是把老模板误判成 GPT 模板结构问题 + +工作台聚合概览: + +- 总请求:`72` +- 域名数:`14` +- 蜘蛛数:`2` +- 首页请求:`33` +- 分类请求:`1` +- 详情请求:`21` +- 播放请求:`4` +- robots 请求:`11` +- sitemap 请求:`2` +- 状态分布: + - `200 = 34` + - `301 = 24` + - `403 = 6` + - `444 = 8` + - `500 = 0` + +这说明当前阶段不是服务整体炸了,而是: + +- 百度已经开始进部分深页 +- 但分类层和 sitemap 层仍然明显偏弱 +- 同时入口层的 `403/444` 还在反复拖累蜘蛛体验 + +--- + +## 三、已经确认属于老模板的代表域名 + +本轮已从正式库 `domain` 表确认以下域名及模板归属: + +| 域名 | t_id | 模板 | +| --- | ---: | --- | +| `proenerji.com` | `1001` | `videoDadi` | +| `qf123.net` | `1001` | `videoDadi` | +| `qingyejianshe.com` | `1002` | `videoDingZhu` | +| `tvwallmountreview.com` | `1002` | `videoDingZhu` | +| `yagyjt.com` | `1002` | `videoDingZhu` | +| `ctshuhua.com` | `1003` | `videoBoKu` | +| `ningxiaowei.com` | `1003` | `videoBoKu` | +| `yqshu8.com` | `1004` | `videoLaoNiu` | +| `syzhzs.com` | `1005` | `videoNuNu` | +| `yahuawang88.com` | `1005` | `videoNuNu` | + +所以当前 spider workbench 里这批代表站点,确实就是老模板主线,不是 GPT 模板误入。 + +--- + +## 四、最关键的 3 条判断 + +### 1. 百度已经给了 `yagyjt.com` 深抓机会 + +这是本轮最重要的正向样本。 + +工作台给出的状态: + +- host:`yagyjt.com` +- 模板:`1002 / videoDingZhu` +- 总请求:`28` +- 深页请求:`16` +- 详情请求:`12` +- 播放请求:`4` +- 首页请求:`6` +- robots 请求:`3` +- sitemap 请求:`2` +- 分类请求:`1` + +说明: + +- 百度并不是只停留在首页 +- 这个站已经被拉进 detail/play 维度 +- 同时入口层也已经开始探测 `robots / sitemap / category` +- 它应该被当成老模板第一优先样板站 + +但它同时也有明显问题: + +- `anomaly_count = 18` +- 深页异常主要是 `301` +- 命中的 URL 形态是: + - `/voddetail/...` + - `/vodplay/...` + +这说明百度仍然在消费旧路由资产,当前站点靠 `301` 把蜘蛛导向现行规范地址。 + +结论: + +- 这不是致命故障 +- 但会拖慢抓取效率和权重沉淀速度 +- 未来 7 天内,这个站最值得持续观察 + +### 2. 老模板群的真正短板仍然是“分类层没起量” + +最新聚合里: + +- `category_requests = 1` +- `sitemap_requests = 2` + +虽然已经不再是绝对 `0`,但这个量级依然远远弱于深页和首页,所以这比单纯的深页 `301` 更值得重视。 + +因为它意味着: + +- 百度当前对老模板站群的抓取入口仍然偏窄 +- 主要仍靠首页或历史旧链接进入 +- 分类页还没有形成稳定抓取面 +- sitemap 也只是开始露头,还没形成可见收益 + +这也正好验证了本轮已落地的第一批模板修正方向是对的: + +1. 分类页 canonical 修正 +2. 分类页 `og:url` 修正 +3. 分类页 JSON-LD `url` 修正 +4. 播放页 canonical / `og:url` / JSON-LD 对齐 +5. sitemap 主输出去掉 `www + novel` 旧噪音 + +### 2.1 这里还要额外防一个“统计口径误判” + +虽然最新 `24h` 聚合里显示: + +- `category_requests = 1` + +但这条数据不能被机械理解成: + +- “蜘蛛完全没有碰过分类页” + +原因是: + +1. spider workbench 本身不会按 URL 自动识别分类页 +2. 它依赖上游推送时已经写好的 `page_type` +3. 当前仓库内 `DomainSpiderCrawlLogSchemaHelper` 只做枚举归一,不做 URL 路径识别 + +也就是: + +- 如果前端 spiderlog-agent 把分类 URL 直接标成了 `other` +- 工作台这里就会继续把它统计成 `other` +- 最终看起来会像“分类始终为 0” + +本轮已经在真实 payload 里看到过一条直接证据: + +- run: + `20260417/201003_crawl_log_push_f72827` +- host: + `sctyjz.com` +- url: + `/videotype-zong-yi/all-1948-nuo-wei-all/yin-du-yu-page1` +- 当前标记: + `page_type = other` +- bot: + `googlebot` +- status: + `444` + +这说明: + +- 至少在当前采集链里,分类 URL 被误标成 `other` 是真实存在的 +- 所以后续主 Codex 看 `category_requests = 0` 时,必须同时保留一个判断分支: + - 可能是真没抓 + - 也可能是上游 page_type 归类口径不完整 + +不过要注意: + +- 在我额外抽查的最近数个 `2026-04-17` run 里 +- 暂时还没有找到 `baiduspider / bytespider / sogou` 的分类 URL 被误标成 `other` 的直接样本 + +所以当前更稳的表达是: + +> 老模板分类抓取当前仍然偏弱,而且 `category` 指标本身仍存在口径风险,不能单独作为百度触达面的唯一判断依据。 + +### 3. `bytespider` 当前不是“没来”,而是“来了但 robots 层体验差” + +最新异常里,最高优先级几乎都集中在: + +- `qf123.net` +- `www.proenerji.com` +- `www.ctshuhua.com` +- `www.qf123.net` +- `www.qingyejianshe.com` +- `www.syzhzs.com` +- `www.yagyjt.com` +- `www.tvwallmountreview.com` + +共同特征: + +- URL:`/robots.txt` +- bot:`bytespider` +- 状态:`403 / 444` + +这说明: + +- 头条蜘蛛不是没探测 +- 它已经反复试图读取入口文件 +- 但当前入口层对它不友好 + +同时,现有老模板 `robots.txt` 模板里只明确放行了: + +- `Baiduspider` +- `360Spider` +- `Sogou web spider` +- `Sogou inst spider` +- `YisouSpider` +- `Quarkbot` +- `Googlebot` + +没有显式放行 `Bytespider`。 + +结论分两层: + +1. 从“百度 7 天冲量”主目标看 + - `bytespider` 不是第一优先级 + - 不应该压过百度分类/深页主线 +2. 从“国内蜘蛛入口完整度”看 + - 后续可以单独给老模板 robots 增补 `Bytespider` + - 但前提是先确认线上 `403/444` 是否来自模板输出,还是前端防护层 + +--- + +## 五、当前不能误判的点 + +### 1. 不能把 `301` 一律当致命异常 + +以 `yagyjt.com` 为例,百度命中的是: + +- `/voddetail/...` +- `/vodplay/...` + +这更像是历史收录或历史外链还在发挥作用。 + +如果当前站点已经把它们稳定 `301` 到规范地址,那么它的问题是: + +- 抓取成本高 +- 信号绕路 + +而不是: + +- 页面完全打不开 +- 老模板彻底不可抓 + +### 2. 当前没有证据说明老模板普遍 5xx + +最新 24h 聚合里: + +- `500 = 0` + +所以本轮不能把精力浪费在“怀疑后端整体炸了”上。 + +更应该盯的是: + +- 分类抓取为什么还没起来 +- sitemap 为什么没有形成可见命中 +- 已深抓样板站能不能进一步减少旧路由依赖 + +### 3. `1270` 不能代替老模板 SEO 主线 + +`1270` 当前仍然主要是 GPT 模板交接总文档。 + +老模板这一支继续推进时,应优先参考: + +- `1269` +- `1286` +- `1287` +- `1289` +- `1290` +- `1291` +- `1292` +- `1293` +- `1294` +- `1295` +- `1296` +- 本文 `1299` + +--- + +## 六、对主 Codex 最有价值的执行建议 + +### 优先级 A:持续观察并放大 `yagyjt.com` + +原因: + +- 它已经是百度深抓样板 +- 模板归属明确:`1002 / videoDingZhu` +- 最适合作为“老模板 7 天冲量”的核心跟踪站 + +建议动作: + +1. 复核 `yagyjt.com` 当前详情页和播放页规范地址是否稳定 +2. 观察旧 `/voddetail`、`/vodplay` 是否始终 301 到唯一规范 URL +3. 看未来 24-72 小时内,百度是否开始从 `detail/play 301` 转向规范深页 200 + +### 优先级 B:盯分类层起量,而不是继续沉迷首页 + +因为最新数据说明: + +- 首页已经有命中 +- 深页也不是完全没有 +- 但分类层和 sitemap 层仍然显著偏弱 + +这意味着后续最该看的提升信号是: + +1. 是否开始出现 `category_requests > 0` +2. 是否开始有分类页 200 被百度命中 +3. 是否由分类页继续向详情页扩散 + +### 优先级 C:把 `robots` 的国内蜘蛛兼容性单独列为副线 + +这条线不能抢主线,但也不能完全忽略。 + +建议: + +1. 先确认 `403/444` 是前端防护层行为,还是应用层输出问题 +2. 如果模板输出可控,再评估是否给老模板 `robots.txt` 增补: + - `User-agent: Bytespider` + - `Allow: /` +3. 即便要改,也应单独开小任务,不要和百度主线混着验 + +--- + +## 七、一句话总结 + +当前老模板 SEO 主线的真实状态是: + +> 百度已经开始给个别老模板站深抓机会,但站群整体仍然缺少分类层放量;短期最值得做的是围绕 `yagyjt.com` 这种已深抓样板站压旧路由成本、盯分类抓取起量,而不是把精力继续带偏到 GPT 模板或不存在的 5xx 故障上。 + +--- + +## 八、2026-04-17 晚间追加:工作台 page_type 口径补强已落地 + +在继续复核真实 payload 后,本轮又确认了一个会直接影响判断的问题: + +- spider workbench 的统计高度依赖上游推送的 `page_type` +- 如果上游把老模板历史路由打成 `other` +- 工作台就会把真实分类 / 详情 / 播放流量低估掉 + +### 已确认的真实误标样本 + +1. 分类页误标 + - `/videotype-zong-yi/all-1948-nuo-wei-all/yin-du-yu-page1` + - 原始 `page_type = other` +2. 播放页误标 + - `/video-play/ni-tian-zhi-zun-26066-fengchao-137` + - 原始 `page_type = other` +3. 详情页漏算线索 + - `www.ningxiaowei.com` + - `/video-info/...` + - 在最近 run 中由 `baiduspider` 命中 `200 / 301` + - 但原始 bucket 仍可能落在 `other` + +### 已落地的修正 + +本轮已在抓取摘要 ingest 阶段增加“路径兜底识别”,仅在上游值为空或为 `other` 时生效: + +- 文件: + - [DomainSpiderCrawlLogSchemaHelper.php](/www/wwwroot/VideoSource2/code/app/common/helper/DomainSpiderCrawlLogSchemaHelper.php:1) + - [DomainSpiderCrawlLogHelper.php](/www/wwwroot/VideoSource2/code/app/common/helper/DomainSpiderCrawlLogHelper.php:1) +- 兜底识别范围: + - `videotype / vodtype / fenlei` -> `category` + - `video-info / voddetail / neirong-` -> `detail` + - `video-play / vodplay / bf-` -> `play` + - `robots.txt` -> `robots` + - `sitemap*` -> `sitemap` + - `search / get-index` -> `search` + +### 本地复核结果 + +用真实 run: + +- `20260417/201003_crawl_log_push_f72827` + +重新过 ingest 后,结果已经变为: + +1. `/videotype-zong-yi/...` -> `category` +2. `/video-play/...` -> `play` + +这说明: + +- 当前 workbench 的老模板分类/播放统计,后续会比之前更接近真实情况 +- `category=0` 这类结论之后必须结合新 ingest 结果再判断 +- 这次修正只影响蜘蛛分析口径,不会直接改动老模板页面输出,也不会直接影响 `videoGpt1` 模板渲染 + +### 已追加重建 latest 摘要 + +为了避免 admin2 / workbench 继续读取旧的 `latest` 静态摘要,本轮还额外重建了: + +- `code/storage/domain-spider-crawl/latest/spider-crawl.summary.json` +- `code/storage/domain-spider-crawl/latest/spider-crawl.summary.html` + +重建时间: + +- `2026-04-17T20:20:54+08:00` + +重建后,按最近 `24` 个 run 合并统计得到的页面类型分布为: + +- `robots = 281` +- `home = 77` +- `detail = 34` +- `play = 11` +- `category = 4` +- `sitemap = 2` +- `other = 17` + +这和修正前相比,至少已经明确证明: + +1. 分类页不再是绝对 `0` +2. 旧 `video-info / video-play / videotype` family 的流量不再全部沉到底部 `other` +3. 后续再看老模板“百度有没有进分类 / 详情 / 播放”,工作台数据可信度会更高 + +--- + +## 九、2026-04-17 20:30 再复核补充 + +在继续用 `DomainSpiderCrawlWorkbenchHelper::buildSummary(...)` 复核后,当前还要再补 3 条交接级结论。 + +### 1. 当前正式应以 24h 聚合视角为主,不应以 `latest` 覆盖文件为主 + +`latest/spider-crawl.summary.json` 在 `20:30` 时已经被新的前端 push 覆盖成一份很小的最近样本。 + +但同一时刻按 workbench 24h 聚合得到的真实视角仍然是: + +- 总请求:`72` +- 详情:`21` +- 播放:`4` +- 分类:`1` +- sitemap:`2` +- robots:`11` + +因此后续主 Codex 如果看到: + +- `latest` 很小 +- 甚至只剩少量 `robots/home` + +不要直接判断成: + +- 老模板蜘蛛量掉空 +- 深页信号消失 + +更稳的做法是始终回到 24h 聚合视角看趋势。 + +### 2. `yagyjt.com` 目前仍是第一样板站,但问题已明确集中到入口层 + +截至 `20:30` 的 host detail: + +- 总请求:`28` +- 深页请求:`16` +- 异常:`18` +- 状态: + - `200 = 10` + - `301 = 10` + - `444 = 7` + - `403 = 1` + +当前最高优先级异常已经非常集中: + +- `/robots.txt` +- `/sitemap_index.xml` +- `/videotype/1-dian-ying` +- `/` + +也就是说,这个站已经不是“有没有深抓”的问题,而是: + +- 已经深抓 +- 但入口质量还不够稳 + +所以后续如果要拿一个站做百度 7 天冲量观察,优先还是盯它。 + +### 3. `www.ningxiaowei.com` 更适合当“深链承接效率”样本 + +截至 `20:30` 的 host detail: + +- 总请求:`8` +- 深页请求:`8` +- 全部都是 `detail` +- 状态: + - `200 = 4` + - `301 = 4` + +它的特点不是入口层扩张,而是: + +- 百度已经明确在消费 `/video-info/...` 这类当前有效 family +- 但还没有看到首页 / 分类 / sitemap 同步扩张 + +因此它更适合当: + +- 详情页 URL family 正确性观察样本 +- 深链 `301 -> 200` 承接效率样本 + +不适合拿来代替 `yagyjt.com` 做入口层样板。 diff --git a/docs/old-tmp-seo/31-老模板样板站域名级SEO任务单-2026-04-17.md b/docs/old-tmp-seo/31-老模板样板站域名级SEO任务单-2026-04-17.md new file mode 100644 index 0000000..c4a1ed5 --- /dev/null +++ b/docs/old-tmp-seo/31-老模板样板站域名级SEO任务单-2026-04-17.md @@ -0,0 +1,259 @@ +# 1300-SEONexus 老模板样板站域名级 SEO 任务单 - 2026-04-17 + +## 目的 + +这份文档把当前最值得持续盯的两个老模板样板站,直接拆成域名级任务。 + +适用对象: + +- 主 Codex +- 后续接手老模板 SEO 的人工 +- 需要从“站群泛分析”切到“样板站逐项修正”的人 + +--- + +## 一、样板站 1:`yagyjt.com` + +### 基本归属 + +- 域名:`yagyjt.com` +- 模板:`t_id = 1002` +- 视图目录:`videoDingZhu` +- URL family: + - `VIDEO_INFO_URL = 模板7 = /shipin/{slug}-{id}` + - `VIDEO_PLAY_URL = 模板7 = /shipin-play/{slug}-{id}-{line}-{episode}` + - `VIDEO_CATEGORY_URL = 模板7 = /shipinfenlei-{parent}/{category}-{year}-{area}-{order}/{lang}-page{page}` + +### 当前蜘蛛状态 + +基于最新 workbench 明细: + +- 总请求:`28` +- 深页请求:`16` +- 深抓比例:`57.1%` +- 页面分布: + - `detail = 12` + - `play = 4` + - `home = 6` + - `robots = 3` + - `sitemap = 2` + - `category = 1` + +这说明: + +- 百度已经真实进入深页 +- 这是当前老模板站群里最值得当样板站的域名 + +### 当前主要问题 + +#### 1. 入口层异常比深页跳转更急 + +最近异常里最高优先级是: + +- `/robots.txt => 444` +- `/robots.txt => 403`(`bytespider`) +- `/sitemap_index.xml => 444` +- `/videotype/1-dian-ying => 444` +- `/ => 444` + +这里的真实含义是: + +- 百度虽然已经能命中深页 +- 但首页、分类、robots、sitemap 这一整层入口并不稳定 +- 深抓是在“入口不够干净”的前提下硬跑出来的 + +#### 2. 深页仍然大量消费旧 family + +当前百度命中的深页异常主要是: + +- `/voddetail/... => 301` +- `/vodplay/... => 301` + +这说明: + +- 对 `yagyjt.com` 来说,当前配置的主 family 并不是: + - `/voddetail/...` + - `/vodplay/...` + - `/videotype/...` +- 当前规范 family 实际是: + - `/shipin/...` + - `/shipin-play/...` + - `/shipinfenlei-...` +- 百度仍然在消费历史旧 family +- 当前站点靠 301 导向现行规范地址 +- 这不是致命错误 +- 但会持续消耗抓取预算 + +#### 3. 当前更该盯的是入口层 `444/403` 是否继续下降 + +当前 host detail 状态分布已经比较清楚: + +- `200 = 10` +- `301 = 10` +- `444 = 7` +- `403 = 1` + +这意味着: + +- `301` 还是老旧 family 被消费的表现 +- 真正拖累入口扩张的,是 `robots / sitemap / 分类 / 首页` 上反复出现的 `444/403` + +### 对主 Codex 的直接任务 + +1. 先排查 `yagyjt.com` 的前端入口层 + - `robots.txt` + - `sitemap_index.xml` + - 首页 `/` + - 一级分类 `/videotype/1-dian-ying` +2. 优先确认这些 444 是不是前端 Nginx / WAF / 缓存层造成 +3. 确认 `voddetail`、`vodplay` 到当前规范详情/播放地址的 301 链是否始终唯一、稳定 +4. 未来 24-72 小时重点观察: + - 入口层 444 是否下降 + - 分类页是否由 `1` 继续往上抬 + - 深页 301 是否逐渐被规范深页 200 替代 + +### 当前补充实测 + +本轮在当前服务器上直接走公网 HTTP 样本验证时,已看到: + +- `http://yagyjt.com/voddetail/shuang-qiang-huang-ying-gu-624 => 444` + +这说明: + +- `yagyjt.com` 的入口层异常不是纯工作台统计错觉 +- 至少在当前外部 HTTP 访问链路上,前端层确实存在直接拦截或异常关闭连接的问题 + +### 一句话判断 + +> `yagyjt.com` 不是“没抓起来”,而是“已经抓起来,但入口层很脏”;它适合作为老模板 7 天冲量的头号样板站。 + +--- + +## 二、样板站 2:`www.ningxiaowei.com` + +### 基本归属 + +- 主域:`ningxiaowei.com` +- 当前抓取 host:`www.ningxiaowei.com` +- 模板:`t_id = 1003` +- 视图目录:`videoBoKu` +- URL family: + - `VIDEO_INFO_URL = 模板4 = /video-info/{slug}-{id}` + - `VIDEO_PLAY_URL = 模板4 = /video-play/{slug}-{id}-{line}-{episode}` + - `VIDEO_CATEGORY_URL = 模板4 = /videotype-{parent}/{category}-{year}-{area}-{order}/{lang}-page{page}` + +### 当前蜘蛛状态 + +基于最新 workbench 明细: + +- 总请求:`8` +- 深页请求:`8` +- 深抓比例:`100%` +- 页面分布: + - `detail = 8` + +这说明: + +- 这个站当前不是“入口页试探” +- 而是百度已经直接命中当前配置的详情 family + +### 当前主要问题 + +#### 1. 百度已经进入当前规范详情 family,但跳转链还需看干净 + +已确认命中的 URL 包括: + +- `/video-info/you-li-xi-si-zong-he-zheng-di-yi-ji-78641` +- `/video-info/jing-cha-gu-shi-chao-ji-jing-cha-5933` +- `/video-info/zhang-jiang-tian-di-da-ji-xing-60553` + +并且状态是: + +- `301` +- `200` + +这说明: + +- 对 `ningxiaowei.com` 来说,`/video-info/...` 本身就是当前配置的规范详情 family +- 所以这里的 `301 + 200` 不能直接理解成“旧详情 family 残留” +- 更需要优先怀疑的是: + - `www / 裸域` host 归一 + - `http / https` 归一 + - 或同一路径上的额外跳转 + +#### 2. 当前问题比 `yagyjt.com` 更纯 + +`www.ningxiaowei.com` 目前没暴露出那么多首页/分类/robots 异常。 + +它更像是: + +- 入口噪音少 +- 当前规范详情 family 已经被百度深抓 +- 但 host / 跳转链的规范化还不够干净 +- 当前状态分布也符合这个判断: + - `200 = 4` + - `301 = 4` + +### 对主 Codex 的直接任务 + +1. 当前已确认 `www.ningxiaowei.com` 的规范详情 family 就是 `/video-info/...` +2. 检查 `/video-info/...` 的 301 到底跳向哪里 +3. 优先排查是否存在: + - `www -> 裸域` + - `http -> https` + - 同一路径被重复跳转 +4. 目标应是: + - 详情页规范链尽量压缩成一次可预期跳转 + - 最终稳定落到唯一详情 URL + +### 当前补充实测 + +本轮在当前服务器上直接走公网 HTTP 样本验证时,已看到: + +- `http://www.ningxiaowei.com/video-info/jing-cha-gu-shi-chao-ji-jing-cha-5933 => 444` + +这说明: + +- `www.ningxiaowei.com` 当前也不是“只有工作台里才异常” +- 至少在当前 HTTP 外部链路上,详情页入口依然会被前端层直接掐断 +- 所以主 Codex 后续排查时,不应只盯应用模板,还要同步看前端站群 / WAF / Nginx 入口规则 + +### 一句话判断 + +> `www.ningxiaowei.com` 不是“旧详情 family 残留站”,而是“当前规范详情 family 已被百度深抓,但 host / 跳转链仍需压缩”的样板站。 + +--- + +## 三、主线优先级建议 + +当前最稳顺序: + +1. 先做 `yagyjt.com` + - 因为它既有入口问题,又有深页问题 + - 修复收益最大 +2. 再做 `www.ningxiaowei.com` + - 因为它更像“规范详情 family 跳转链压缩专项” + - 适合做第二个样板站 + +--- + +## 四、Day1 直接执行重点 + +如果主 Codex 现在就要落地第一天动作,建议只做下面 4 件事: + +1. 盯 `yagyjt.com` 的入口层异常 + - 重点确认 `/robots.txt`、`/sitemap_index.xml`、`/`、`/videotype/1-dian-ying` + - 目标不是先改模板,而是先确认 `444/403` 出在前端入口层还是应用层 +2. 盯 `yagyjt.com` 的旧 family 消耗 + - 抽样确认 `/voddetail/...`、`/vodplay/...` 是否始终单跳或稳定跳到唯一规范 URL +3. 盯 `www.ningxiaowei.com` 的详情页跳转链 + - 重点看 `/video-info/...` 是否存在 `www / 裸域` 或 `http / https` 的重复跳转 +4. 盯 24h 聚合,不盯单个 `latest` + - `latest/spider-crawl.summary.json` 会被最近一次 push 覆盖 + - 真正判断趋势时,要看 workbench 的 24h 聚合视角 + +--- + +## 五、一句话交接 + +> 老模板下一步不该再停留在“站群泛讨论”,而应该直接围绕 `yagyjt.com` 和 `www.ningxiaowei.com` 两个样板站做域名级推进:前者先清入口层 444 和历史旧 family 消耗,后者先把当前规范详情 family 的 host / 跳转链压缩干净。 diff --git a/docs/old-tmp-seo/32-老模板样板站URL-Family对照表-2026-04-17.md b/docs/old-tmp-seo/32-老模板样板站URL-Family对照表-2026-04-17.md new file mode 100644 index 0000000..6069300 --- /dev/null +++ b/docs/old-tmp-seo/32-老模板样板站URL-Family对照表-2026-04-17.md @@ -0,0 +1,154 @@ +# 1301-SEONexus 老模板样板站 URL Family 对照表 - 2026-04-17 + +## 目的 + +这份文档只做一件事: + +- 把老模板样板站“当前配置的规范 URL family” +- 和“蜘蛛当前实际命中的 URL family” +- 放到一张表里对照 + +这样后续主 Codex 在判断 `301`、旧路由、规范化时,不会把“当前规范 family”误判成“历史残留 family”。 + +--- + +## 一、`yagyjt.com` + +### 站点配置 + +- 域名:`yagyjt.com` +- 模板:`t_id = 1002` +- 视图:`videoDingZhu` + +当前 `t_cfg` 配置: + +- `VIDEO_INFO_URL = sfg_id 1052 = 模板7` +- `VIDEO_PLAY_URL = sfg_id 1060 = 模板7` +- `VIDEO_CATEGORY_URL = sfg_id 1044 = 模板7` + +### 当前规范 family + +1. 详情页 + - `/shipin/{slug}-{id}` +2. 播放页 + - `/shipin-play/{slug}-{id}-{line}-{episode}` +3. 分类页 + - `/shipinfenlei-{parent}/{category}-{year}-{area}-{order}/{lang}-page{page}` + +### 当前蜘蛛命中 family + +已看到的典型命中: + +1. 详情页旧 family + - `/voddetail/...` +2. 播放页旧 family + - `/vodplay/...` +3. 分类页旧 family + - `/videotype/1-dian-ying` + +### 结论 + +对 `yagyjt.com` 来说: + +- `voddetail` +- `vodplay` +- `videotype` + +都不是当前配置的主 family。 + +因此这里的 `301` 更接近: + +- 历史收录仍在消费旧路由 +- 当前站点在把旧 family 导向现行规范 family + +这类问题的目标是: + +- 保持 301 稳定 +- 减少旧 family 继续消耗百度抓取预算 + +--- + +## 二、`ningxiaowei.com` + +### 站点配置 + +- 域名:`ningxiaowei.com` +- 模板:`t_id = 1003` +- 视图:`videoBoKu` + +当前 `t_cfg` 配置: + +- `VIDEO_INFO_URL = sfg_id 1049 = 模板4` +- `VIDEO_PLAY_URL = sfg_id 1057 = 模板4` +- `VIDEO_CATEGORY_URL = sfg_id 1041 = 模板4` + +### 当前规范 family + +1. 详情页 + - `/video-info/{slug}-{id}` +2. 播放页 + - `/video-play/{slug}-{id}-{line}-{episode}` +3. 分类页 + - `/videotype-{parent}/{category}-{year}-{area}-{order}/{lang}-page{page}` + +### 当前蜘蛛命中 family + +已看到的典型命中: + +1. 详情页 + - `/video-info/...` + +并且状态同时出现: + +- `301` +- `200` + +### 结论 + +对 `ningxiaowei.com` 来说: + +- `/video-info/...` + +本身就是当前配置的规范详情 family。 + +所以这里不能简单解读成: + +- “百度还在抓旧详情页” + +更合理的解释应优先是: + +1. `www / 裸域` host 归一 +2. `http / https` 归一 +3. 单路径多跳 + +这类问题的目标是: + +- 压缩跳转链 +- 保证规范详情 URL 唯一且稳定 + +--- + +## 三、主 Codex 不要混淆的判断 + +### `yagyjt.com` + +可以判断为: + +- 旧 family 仍在被百度访问 + +### `ningxiaowei.com` + +不要再判断为: + +- `/video-info` 是旧 family + +更准确的说法应该是: + +- `/video-info` 就是当前规范详情 family +- 现在的问题是 host / scheme / 跳转链层面的规范化 + +--- + +## 四、一句话结论 + +> `yagyjt.com` 的问题是“百度还在消费旧 family”,而 `ningxiaowei.com` 的问题是“当前规范 family 已被百度深抓,但跳转链还不够干净”,这两类问题不能混着处理。 diff --git a/docs/old-tmp-seo/33-老模板样板站Day1执行单-2026-04-17.md b/docs/old-tmp-seo/33-老模板样板站Day1执行单-2026-04-17.md new file mode 100644 index 0000000..d9dddaf --- /dev/null +++ b/docs/old-tmp-seo/33-老模板样板站Day1执行单-2026-04-17.md @@ -0,0 +1,134 @@ +# 1302-SEONexus 老模板样板站 Day1 执行单 - 2026-04-17 + +## 目的 + +这份文档只保留主 Codex 当天最该执行的动作。 + +它不再重复长篇背景,而是把老模板当前最值得推进的两类工作,压缩成 Day1 可直接落地的顺序。 + +适用范围: + +- 只服务老模板 `1001-1005` +- 不涉及 `videoGpt1` +- 只围绕当前两个样板站: + - `yagyjt.com` + - `www.ningxiaowei.com` + +--- + +## 一、Day1 总目标 + +当天目标不是“7 天内所有排名问题一次解决”,而是先把这两个样板站的当前最大阻力拆清楚: + +1. `yagyjt.com` + - 先拆入口层异常 + - 再盯旧 family 消耗 +2. `www.ningxiaowei.com` + - 先拆规范详情 family 的跳转链 + - 不要误判成旧 family 问题 + +--- + +## 二、执行顺序 + +### 1. 先看 `yagyjt.com` + +当前已知状态: + +- 已有百度深抓 +- `detail = 12` +- `play = 4` +- `robots = 3` +- `sitemap = 2` +- `category = 1` +- 但同时存在: + - `444 = 7` + - `403 = 1` + +Day1 要做的不是先调页面文案,而是先判断入口层为什么还在掉包。 + +当天重点检查: + +1. `/robots.txt` +2. `/sitemap_index.xml` +3. `/` +4. `/videotype/1-dian-ying` + +当天目标: + +- 搞清楚这些异常是前端入口层问题,还是应用输出问题 +- 不要只因为深页能抓,就忽略入口层异常 + +### 2. 再看 `yagyjt.com` 的旧 family + +当前已知百度仍在命中: + +1. `/voddetail/...` +2. `/vodplay/...` +3. `/videotype/...` + +但对这个域名来说,当前规范 family 其实是: + +1. `/shipin/...` +2. `/shipin-play/...` +3. `/shipinfenlei-...` + +所以 Day1 的重点判断是: + +- 旧 family 是否始终稳定跳到唯一规范 URL +- 有没有多跳 +- 有没有同类 URL 分流到多个终点 + +目标: + +- 保持旧 family 301 稳定 +- 减少百度继续在旧 family 上浪费抓取预算 + +### 3. 最后看 `www.ningxiaowei.com` + +当前已知状态: + +- 百度已经深抓 `/video-info/...` +- 这是当前规范详情 family +- 状态是: + - `200 = 4` + - `301 = 4` + +所以 Day1 不要把它当成“旧详情路由残留站”。 + +当天重点检查: + +1. `/video-info/...` 是否有 `http -> https` +2. `/video-info/...` 是否有 `www -> 裸域` 或反向归一 +3. 是否存在同一路径重复跳转 + +当天目标: + +- 把详情页最终落点压缩到唯一规范 URL +- 让百度更少消耗在 host / scheme 归一链上 + +--- + +## 三、当天不要做的事 + +1. 不要把 `videoGpt1` 拉进这轮动作 +2. 不要把 `latest/spider-crawl.summary.json` 当成全天全景 +3. 不要把 `ningxiaowei.com` 的 `/video-info/...` 误判成旧 family +4. 不要一上来就重做老模板页面骨架 + +--- + +## 四、当天验收口径 + +Day1 做完后,只要能回答下面 4 条,就已经是有效推进: + +1. `yagyjt.com` 的 `444/403` 主因到底在入口层哪一层 +2. `yagyjt.com` 的旧 family 是否单跳且唯一 +3. `www.ningxiaowei.com` 的 `/video-info/...` 最终规范落点是什么 +4. 下一轮 24h 聚合里,`category / sitemap / 444` 有没有出现方向性改善 + +--- + +## 五、一句话交接 + +> Day1 不求把老模板站群一次做完,而是先把 `yagyjt.com` 的入口层异常和旧 family 消耗拆干净,再把 `www.ningxiaowei.com` 的详情页规范跳转链压缩清楚。 diff --git a/docs/old-tmp-seo/34-老模板7天SEO跟踪板-2026-04-17.md b/docs/old-tmp-seo/34-老模板7天SEO跟踪板-2026-04-17.md new file mode 100644 index 0000000..4a7db85 --- /dev/null +++ b/docs/old-tmp-seo/34-老模板7天SEO跟踪板-2026-04-17.md @@ -0,0 +1,221 @@ +# 1303-SEONexus 老模板 7 天 SEO 跟踪板 - 2026-04-17 + +## 目的 + +这份文档不是再讲一遍背景,而是把老模板这一轮接下来 `7` 天到底怎么看“有没有进步”固定下来。 + +它服务的不是 GPT 模板,也不是泛站群讨论,而是: + +- 老模板 `1001-1005` +- 当前样板站: + - `yagyjt.com` + - `www.ningxiaowei.com` +- 当前主目标: + - 让百度入口更稳 + - 让深页承接更干净 + - 让分类层逐步起量 + +--- + +## 一、当前 Day0 基线 + +以 `2026-04-17 20:30` 的 `24h workbench 聚合` 作为基线。 + +### 站群总基线 + +- 总请求:`72` +- 域名数:`14` +- 百度相关主量级: + - `baiduspider = 63` + - `bytespider = 9` +- 页面类型: + - `home = 33` + - `detail = 21` + - `play = 4` + - `category = 1` + - `sitemap = 2` + - `robots = 11` +- 状态: + - `200 = 34` + - `301 = 24` + - `444 = 8` + - `403 = 6` + - `500 = 0` + +### 样板站基线 + +#### `yagyjt.com` + +- 总请求:`28` +- 深页请求:`16` +- 页面类型: + - `detail = 12` + - `play = 4` + - `home = 6` + - `robots = 3` + - `sitemap = 2` + - `category = 1` +- 状态: + - `200 = 10` + - `301 = 10` + - `444 = 7` + - `403 = 1` + +#### `www.ningxiaowei.com` + +- 总请求:`8` +- 深页请求:`8` +- 页面类型: + - `detail = 8` +- 状态: + - `200 = 4` + - `301 = 4` + +--- + +## 二、7 天真正该看的指标 + +这轮不要把“是否上首页”单独理解成一个神秘结果,而要拆成下面 4 组先行指标。 + +### 1. 入口稳定度 + +这组指标决定百度愿不愿意继续进来: + +1. `robots_requests` +2. `sitemap_requests` +3. 首页 `home_requests` +4. 这些入口 URL 上的: + - `200` + - `403` + - `444` + +更好的方向是: + +- `robots / sitemap / 首页` 的 `200` 占比提高 +- `403 / 444` 下降 + +### 2. 分类层起量 + +这组指标决定站群有没有从“靠首页和旧深链硬进”变成“开始形成抓取面”。 + +要看的就是: + +1. `category_requests` 是否从 `1` 往上抬 +2. 分类页里 `200` 是否出现并稳定 +3. `yagyjt.com` 这类样板站是否从入口页扩展到分类页再扩展到详情页 + +### 3. 深页承接质量 + +这组指标决定百度抓到深页后,是不是还在绕路。 + +要看: + +1. `detail_requests` +2. `play_requests` +3. 深页里的: + - `200` + - `301` + +更好的方向是: + +- 深页 `200` 增加 +- 深页 `301` 占比下降 +- 不是深页请求消失,而是更少绕旧 family + +### 4. 样板站单点修正效果 + +这组指标决定我们改动有没有对准问题。 + +对 `yagyjt.com`: + +- 看 `/robots.txt` +- 看 `/sitemap_index.xml` +- 看 `/` +- 看 `/videotype/1-dian-ying` +- 看 `/voddetail/...` +- 看 `/vodplay/...` + +对 `www.ningxiaowei.com`: + +- 看 `/video-info/...` +- 看是否还存在额外 `www / 裸域` 或 `http / https` 重复跳转 + +--- + +## 三、什么才算“每天有进步” + +这轮不要求每天都看到“百度首页排名突然爆发”,而是要求每天至少看到一类明确改善。 + +### 可接受的日进步信号 + +1. `yagyjt.com` 的 `444` 变少 +2. `yagyjt.com` 的 `robots / sitemap / 首页 / 分类页` 出现更多 `200` +3. `category_requests` 从 `1` 往上走 +4. 深页 `301` 开始被更多规范深页 `200` 替代 +5. `www.ningxiaowei.com` 的 `/video-info/...` 跳转链变短 + +### 不要误判成进步的假信号 + +1. 单个 `latest` 文件变大或变小 +2. 只有首页请求变多,但分类和深页没有改善 +3. 深页请求减少,但只是因为蜘蛛没再来 +4. 单个域名出现一次 `200`,但后面仍大量 `444/403` + +--- + +## 四、Day1 到 Day7 建议观察节奏 + +### Day1 + +重点看: + +- `yagyjt.com` 入口层异常主因 +- `www.ningxiaowei.com` 详情页跳转链主因 + +### Day2 + +重点看: + +- `yagyjt.com` 的 `robots / sitemap / 首页 / 分类页` 是否出现更多 `200` +- 旧 family 是否仍多跳 + +### Day3 + +重点看: + +- `category_requests` 是否抬升 +- 是否开始出现更多分类页 `200` + +### Day4-Day5 + +重点看: + +- 深页 `301 -> 200` 的替代趋势 +- 样板站是否从“深页已抓”变成“入口更稳 + 深页更干净” + +### Day6-Day7 + +重点看: + +- `yagyjt.com` 是否继续扩大分类层和深页层命中 +- `www.ningxiaowei.com` 是否基本压缩到唯一详情落点 +- 站群整体 `444/403` 是否明显低于 Day0 + +--- + +## 五、主 Codex 每天回报最小模板 + +后续每天回报时,只要回答这 6 条就够: + +1. 今天的 `24h` 聚合总量相较 Day0 是升、平还是降 +2. `category_requests` 是多少 +3. `robots / sitemap` 的 `403/444` 是升还是降 +4. `yagyjt.com` 的入口层异常是否减少 +5. `yagyjt.com` 的旧 family 是否仍稳定单跳 +6. `www.ningxiaowei.com` 的 `/video-info/...` 是否已压缩到唯一规范落点 + +--- + +## 六、一句话交接 + +> 老模板这 7 天的核心不是“盲猜排名”,而是持续把入口层稳定度、分类层起量、深页承接质量这 3 个前置信号往上推,只要这 3 条连续改善,样板站向百度首页拿量才会越来越像确定性结果。 diff --git a/docs/old-tmp-seo/35-老模板每日复盘模板-2026-04-17.md b/docs/old-tmp-seo/35-老模板每日复盘模板-2026-04-17.md new file mode 100644 index 0000000..99ce7c2 --- /dev/null +++ b/docs/old-tmp-seo/35-老模板每日复盘模板-2026-04-17.md @@ -0,0 +1,167 @@ +# 1304-SEONexus 老模板每日复盘模板 - 2026-04-17 + +## 目的 + +这份模板专门给老模板 `1001-1005` 这条线每日复盘使用。 + +它和 [34-老模板7天SEO跟踪板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/34-老模板7天SEO跟踪板-2026-04-17.md) 配套: + +- `1303` 负责定义 7 天该看什么 +- 本文负责把“当天结果怎么回报”固定成统一格式 + +适用范围: + +- 只服务老模板 SEO 主线 +- 不涉及 `videoGpt1` +- 适合主 Codex、辅助 Codex、人工交接时直接复用 + +--- + +## 一、填写规则 + +每天复盘时,尽量只写: + +1. 当天相对 Day0 有没有变好 +2. 哪个样板站在进步 +3. 哪个问题仍卡住 +4. 明天第一步做什么 + +不要写成长篇过程回忆,也不要把单个 `latest` 文件变化当成核心结论。 + +--- + +## 二、每日复盘模板 + +### 1. 基础信息 + +- 复盘日期: +- 复盘口径: + - 默认填:`24h workbench 聚合` +- 当前样板站: + - `yagyjt.com` + - `www.ningxiaowei.com` + +### 2. 今日总判断 + +只写一句话。 + +示例: + +- 今天属于“入口层稍有改善,但分类层还没真正起量”。 +- 今天属于“深页承接更干净,但入口层仍然拖后腿”。 + +填写: + +- 今日总判断: + +### 3. 站群总量对比 Day0 + +- 总请求: +- `home_requests`: +- `category_requests`: +- `detail_requests`: +- `play_requests`: +- `robots_requests`: +- `sitemap_requests`: + +状态: + +- `200`: +- `301`: +- `403`: +- `444`: +- `500`: + +### 4. 样板站 1:`yagyjt.com` + +当天只回答这 5 条: + +1. 总请求是否升高: +2. 入口层 `444/403` 是否减少: +3. `/robots.txt` 是否更稳: +4. `/sitemap_index.xml` / `/` / `/videotype/1-dian-ying` 是否出现更多 `200`: +5. `/voddetail` / `/vodplay` 是否仍稳定单跳: + +### 5. 样板站 2:`www.ningxiaowei.com` + +当天只回答这 4 条: + +1. `/video-info/...` 是否仍有 `301 + 200`: +2. 跳转链有没有变短: +3. 是否已确认唯一规范落点: +4. 当前主要卡点是什么: + +### 6. 今日真进步信号 + +最多写 `3` 条。 + +1. +2. +3. + +### 7. 今日假信号或误判风险 + +最多写 `3` 条。 + +1. +2. +3. + +### 8. 当前仍卡住的问题 + +只写最关键的 `1-3` 条。 + +1. +2. +3. + +### 9. 明天第一步 + +只写一件事。 + +- 明天第一步: + +--- + +## 三、极简聊天汇报模板 + +如果后续只是在对话里快速给主 Codex 或人工报进展,直接用下面这个格式: + +```md +老模板每日复盘: + +日期: +今日总判断: + +站群对比 Day0: +- category: +- robots: +- sitemap: +- detail: +- play: +- 403/444: + +yagyjt.com: +1. +2. + +www.ningxiaowei.com: +1. +2. + +今日真进步: +1. +2. + +当前卡点: +1. +2. + +明天第一步: +``` + +--- + +## 四、一句话交接 + +> 老模板这条线每天复盘时,不求写长报告,只要求按同一模板确认“入口更稳了吗、分类起来了吗、深页更干净了吗、明天先做哪一件事”。 diff --git a/docs/old-tmp-seo/36-老模板首周验收清单-2026-04-17.md b/docs/old-tmp-seo/36-老模板首周验收清单-2026-04-17.md new file mode 100644 index 0000000..837b61a --- /dev/null +++ b/docs/old-tmp-seo/36-老模板首周验收清单-2026-04-17.md @@ -0,0 +1,207 @@ +# 1305-SEONexus 老模板首周验收清单 - 2026-04-17 + +## 目的 + +这份文档专门解决一个问题: + +- 老模板这条线持续推进 `7` 天后 +- 到底怎样算“有结果” +- 怎样算“部分有效” +- 怎样算“还没打到点上” + +它和下面几份文档配套使用: + +- [34-老模板7天SEO跟踪板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/34-老模板7天SEO跟踪板-2026-04-17.md) +- [35-老模板每日复盘模板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/35-老模板每日复盘模板-2026-04-17.md) +- [33-老模板样板站Day1执行单-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/33-老模板样板站Day1执行单-2026-04-17.md) + +--- + +## 一、首周验收不要只看“有没有首页词” + +这一轮的最终目标当然是: + +- 老模板这批域名向百度首页拿量 + +但首周验收不能只用“首页词有没有立刻爆出来”做唯一标准。 + +更稳的验收方式应该是分三层: + +1. 入口层有没有变稳 +2. 分类层有没有起量 +3. 深页承接有没有变干净 + +如果这三层连续改善,即使首页结果还没完全放大,也应判定为: + +- 方向正确 +- 可以继续加码 + +--- + +## 二、首周验收等级 + +### A 档:达标 + +满足下面大部分特征,就可以判定首周达标: + +1. `robots / sitemap / 首页` 的 `403/444` 明显下降 +2. `category_requests` 相比 Day0 明显抬升,不再长期贴着 `0/1` +3. `yagyjt.com` 的入口层异常明显减少 +4. `yagyjt.com` 的旧 family 仍稳定单跳,且规范深页 `200` 占比更高 +5. `www.ningxiaowei.com` 的 `/video-info/...` 跳转链明显变短,或已经稳定到唯一规范落点 +6. 站群 `500` 仍保持 `0` + +这类结果说明: + +- 老模板 SEO 主线没有跑偏 +- 后续可以继续做第二批放大动作 + +### B 档:部分达标 + +满足下面任意几条,但还不够完整时,判定为部分达标: + +1. 入口层有所改善,但分类层还没明显抬升 +2. 分类层有起色,但 `444/403` 还比较高 +3. 深页 `301 -> 200` 有改善,但样板站入口仍不稳定 +4. `www.ningxiaowei.com` 已明显变干净,但 `yagyjt.com` 入口层还没压住 + +这类结果说明: + +- 方向大概率是对的 +- 但还不能急着判定“已打穿” +- 需要继续围绕样板站做第二轮收口 + +### C 档:未达标 + +出现下面这些情况,就应判定首周未达标: + +1. `robots / sitemap / 首页` 的 `403/444` 没降,甚至更高 +2. `category_requests` 基本没有抬升 +3. `yagyjt.com` 入口层仍然主要表现为 `444/403` +4. `yagyjt.com` 的旧 family 跳转链仍混乱或存在多跳 +5. `www.ningxiaowei.com` 的 `/video-info/...` 仍无法确认唯一规范落点 +6. 团队复盘时仍然只能靠单个 `latest` 文件做判断 + +这类结果说明: + +- 这轮动作还没真正打到百度抓取主矛盾 +- 后续不能只做日报,应回到问题拆解本身 + +--- + +## 三、首周重点验收项 + +### 1. 站群入口层 + +验收问题: + +1. `robots_requests` 是否更稳 +2. `sitemap_requests` 是否更稳 +3. 入口层 `403/444` 是否下降 + +达标判断: + +- 至少要看到入口层异常占比下降 + +### 2. 站群分类层 + +验收问题: + +1. `category_requests` 是否高于 Day0 +2. 分类页 `200` 是否开始出现并连续存在 + +达标判断: + +- 不能再长期停留在“几乎没有分类抓取” + +### 3. 站群深页层 + +验收问题: + +1. `detail_requests` 是否保持或提升 +2. `play_requests` 是否保持或提升 +3. 深页 `301` 是否被更多 `200` 替代 + +达标判断: + +- 不是深页请求消失 +- 而是更少绕路地到达规范深页 + +### 4. 样板站 `yagyjt.com` + +验收问题: + +1. `/robots.txt` 是否更稳 +2. `/sitemap_index.xml` 是否更稳 +3. `/` 与 `/videotype/1-dian-ying` 是否更稳 +4. `/voddetail/...`、`/vodplay/...` 是否仍稳定单跳 + +达标判断: + +- 入口层异常下降 +- 旧 family 继续稳定收口到规范 family + +### 5. 样板站 `www.ningxiaowei.com` + +验收问题: + +1. `/video-info/...` 是否仍然存在重复跳转 +2. 是否已确认唯一规范详情落点 +3. `301 + 200` 是否正在向更干净的承接收敛 + +达标判断: + +- 详情页规范链更短、更唯一 + +--- + +## 四、首周复盘时只回答这 8 条 + +7 天后复盘时,不需要再写长文,只要回答下面 8 条: + +1. 站群 `403/444` 相比 Day0 是升、平还是降 +2. `category_requests` 相比 Day0 是升、平还是降 +3. 站群深页 `200` 是否增加 +4. `yagyjt.com` 的入口层异常是否明显减少 +5. `yagyjt.com` 的旧 family 是否仍稳定单跳 +6. `www.ningxiaowei.com` 的 `/video-info/...` 是否已接近唯一规范落点 +7. 这轮应判定为 `达标 / 部分达标 / 未达标` +8. 下一轮是继续放大,还是先回头修正策略 + +--- + +## 五、极简首周结论模板 + +如果后续只是在聊天里给主 Codex 或人工快速交班,直接按下面格式: + +```md +老模板首周验收: + +结论等级: +- 达标 / 部分达标 / 未达标 + +核心判断: +1. +2. +3. + +样板站结果: +- yagyjt.com: +- www.ningxiaowei.com: + +首周最大进步: +1. +2. + +首周最大卡点: +1. +2. + +下一轮建议: +``` + +--- + +## 六、一句话交接 + +> 老模板首周验收的关键,不是急着宣布“有没有首页词”,而是确认入口层是否更稳、分类层是否起量、深页承接是否更干净,只要这三条站住,后续百度首页拿量才值得继续加码。 diff --git a/docs/old-tmp-seo/37-老模板主Codex启动提示词-2026-04-17.md b/docs/old-tmp-seo/37-老模板主Codex启动提示词-2026-04-17.md new file mode 100644 index 0000000..4902760 --- /dev/null +++ b/docs/old-tmp-seo/37-老模板主Codex启动提示词-2026-04-17.md @@ -0,0 +1,120 @@ +# 1306-SEONexus 老模板主 Codex 启动提示词 - 2026-04-17 + +## 目的 + +这份文档给“新开一个主 Codex 会话继续老模板 SEO”时直接复制使用。 + +目标只有一个: + +- 不要再让新会话跑偏到 GPT 模板 +- 不要再回到泛分析 +- 直接沿着老模板 `1001-1005` 主线推进 + +--- + +## 一、直接复制版 + +```md +你这次只负责老模板 SEO 主线,不要混入 GPT 模板。 + +先固定 5 条边界: + +1. 当前只看老模板 `1001-1005` + - `videoDadi` + - `videoDingZhu` + - `videoBoKu` + - `videoLaoNiu` + - `videoNuNu` +2. 不要把 `videoGpt1` 拉进这轮分析、实现、验收 +3. 当前样板站只优先看: + - `yagyjt.com` + - `www.ningxiaowei.com` +4. 当前主目标不是空谈排名,而是持续推进: + - 入口层稳定度 + - 分类层起量 + - 深页承接质量 +5. 不要把 `latest/spider-crawl.summary.json` 当成 24h 全景 + - 判断趋势时,要以 workbench 24h 聚合视角为准 + +请先按下面顺序阅读文档: + +1. `/www/wwwroot/VideoSource2/docs/old-tmp-seo/README.md` +2. `/www/wwwroot/VideoSource2/docs/old-tmp-seo/36-老模板首周验收清单-2026-04-17.md` +3. `/www/wwwroot/VideoSource2/docs/old-tmp-seo/35-老模板每日复盘模板-2026-04-17.md` +4. `/www/wwwroot/VideoSource2/docs/old-tmp-seo/34-老模板7天SEO跟踪板-2026-04-17.md` +5. `/www/wwwroot/VideoSource2/docs/old-tmp-seo/33-老模板样板站Day1执行单-2026-04-17.md` +6. `/www/wwwroot/VideoSource2/docs/old-tmp-seo/32-老模板样板站URL-Family对照表-2026-04-17.md` +7. `/www/wwwroot/VideoSource2/docs/old-tmp-seo/31-老模板样板站域名级SEO任务单-2026-04-17.md` +8. `/www/wwwroot/VideoSource2/docs/old-tmp-seo/30-老模板最新蜘蛛日志实战分析-2026-04-17.md` +9. `/www/wwwroot/VideoSource2/docs/old-tmp-seo/01-老模板第一阶段回灌执行文档.md` +10. `/www/wwwroot/VideoSource2/docs/old-tmp-seo/1270-SEONexus-Codex多版本协作交接总文档.md` + +当前你的工作方式: + +1. 先按 `1302` 执行 Day1 重点 +2. 每天按 `1304` 复盘 +3. 7 天内按 `1303` 跟踪趋势 +4. 到首周按 `1305` 给出 `达标 / 部分达标 / 未达标` + +当前必须记住的判断: + +1. `yagyjt.com` + - 当前规范 family 是: + - `/shipin/...` + - `/shipin-play/...` + - `/shipinfenlei-...` + - 当前百度仍在消费旧 family: + - `/voddetail/...` + - `/vodplay/...` + - `/videotype/...` + - 它的核心问题是: + - 入口层 `444/403` + - 旧 family 预算消耗 + +2. `www.ningxiaowei.com` + - 当前规范详情 family 本身就是: + - `/video-info/...` + - 不要再误判成旧 family + - 它的核心问题是: + - `www / 裸域` + - `http / https` + - 重复跳转链 + +输出要求: + +1. 先给出当前主结论 +2. 再给出今天相对 Day0 的变化 +3. 再给出两个样板站各自的当前状态 +4. 最后只写“明天第一步” + +如果要动代码: + +1. 只动老模板相关文件 +2. 不要影响 `videoGpt1` +3. 优先验证是否真的改善: + - 入口层 + - 分类层 + - 深页承接 + +如果只做分析: + +1. 不要重复泛泛总结 +2. 必须落到样板站 +3. 必须落到第二天可执行动作 +``` + +--- + +## 二、适用场景 + +适合下面几种接手方式: + +1. 新开主 Codex 会话继续老模板 SEO +2. 跨机器继续老模板蜘蛛日志分析 +3. 需要把当前主线重新拉回老模板,不再混 GPT 模板 + +--- + +## 三、一句话交接 + +> 这份启动词的核心作用,就是把新会话直接锁进“老模板 5 套 + 两个样板站 + 7 天跟踪与验收”这条主线里,不再让任务边界发散。 diff --git a/docs/old-tmp-seo/38-老模板SEO交班总览-2026-04-17.md b/docs/old-tmp-seo/38-老模板SEO交班总览-2026-04-17.md new file mode 100644 index 0000000..ce3eb2c --- /dev/null +++ b/docs/old-tmp-seo/38-老模板SEO交班总览-2026-04-17.md @@ -0,0 +1,208 @@ +# 1307-SEONexus 老模板 SEO 交班总览 - 2026-04-17 + +## 目的 + +这份文档是老模板 SEO 这条线的最终交班入口页。 + +它不承担长篇分析,而是只做三件事: + +1. 用一页把当前主线说清楚 +2. 告诉下一位接手者先看哪些文档 +3. 告诉主 Codex 现在最该做什么,不该做什么 + +如果后续只允许交接一份文档,优先交这份。 + +--- + +## 一、当前主线一句话 + +这轮工作的真实主线是: + +> 只围绕老模板 `1001-1005` 做 SEO 推进,不混入 `videoGpt1`;当前先拿 `yagyjt.com` 和 `www.ningxiaowei.com` 做样板站,把入口层稳定度、分类层起量、深页承接质量这 3 条主线持续往上推。 + +--- + +## 二、先把边界钉死 + +### 当前只看老模板 5 套 + +- `1001 = videoDadi` +- `1002 = videoDingZhu` +- `1003 = videoBoKu` +- `1004 = videoLaoNiu` +- `1005 = videoNuNu` + +### 当前明确不混入 + +- `1007 = videoGpt1` + +这点已经在前面多轮分析里反复确认过,后续新会话如果再把 GPT 模板拉进来,就属于任务跑偏。 + +--- + +## 三、当前阶段结论 + +截至 `2026-04-17` 晚间,这条老模板主线已经确认了下面几件事: + +1. 老模板不是“百度完全没来” + - 当前已经有深抓样本 +2. 当前主要矛盾不是 `500` + - 而是 `301 / 403 / 444` +3. 当前最该做的不是泛分析 + - 而是盯样板站推进 +4. 当前最该盯的两个样板站是: + - `yagyjt.com` + - `www.ningxiaowei.com` + +--- + +## 四、两个样板站怎么理解 + +### `yagyjt.com` + +它的价值在于: + +- 已经有百度深抓 +- 同时入口层问题还很明显 + +当前它的核心问题是: + +1. `robots / sitemap / 首页 / 分类页` 上存在 `444/403` +2. 百度仍在消费旧 family: + - `/voddetail/...` + - `/vodplay/...` + - `/videotype/...` + +而它当前真正的规范 family 是: + +1. `/shipin/...` +2. `/shipin-play/...` +3. `/shipinfenlei-...` + +所以 `yagyjt.com` 的主线目标很明确: + +- 压入口层异常 +- 让旧 family 继续稳定单跳到规范 family +- 观察分类层是否能继续起量 + +### `www.ningxiaowei.com` + +它的价值在于: + +- 当前规范详情 family 已经被百度真实消费 +- 但跳转链还不够干净 + +要特别记住: + +- `/video-info/...` 对它来说就是当前规范详情 family +- 不能再误判成旧 family + +它的核心问题是: + +1. `www / 裸域` +2. `http / https` +3. 重复跳转链 + +所以 `www.ningxiaowei.com` 的主线目标是: + +- 压缩详情页跳转链 +- 确认唯一规范落点 + +--- + +## 五、当前最重要的数据口径 + +当前看趋势时,必须记住这个边界: + +- `latest/spider-crawl.summary.json` 只代表最近一次 push 摘要 +- 不等于最近 `24h` 全局聚合 + +真正判断趋势时,要以: + +- `DomainSpiderCrawlWorkbenchHelper::buildSummary(..., windowHours=24, selectedBots=baiduspider,bytespider,sogou)` + +这条 `24h workbench 聚合` 视角为准。 + +当前 Day0 基线是: + +- 总请求:`72` +- `home = 33` +- `detail = 21` +- `play = 4` +- `category = 1` +- `sitemap = 2` +- `robots = 11` +- 状态: + - `200 = 34` + - `301 = 24` + - `444 = 8` + - `403 = 6` + - `500 = 0` + +--- + +## 六、主 Codex 现在最该做什么 + +按顺序: + +1. 先按 Day1 执行单推进 +2. 每天按固定模板复盘 +3. 用 7 天跟踪板看趋势 +4. 到首周按验收清单判定结果 + +更具体地说: + +1. 先盯 `yagyjt.com` 的入口层 +2. 再盯 `yagyjt.com` 的旧 family 单跳是否稳定 +3. 再盯 `www.ningxiaowei.com` 的 `/video-info/...` 跳转链是否变短 +4. 每天都要回答: + - 入口更稳了吗 + - 分类起来了吗 + - 深页更干净了吗 + +--- + +## 七、主 Codex 现在不要做什么 + +1. 不要把 GPT 模板拉回这条线 +2. 不要把单个 `latest` 文件当成全天全景 +3. 不要把 `www.ningxiaowei.com` 的 `/video-info/...` 误判成旧 family +4. 不要只做泛泛结论,不落到样板站 +5. 不要只看“有没有首页词”,忽略前置抓取信号 + +--- + +## 八、推荐阅读顺序 + +如果是新的主 Codex 会话,最稳顺序是: + +1. [37-老模板主Codex启动提示词-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/37-老模板主Codex启动提示词-2026-04-17.md) +2. [36-老模板首周验收清单-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/36-老模板首周验收清单-2026-04-17.md) +3. [35-老模板每日复盘模板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/35-老模板每日复盘模板-2026-04-17.md) +4. [34-老模板7天SEO跟踪板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/34-老模板7天SEO跟踪板-2026-04-17.md) +5. [33-老模板样板站Day1执行单-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/33-老模板样板站Day1执行单-2026-04-17.md) +6. [32-老模板样板站URL-Family对照表-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/32-老模板样板站URL-Family对照表-2026-04-17.md) +7. [31-老模板样板站域名级SEO任务单-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/31-老模板样板站域名级SEO任务单-2026-04-17.md) +8. [30-老模板最新蜘蛛日志实战分析-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/30-老模板最新蜘蛛日志实战分析-2026-04-17.md) +9. [17-老模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/17-老模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md) +10. [01-老模板第一阶段回灌执行文档.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/01-老模板第一阶段回灌执行文档.md) +11. [1270-SEONexus-Codex多版本协作交接总文档.md](/www/wwwroot/VideoSource2/docs/1270-SEONexus-Codex多版本协作交接总文档.md) + +--- + +## 九、最终交班只要说这 6 条 + +如果后续你要给主 Codex 或人工做最短交班,只要说这 6 条就够: + +1. 当前只做老模板 `1001-1005`,不混 GPT 模板 +2. 当前样板站是 `yagyjt.com` 和 `www.ningxiaowei.com` +3. 当前主要矛盾不是 `500`,而是 `301 / 403 / 444` +4. 当前趋势要看 `24h workbench 聚合`,不要只看 `latest` +5. 每天按 `1304` 复盘,7 天按 `1303` 跟踪,首周按 `1305` 验收 +6. 新会话直接从 `1306` 启动 + +--- + +## 十、一句话交接 + +> 这轮老模板 SEO 已经不是“要不要继续分析”的问题,而是“已经把边界、样板站、节奏、验收都定好了,主 Codex 只需要沿着这条线持续推进并每天看到小进步”。 diff --git a/docs/old-tmp-seo/README.md b/docs/old-tmp-seo/README.md new file mode 100644 index 0000000..76897ba --- /dev/null +++ b/docs/old-tmp-seo/README.md @@ -0,0 +1,36 @@ +# Old Tmp SEO + +这个目录只放老模板 SEO 这条支线的文档。 + +当前范围已经固定: + +- 只看老模板 `1001-1005` +- 不混入 `videoGpt1` +- 当前样板站: + - `yagyjt.com` + - `www.ningxiaowei.com` + +如果你是第一次进这个目录,按这个动作顺序看: + +1. 第 1 步:先看 [38-老模板SEO交班总览-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/38-老模板SEO交班总览-2026-04-17.md) + 作用:先用一页搞清楚当前主线、边界、样板站和节奏。 +2. 第 2 步:再看 [37-老模板主Codex启动提示词-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/37-老模板主Codex启动提示词-2026-04-17.md) + 作用:如果要新开会话,直接复制这份启动词。 +3. 第 3 步:执行 [33-老模板样板站Day1执行单-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/33-老模板样板站Day1执行单-2026-04-17.md) + 作用:当天先做什么,直接按这里推进。 +4. 第 4 步:每天用 [35-老模板每日复盘模板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/35-老模板每日复盘模板-2026-04-17.md) + 作用:统一日报和接手口径。 +5. 第 5 步:到首周用 [36-老模板首周验收清单-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/36-老模板首周验收清单-2026-04-17.md) + 作用:统一判定达标、部分达标还是未达标。 + +如果你要往下深读,再按下面顺序补: + +1. [34-老模板7天SEO跟踪板-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/34-老模板7天SEO跟踪板-2026-04-17.md) +2. [32-老模板样板站URL-Family对照表-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/32-老模板样板站URL-Family对照表-2026-04-17.md) +3. [31-老模板样板站域名级SEO任务单-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/31-老模板样板站域名级SEO任务单-2026-04-17.md) +4. [30-老模板最新蜘蛛日志实战分析-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/30-老模板最新蜘蛛日志实战分析-2026-04-17.md) +5. [17-老模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/17-老模板5套蜘蛛日志纠偏与SEO提示-2026-04-17.md) + +一句话: + +> 这个目录就是老模板 SEO 专属工作区,公共协作请回 `docs/` 根目录,老模板推进请从这里继续。