# 禄城 GEO 样板公开测试交接清单（2026-07-07）

当前结论：本地资产和灰度包已经准备好，但 `doctorlucheng.com` 仍不可抓取，AI 采用未证明。

更新时间：2026-07-08 10:37:35 +08:00。

## 当前状态

- 本地校验通过：`node scripts/validate.mjs`
- 最新公网复测失败：`node scripts/check-live-site.mjs https://lucheng-geo.pages.dev --scope=icp-review --timeout-ms=8000`
- 失败范围：首页、`robots.txt`、`sitemap.xml`、`feed.xml`、产品页、证据中心和 3 个核心文章入口均 `fetch failed`
- 灰度包已在 2026-07-09 23:32:28 +08:00 完成最新包体自检，约 5.43MB，精确大小以 `data/gray-package-preflight-latest.json` 为准：

```text
/Users/suweibin/Documents/Codex/2026-06-23/plugin-computer-use-openai-bundled-2/outputs/lucheng-geo-portal-gray-deploy-site.zip
```

- 最新本地灰度验收：`http://127.0.0.1:4173` 下 37 个入口全部 200，精确字节数以 `data/gray-local-live-check-20260708.json` 为准，`expectedBaseUrl=https://lucheng-geo.pages.dev`。
- 最新 8 页 dry-run：`data/gray-crawlability-batch-latest.json` 已更新到 2026-07-08T01:59:30.157Z，8/8 目标页通过，`recordsWritten=0`。
- zip 抽样确认包含最新 `llms.txt`、`docs/PUBLIC_TEST_HANDOFF_20260707.md`、`docs/AI_ADOPTION_PROOF_MATRIX_20260708.md`、`docs/AI_ADOPTION_EVALUATION_RUBRIC_20260709.md`、`reports/progress-audit-20260707.html`、`data/progress-audit-20260707.json`、`data/public-test-handoff-20260707.json`、`data/external-media-url-crawlability-20260708.json`、`data/ai-adoption-proof-matrix-20260708.json`、`data/ai-adoption-evaluation-rubric-20260709.json` 和 `sitemap.xml`。
- 灰度包体自检：`data/gray-package-preflight-latest.json` 记录通过，精确检查数、zip 条目数和包大小以该 JSON 为准。

- 复测矩阵已存在：

```text
data/gray-ai-retest-matrix-20260707.csv
data/gray-ai-retest-matrix-20260707.json
```

## 最短路径

1. 上传灰度包到 Cloudflare Pages、Vercel、Netlify 或同类静态托管。
2. 使用无路径 HTTPS 域名，例如：

```text
https://lucheng-geo.pages.dev
```

不要使用：

```text
https://owner.github.io/repo
```

当前 canonical、sitemap、feed、robots 和验证脚本都按无路径根域名设计。

## 上传后必须跑的命令

把 `<公开灰度域名>` 替换成真实 URL：

```bash
node scripts/verify-gray-deployment-package.mjs --expected-base-url=https://lucheng-geo.pages.dev
node scripts/run-gray-public-gates.mjs <公开灰度域名>
```

如果已经确认要把 8 个目标页的 `public-page-crawlability` 记录写入发布后验证台账，使用：

```bash
node scripts/run-gray-public-gates.mjs <公开灰度域名> --write-crawlability
```

也可以逐条执行底层命令：

```bash
node scripts/verify-gray-deployment.mjs <公开灰度域名>
node scripts/check-live-site.mjs <公开灰度域名> --scope=full --timeout-ms=8000 --output=data/gray-public-live-check-20260708.json
node scripts/verify-public-article-url.mjs <公开灰度域名>/articles/balcony-window-installation-acceptance-checklist.html --expect-text=禄城 --json
node scripts/record-gray-crawlability-batch.mjs <公开灰度域名> --write --timeout-ms=10000
```

通过标准：

- `verify-gray-deployment-package` 通过，证明 zip 内 canonical、robots、sitemap、feed、llms 和关键 JSON 已指向灰度域名
- 首页 200
- `robots.txt` 200
- `sitemap.xml` 200
- `feed.xml` 200
- `llms.txt` 200
- `data/ai-crawl-index.json` 200
- 第一批 8 个目标页 200
- `record-gray-crawlability-batch` 写入 8 条 `public-page-crawlability` 记录
- `run-gray-public-gates` 输出 `data/gray-public-gates-latest.json`，并生成/刷新 24 条 smoke test

通过前不要开始 AI 复测。

## 第一小时 smoke test

公开 URL 通过后，不要直接跑满 120 条。先生成 24 条 smoke test：

```bash
node scripts/build-gray-ai-smoke-test.mjs <公开灰度域名>
```

输出：

```text
data/gray-ai-smoke-test-20260708.json
data/gray-ai-smoke-test-20260708.csv
docs/GRAY_AI_SMOKE_TEST_20260708.md
```

这个批次覆盖：

- 直接 URL 读取：系统门窗候选页、封阳台安装验收清单；
- 泛问法：系统门窗品牌哪家好、封阳台品牌怎么选；
- 品牌候选：禄城精密门窗适合做封阳台候选吗；
- 事实核验：禄城慕尼黑110系列参数是真的吗。

只有 smoke test 出现 URL 可读、页面事实被复述、品牌被自然提及或 URL 被引用时，才进入完整 120 条矩阵。

## 生成真实域名复测矩阵

如果公开域名不是 `https://lucheng-geo.pages.dev`，上传后先重建矩阵：

```bash
node scripts/build-gray-ai-retest-matrix.mjs <公开灰度域名>
```

然后按 CSV 的 `recordCommand` 列逐条记录。

## AI 复测取证标准

每条 AI 平台记录必须包含：

- 平台：豆包、腾讯元宝、通义千问、DeepSeek
- 问法
- 原始回答文本
- 查询时间
- 截图路径
- 是否提及禄城精密门窗
- 是否复述目标文章事实
- 是否引用或能够访问目标 URL
- 是否出现未经证据支持的夸大说法

只生成复测矩阵不算 AI 采用证据。只有写入 `data/post-publish-ai-verification-records.json` 的真实平台回答，才算证据。

## 如果拿到 geo.bb78 单篇公开文章 URL

后台 dashboard 和公开报表都不是单篇文章证据。拿到无需登录的文章 URL 后执行：

```bash
npm run verify:article-url -- <url> --json
npm run pack:public-url -- <url> --label=<样本名> --brand=禄城精密门窗 --category=门窗 --expect-text=禄城
```

然后再做搜索发现和四平台原始回答截图。

## 边界

这份交接清单只证明本地灰度包和测试计划已经准备好，不证明公开部署、搜索发现、AI 模型吸收、AI 回答采用或品牌推荐已经发生。
