Community写作与编辑github.com

ethanplusai/网站上线后检查工具

DNS切换后立即验证上线是否成功,并在接下来的30天内持续监控,确保网站正常运行。

网站上线后检查工具 是什么?

该技能用于验证网站上线后的切换是否成功,并在30天内持续监控。它会在DNS切换后立即运行,检查DNS传播、证书、HTTP和WWW重定向、noindex标签、robots文件、sitemap、所有审计映射的重定向、表单、分析工具、暂存副本、旧主机和安全头等关键项目。技能还会将生产环境与上线前的基线进行差异比较,并安排每日监控。它完全只读,无论发现什么问题都返回退出码0,仅提供报告而不进行任何修复或公告。支持cutover(切换验证)和watch(每日监控)两种模式,需要用户提供生产URL、基线文件、重定向映射等输入。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ethanplusai/astro-conversion-kit/tree/HEAD/skills/post-launch

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

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

文档

网站上线后检查工具 是做什么的?

监控工具。在DNS切换后立即运行,然后每天运行一次,持续三十天。它只报告;从不阻止、从不修复、也从不发布任何公告。

唯一规则

阻止项优先读取,最后宣布。 上线过程中的任何内容在报告确认无误前不得宣布——不发送邮件、不发布帖子、不联系客户。公告是上线流程中唯一无法撤回的步骤,而这里的两个阻止项正是上线尚未真正发生的两种状态:访问者无法通过的证书,以及告诉搜索引擎遗忘网站的noindex标签。这两种情况在您已登录的浏览器中都看起来正常。

如果有人要求您在阻止项存在时宣布,请直截了当地说明阻止项是什么及其代价,不要粉饰。

只读

该技能是只读的。它会获取线上站点、暂存主机、旧主机以及重定向映射中的URL,并向四个公共DNS解析器查询域名指向何处。它只写入两样东西,且都是操作者自己的记录:报告包以及其中的watch.json文件。它从不编辑站点、提交表单、切换设置、调用提供商API或修改DNS。

以下三条规则在您报告时必须重述:

  1. 每个发现都要有证据。 一个URL、一个状态码、一个响应头、一条DNS应答、一行CSV数据。
  2. 跳过不等于通过。 您未提供的每个输入都会在未覆盖中生成一行命名条目。
  3. 未覆盖永远不能当作通过。 您需逐字向用户重复该部分。

两种模式

模式何时使用回答什么问题
--mode cutoverDNS切换后以及每次修复后上线是否真的发生了
--mode watch每天一次,第1-30天今天有什么待办事项,是否有变化

先运行cutover,修复发现的问题,再次运行直到无阻塞项,然后宣布。当天启动监控。

1. 收集输入

您遗漏的每个输入都会导致一项检查无法运行。请逐个询问,不要猜测。

  • 生产URL。 必填。
  • baseline.json — 来自pre-launch包,或来自切换前针对暂存环境的launch-audit运行。这是衡量“是否有任何变化”的基准。没有它,四项检查将无比较对象,第五项将回退到--expect-analytics。所有这些都会明确说明。
  • redirects.csv — 来自使用--old-url构建的launch-audit包。每一行都会在其写入时的URL处重新请求。
  • 旧站点的URL,如果有站点被替换。
  • 暂存URL,以便运行确认暂存副本现已封存。
  • 分析工具测量ID,用于没有基线时。
  • 预期DNS记录,格式为apex=<ip>,www=<host>。

如果您没有基线或重定向映射,请在运行前说明,而非之后:它们来自前两个阶段,且在切换后无法重新生成。

2. 运行切换检查

运行脚本;永远不要阅读其源代码,也不要重新实现其功能。

node scripts/post-launch.mjs --mode cutover --url <production url> \
  --baseline <path to baseline.json> --redirects <path to redirects.csv> \
  --old-url <old site url> --staging-url <staging url> \
  --expect-analytics <measurement id> --expect-dns apex=<ip>,www=<host> --out <dir>

路径相对于该技能自身的目录——从该目录运行命令。包写入当前工作目录:如果不使用--out,则输出到./website-launch/<host>-post-launch-<date>/,结合上述命令意味着该技能自身目录内。使用--out将包写入工作所在任意目录。

其他标志:--dev-host <host>(可重复)、--browser auto|on|off、--out <dir>、--config <path>、--json、--help。

退出码: 无论切换如何糟糕,始终返回0。2表示使用错误或IO故障。退出码0绝不意味着“上线正常”——它只报告,不阻止。请阅读报告。

3. 按此顺序阅读报告

references/reading-the-report.md包含包布局。references/cutover-day.md解释了当天的运行顺序——在您开始乱序修复问题前请先阅读。

  1. 阻止项。 以粗体打印,无论它们来自哪一步。在其他问题之前修复它们,且在告知任何人站点已上线之前。
  2. 高风险发现。 重定向漂移、缺失页面、死表单端点、仍活跃的暂存副本、仍在服务的旧主机——这些都是当前导致流量或咨询损失的问题。它们是今天的工作,而非下周的。
  3. 基线差异。 references/baseline-diff.md说明了哪些字段在上线时预期会变化,哪些从不应该变化。不要将整个差异报告为损害;只报告未请求的部分。
  4. 中风险和通知。 阅读它们。说明内容。今天不修复。
  5. 未覆盖,逐字。 每一行,未经编辑,包括爬虫无法看到的两项内容。

然后重新运行,并持续重新运行,直到阻止项消失。

4. 处理六项人工任务

它们会在每次运行结束时打印,且不可省略:

提交站点地图(Search Console和Bing)   ·   请求索引顶部页面
确认新的Search Console属性        ·   实时验证分析工具
保持旧主机运行并重定向            ·   仅在此项确认无误后宣布

切勿代他人勾选项。“端点返回200”不是“某人收到了测试提交”,“HTML中有标签”也不是“实时出现了数据”。

5. 每日运行监控

node scripts/post-launch.mjs --mode watch --url <production url> --day <n>

它会打印逾期项目、今天到期的项目以及未来七天即将到期的项目,然后重新运行自动化部分并记录运行。references/thirty-day-watch.md包含完整的日程安排、每天在Search Console和分析工具中检查的内容,以及“正常”状态的定义,以免将正常的发布后流量下降报告为灾难。

省略--day,它会从第一次运行开始计数。未运行监控的天数,自动化任务的逾期状态会持续到覆盖运行完成;人工任务的逾期状态会持续到人工确认,因为脚本无法证明某人打开了Search Console。

6. 第30天

两项任务,均非自动化:

  • 回顾总结。 哪些地方出现了回退,重定向映射遗漏了什么,以及应在pre-launch关卡中添加什么以避免下次上线重复出现。记录下来。
  • 旧主机决策。 只有当Search Console显示不再爬取旧URL且重定向已生效至少30天时,才能停用旧主机。两个条件都满足之前,请继续为其付费。过早关闭会丢弃旧站点获得的所有链接。

7. 呈现结果

以结论而非计数开头。

  1. 判决。 “切换存在一个阻止项”或“切换无错误。”一句话。
  2. 阻止项是什么,并指出修复方法。
  3. 什么问题正在造成损失,按原因分组:高风险发现,用通俗语言说明。
  4. 与基线相比哪些变化并非请求的。
  5. 未覆盖,逐字。
  6. 人工任务,说明哪些已完成,哪些未完成。
  7. 是否可以宣布上线。 明确说明是或否。

两项永远不运行的检查

  • 文案与源文档对比。 无法将线上页面文字与已审批文案进行比较。需要人工阅读两者。
  • 页面与商定范围对比。 无法知道哪些页面本应存在。从未构建的页面在此处不可见。

参考文档

文件涵盖内容
references/cutover-day.md有序的当天脚本,以及每一步如此安排的原因
references/thirty-day-watch.md日程安排、Search Console和分析工具中需检查的内容、正常状态的定义、旧主机规则
references/baseline-diff.md每个差异字段,哪些变化在上线时预期出现,哪些不预期
references/reading-the-report.md包结构、严重性级别、ID、如何分类

与其他工具的关系

pre-launch在部署前把关仓库并阻止问题。launch-audit爬取暂存或生产URL并报告。post-launch即本工具:切换验证及上线后三十天监控。按此顺序运行——本工具所需的基线和重定向映射只能由前两个工具生成,且必须在旧站点仍在线时进行。

Individual skills in this repo

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

ethanplusai/astro-conversion-kit

Crawl a live website, read-only and paced, into a capture/ folder that a rebuild is checked against — every page's HTML, text and head tags, redirects with every hop, links, third-party scripts, the media set, stylesheets, fonts, logo and icons, feeds, templates, and live screenshots at three widths. Use before converting or rebuilding a site, when asked to crawl, capture, snapshot or inventory a site, or when a capture stopped on blocks and needs resuming.

ethanplusai/astro-conversion-kit

Convert a live website (WordPress first; Drupal, Webflow, Squarespace, Wix and static sites too) into a static Astro site with the same URLs, content, head tags, media, redirects and look, proven by parity gates and a pixel-level visual review, ending in one pull request, a noindexed staging deploy and a launch runbook. Use when asked to convert, rebuild, migrate or clone a site to Astro, when handed a site URL with this kit's link, to resume a conversion from .conversion/state.json, or with --apply <id> to apply one suggestion as a proposal.

ethanplusai/astro-conversion-kit

Audit a live or staging website and report what would go wrong at launch — crawl and inventory, indexability, redirects for a domain cutover, links, images, forms, accessibility, performance, analytics, content sanity, and full-page screenshots for a visual pass. Use before or right after a site launch, when asked to QA, audit, or review a website, when a site is moving to a new domain, or when somebody asks whether a site is ready to go live. Read-only: it never submits a form, clicks a control, or edits anything.

ethanplusai/astro-conversion-kit

Freeze a site capture into baseline/ and prove an Astro build matches it — every route, redirect (one hop, through a simulation of the host), SEO head field, visible text, internal link, media file, sitemap entry, feed, form, third-party script and security header — with approved differences in exceptions.json and improvements in proposals.json. Use after a capture to build the baseline, when compiling redirects.csv for Vercel or Cloudflare, before calling any conversion page done, when a gate fails and needs reading, or to check a staging deploy against the baseline.

相关技能