Community编程与开发github.com

index-push

当用户希望新页面或修改后的页面能被 Google 和 Bing 快速抓取并收录,而无需等待数周等待 sitemap 被读取时使用。在每次部署添加或更新页面后,以及当用户说“让这个被收录”、“请求索引”、“提交到 Google”、“提交 URL 到 Bing”、“IndexNow”、“ping 搜索引擎”、“重新提交 sitemap”、“为什么我的页面没被收录”、“已发现 - 目前未收录”、“Google 未知此 URL”、“Search Console 配额超限”或“索引队列”时使用。涵盖 IndexNow、Search Console URL 检查和 sitemap、Bing 站长 URL 提交、优先级队列文件以及诊断无法收录的页面。

index-push 是什么?

该技能提供了一套系统化的流程,用于在页面上线后快速将其提交给搜索引擎(Google 和 Bing),加速收录。它整合了 IndexNow、Google Search Console 的 URL 检查和 Sitemap 重新提交、Bing 站长工具的 URL 提交四种渠道,并配有一个基于仓库的优先级队列文件来追踪和管理提交进度。技能的核心在于提供详细的诊断和排查指南,帮助用户识别页面未被收录的根本原因,并给出针对性的解决方案(如添加内部链接、修复规范标签等),而不是无脑重复提交。该技能适用于任何需要主动控制搜索索引状态的 Web 开发者和内容编辑,尤其在处理新域名、大流量部署或急需收录的时效性内容时非常有用。它作为指令和操作手册,指导用户在终端运行脚本(IndexNow)和通过浏览器手动操作(Search Console / Bing Webmaster),并强调在人工操作时遵循“人性化节奏”和“不脚本化 UI”的规则。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ummydev/marketing-team-skills/tree/HEAD/skills/index-push

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

索引推送

页面发布不代表它会被抓取。对于一个新域名,Google 可能会在 sitemap 中找到一个 URL 后等待数周才处理。本技能是页面发布当天及后续跟进直至被收录的例行流程。请使用所有四种渠道;它们覆盖不同的搜索引擎,并有不同的限制。

渠道覆盖范围每日限制操作方法
IndexNow (scripts/indexnow.mjs)Bing, Yandex, Naver, Seznam, Yep。不包括 Google每次请求最多 10,000 个 URL一条命令
Search Console URL 检查 → 请求索引Google每个资源约 10 个 URL;大约在美国太平洋时间午夜重置浏览器,一次一个 URL
Search Console Sitemap → 重新提交Google基本没有实际限制浏览器,一个字段
Bing 站长工具 → 提交 URLBing100 个 URL浏览器,粘贴列表

对我们而言,请求索引是推动 Google 收录的关键:八个处于“未知”或“已发现”状态的 URL 在我们请求后大约一天内全部被收录。仅靠 Sitemap 和 IndexNow 会让 Google 页面继续等待。

浏览规则。 Search Console 和 Bing 站长是需要登录的站点:请以人类的速度逐页操作,切勿编写脚本自动化操作其界面。这同样适用于任何社交网站。如果某个站点对您进行限速或封锁,请停止操作并告知用户。

一次性设置

  1. Search Console: 添加一个“域名”资源(通过 DNS TXT 记录验证)。切勿删除该 TXT 记录;否则验证将失效。
  2. Bing 站长工具: 最快的方法是“从 Google Search Console 导入”。GSC 的域名资源无法导入;Bing 会创建一个 URL 前缀站点(如 https://example.com/)来代替,这同样有效。同时在该处也提交 sitemap。
  3. IndexNow 密钥文件,在首次提交之前部署:
    KEY=$(openssl rand -hex 16)
    printf '%s' "$KEY" > public/$KEY.txt          # 任何在站点根目录下提供服务的文件夹
    # 提交、部署,然后确认它能打印出密钥且只打印密钥:
    curl -s "https://example.com/$KEY.txt"
    
    此密钥设计为公开的(任何人都可以读取该文件),因此可以放在 package.json 中: "seo:indexnow": "INDEXNOW_KEY=<key> node scripts/indexnow.mjs --host example.com"
  4. 队列文件 docs/seo/index-queue.md(模板如下),提交到仓库。不要放在临时或 scratch 文件夹中。

工作流程:页面发布的当天

  1. 检查页面是否已上线。 对于自己的站点,按顺序请求:
    for p in /blog/new-post /zh/blog/new-post; do
      curl -s -o /dev/null -w "%{http_code} $p\n" "https://example.com$p"
    done
    curl -s https://example.com/blog/new-post | grep -o '<link rel="canonical"[^>]*>'
    
    每个 URL 必须返回 200(非重定向)、包含自引用的规范标签、出现在 sitemap 中,并且至少被一个 Google 已经抓取的页面(首页、博客索引、页脚的“最新文章”块、相关文章)链接。不要提交任何不满足这些条件的 URL。
  2. IndexNow。
    npm run seo:indexnow -- /blog/new-post /zh/blog/new-post
    npm run seo:indexnow -- --sitemap        # 在大版本发布后,或不确定哪些内容已更改时使用
    
    返回 200 或 202 表示被接受(在验证新密钥期间返回 202 是正常的)。403:密钥文件未上线或其内容不一致。422:某个 URL 位于其他主机上,通常是 www. 与裸域名之间的差异。
  3. 更新队列。 通过将线上 sitemap 与已提交的快照进行差异对比,找出自上次运行以来新增的内容(首次运行时,只需保存快照;--dry-run 不需要密钥):
    node scripts/indexnow.mjs --host example.com --sitemap --dry-run 2>/dev/null | sort > sitemap-now.txt
    comm -13 docs/seo/sitemap-snapshot.txt sitemap-now.txt     # 自快照以来新增的 URL
    mv sitemap-now.txt docs/seo/sitemap-snapshot.txt
    
    队列排序依据:(1) 今天发布的页面,最新的优先;(2) 主要语言优先于翻译,例如英语优先于中文;(3) 时效性强的主题(版本发布、服务下线)优先于常青内容;(4) 内容发生实质性更改的已有页面。其他语言版本放在最后。
  4. 在 Search Console 中重新提交 sitemap 当添加了大量 URL 或新板块时:Sitemap → 输入 https://example.com/sitemap.xml → 提交。将“已发现页面”数量与您自己的计数进行比较。它可能会过时:我们的 sitemap 显示 243,直到重新提交后才显示 423。
  5. 在 Search Console 中请求索引,从队列顶部开始向下操作:
    • 打开 Search Console 并检查 URL 中的帐户(/u/0/、/u/1/、/u/2/)是否显示了该资源。索引在不同日期可能会变化;使用显示该资源的那个帐户。
    • 将 URL 粘贴到顶部的检查栏中,等待结果,点击请求索引,等待实时测试完成(大约一分钟)。
    • 仅当出现“已请求索引”对话框时才计为成功。没有对话框意味着请求未成功,通常是因为该帐户缺乏权限。
    • 首次尝试时出现“出现问题”:重试一次。通常能成功。
    • “超出配额”:当日停止操作;配额大约在美国太平洋时间午夜重置。预计每天约 10 个。
    • 在队列行中写入日期。
  6. Bing 提交 URL: Bing 站长工具 → URL 提交 → 提交 URL → 从队列中粘贴接下来的 URL,每行一个,最多不超过页面显示的剩余配额(每天 100 个)。在队列行中写入日期。
  7. 记录 在 docs/seo/log.md 中为每个操作记录一行,并附上部署或提交引用:
    • main=abc1234 已上线。IndexNow 18 个 URL → 200。GSC 请求了 10 个(第 11 个超出配额)。Bing 提交了 100 个,队列中剩余 44 个。

跟进,1 到 3 天后

在 URL 检查工具中检查最新的页面(Bing 也有类似的 URL 检查工具,状态类似):

状态含义操作
URL 在 Google 中已收录标记为已收录,从队列中移除,记录日志
Google 未知此 URL不在 Google 已读取的 sitemap 中,未找到链接重新提交 sitemap,添加内部链接,请求索引
已发现 - 目前未收录,引用页面:未检测到Google 仅通过 sitemap 知道该 URL,尚未抓取从已被抓取和访问的页面添加链接;获取外部链接;请求索引
已抓取 - 目前未收录已获取但判定为暂不值得收录检查是否存在内容单薄或近似重复(翻译、模板化页面);改进或合并。更多请求无济于事
重复,Google 选择了不同的规范 URL规范标签或 hreflang 混乱修复规范标签;确保不同语言版本的内容不雷同
重定向页面 / 未找到 (404)sitemap 中的 URL 错误修复 sitemap

“引用页面:未检测到”是关键线索:解决方案是添加链接,而不是更多提交。对我们有效的方法是:在页脚添加一个模块,链接来自首页和热门指南的最新五篇文章,在相关文章之间建立交叉链接,以及一个公共 GitHub 仓库,其 README 链接到这些页面。

Search Console 的效果数据存在 2-3 天的延迟。不要根据昨天的数据来判断页面效果。

队列文件模板

# 索引队列
顶部 = 下一个提交。排序:最新的优先;英语和中文优先于其他语言。
限制:Google 请求索引每天约 10 个/资源(大约在美国太平洋时间午夜重置)。Bing 提交 URL 每天 100 个。

| URL | 添加日期 | Google 请求日期 | Bing 提交日期 | 已收录日期 |
|---|---|---|---|---|
| https://example.com/blog/new-post | 2026-11-07 | 11-08 | 11-07 | |
| https://example.com/zh/blog/new-post | 2026-11-07 | | 11-07 | |

检查清单

  • 每个 URL 已上线:返回 200,自带规范标签,在 sitemap 中,且被已抓取页面链接
  • IndexNow 为新增和更改的 URL 返回了 200 或 202
  • 队列已更新并按优先级排序
  • 在大量添加后重新提交了 Sitemap,且已发现计数匹配
  • Search Console 请求索引达到配额上限,且每个请求都通过对话框确认成功
  • Bing 提交 URL 达到配额上限
  • 日志行已写入,包含提交或部署引用;已记录后续检查日期

我们踩过的坑

  • 请求索引连续三天无效。 从未出现确认对话框。浏览器的默认 Google 帐户没有资源访问权限;在拥有该资源的帐户(不同的 /u/N/)下打开 Search Console 后立即修复。几天后,该资源又在另一个索引下打开。
  • “无效的 sitemap 地址”。 在域名资源上,输入 sitemap.xml 会失败;完整的 https://example.com/sitemap.xml 才能生效。
  • Sitemap 计数过时。 在站点有 100 个页面后,Search Console 仍然只显示 11 个已发现页面,直到我们重新提交;后来又是 243 对比 423。
  • 无链接页面保持隐身。 两篇没有内部链接的指南在发布数天后仍处于“Google 未知此 URL”状态。
  • 配额猜测。 我们最初以为每天大约可以请求 4 次;实际上是大约 10 次。第 11 次会返回“超出配额”。
  • 当天的首次请求失败,显示“出现问题”。重试后成功。
  • 队列丢失。 一个包含 115 个 URL 的 Bing 列表保存在临时文件夹中,会话重启后丢失,我们不得不从 sitemap 重新构建。请将队列保存在仓库中。
  • 队列超过配额。 在忙碌的一天后,115 个 URL 等待 100 个 Bing 提交名额。优先级顺序决定了哪些先提交:英语和中文的新文章优先,翻译其次。
  • 会话中没有浏览器。 Search Console 和 Bing 需要浏览器;IndexNow 不需要。运行 IndexNow,记录差距,在下一次会话中补上。
  • 202,然后是 200。 IndexNow 对于使用新密钥的首次提交返回 202,之后返回 200。两者都是成功。
  • 翻译内容淹没了配额。 在 441 个 sitemap URL 中,大约 392 个是翻译。手动提交所有这些翻译会耗尽多日的配额,而这些页面在新域名上很少能被收录。

相关技能

  • seo-page:构建本技能用于收录的页面。
  • programmatic-pages:一次性发布大量 URL;队列优先级在此技能中最为重要。
  • multilingual-seo:应优先发布和提交哪些语言版本;hreflang。
  • competitor-pages, trend-keywords:时效性强的页面应排在队列最前面。
  • keyword-research:决定哪些页面应该存在。
  • ai-search:针对 AI 爬虫的 llms.txt 和 robots.txt;Bing 的索引也为 Copilot 提供数据。
  • seo-daily-report:报告哪些页面已被收录以及哪些页面排队等待明天处理。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

ummydev/ai-search

When the user wants to make a site readable, accurate and quotable for AI assistants (ChatGPT, Claude, Perplexity, Gemini, Copilot, Google AI Overviews) so they describe the product correctly and cite it. Use when the user says "llms.txt", "llms-full.txt", "AI search", "GEO", "AEO", "get cited by ChatGPT", "show up in Perplexity answers", "allow AI crawlers", "GPTBot in robots.txt", "AI gets our pricing wrong", "AI confuses us with another product", "brand name collision", "Organization schema sameAs" or "make the site agent-readable". Covers llms.txt, robots.txt for AI crawlers, definition sentences, comparison tables and FAQ, public pricing, Organization and WebSite structured data, and brand naming.

ummydev/remotion-video

When the user wants to make a vertical promo video of their own software product in code with Remotion, rebuilding the product's real UI instead of screen-recording it, with a TTS voice-over, captions timed to the voice and camera moves that zoom into details. Use when the user says "Remotion", "make a product video", "faceless demo video", "UI motion video", "programmatic video", "product reel", "animate our UI", "render the video", or wants a TikTok or Reels video about their app that an agent can re-render after every change.

ummydev/short-video-formats

When the user wants to choose or plan the format of a promo short video for TikTok, Instagram Reels, YouTube Shorts or Xiaohongshu, especially for a software product, dev tool or AI agent. Covers the four formats that carry this category (talking head over a demo, phone filming the screen, faceless UI demo, talking-head open into full-screen demo), screen layout rules, hooks and endings like "comment X and I'll send it", and how to make an AI presenter. Use when the user says "what kind of video should we make", "video format", "talking head", "faceless video", "AI presenter", "AI avatar", "UGC style", "hook ideas", "how should the first frame look", "comment to get the link", or "视频形式".

ummydev/video-retro

When the user wants to review how their short videos performed on TikTok, Instagram Reels or other platforms and decide what to make next. Covers reading views, likes, comments, saves and follows without scraping, the stats log, 24-hour and 72-hour checks, comparing topics, formats and hooks, the daily report and recording what to change. Use when the user says "how did the video do", "video stats", "复盘", "retro", "which videos worked", "why did this flop", "weekly video report", "update the stats", or at the start or end of a short-video working day.

相关技能