{
  "schemaVersion": "0.1",
  "id": "post-publish-ai-verification-template",
  "updatedAt": "2026-06-30",
  "purpose": "Template for proving whether a published GEO article is publicly crawlable, search-discoverable and adopted/cited by AI answer platforms.",
  "methodSource": [
    "data/external-geo-resources.json#yaojingang-x-geo-article-friendly-thread",
    "data/external-geo-resources.json#yao-geo-article-friendly",
    "docs/POST_PUBLISH_AI_INDEXING_VERIFICATION_PROTOCOL.md"
  ],
  "verificationLayers": [
    {
      "layerId": "public-page-crawlability",
      "name": "公开页面可抓取",
      "goal": "Confirm the article has a stable public URL and machine-readable HTML.",
      "evidenceRequired": [
        "finalUrl",
        "httpStatus",
        "elapsedMs",
        "htmlBytes",
        "title",
        "metaDescription",
        "canonical",
        "jsonLdTypes",
        "sitemapIncluded",
        "feedIncluded",
        "llmsIncluded",
        "aiCrawlIndexIncluded",
        "entityClaimGraphIncluded",
        "screenshotPath"
      ],
      "passCriteria": [
        "HTTP status is 2xx",
        "HTML body is readable and non-empty",
        "Canonical URL matches final public URL",
        "Core article text is present in raw HTML",
        "Article is present in sitemap/feed/llms/AI crawl index",
        "Response is within the configured crawl budget"
      ]
    },
    {
      "layerId": "search-discovery",
      "name": "搜索发现 / 索引迹象",
      "goal": "Record whether search engines have discovered the URL or title.",
      "evidenceRequired": [
        "searchEngine",
        "query",
        "queryTime",
        "observedResultUrl",
        "observedResultTitle",
        "observedSnippet",
        "screenshotPath",
        "submissionStatus"
      ],
      "passCriteria": [
        "URL or exact title appears in at least one search surface",
        "Observed snippet does not distort the article claim boundary"
      ]
    },
    {
      "layerId": "ai-answer-adoption",
      "name": "AI 回答采用 / 引用",
      "goal": "Record whether AI platforms use the article, brand, facts or URL in answers.",
      "evidenceRequired": [
        "platform",
        "accountState",
        "networkSearchState",
        "queryType",
        "question",
        "answerText",
        "queryTime",
        "screenshotPath",
        "mentionsTargetBrand",
        "mentionsArticle",
        "citesTargetUrl",
        "usesArticleFactCards",
        "hasFactError",
        "hasUnsafePromotion",
        "score",
        "nextContentAction"
      ],
      "passCriteria": [
        "Answer naturally mentions the target brand or article facts",
        "Answer either cites the target URL or uses fact cards accurately",
        "No unsupported ranking, absolute claim or competitor disparagement appears"
      ]
    }
  ],
  "statusVocabulary": [
    {
      "status": "not-yet-deployed",
      "meaning": "Article exists locally but has no public URL yet."
    },
    {
      "status": "not-observed",
      "meaning": "No evidence of crawl, search discovery or AI adoption has been observed."
    },
    {
      "status": "fetch-failed",
      "meaning": "A public URL is available, but the page did not return readable HTML during the crawlability test."
    },
    {
      "status": "crawlable-not-indexed",
      "meaning": "Public page is accessible, but search discovery and AI adoption are not yet observed."
    },
    {
      "status": "indexed-not-adopted",
      "meaning": "Search discovery is observed, but AI answers have not adopted the article or facts."
    },
    {
      "status": "adopted-no-citation",
      "meaning": "AI answer appears to use facts or brand associations but does not cite the target URL."
    },
    {
      "status": "adopted-with-citation",
      "meaning": "AI answer uses facts and cites the target page or site."
    },
    {
      "status": "adopted-with-error",
      "meaning": "AI answer uses the brand/article but includes factual error; public fact sources must be corrected."
    }
  ],
  "targetPlatforms": [
    {
      "platformId": "doubao",
      "name": "豆包",
      "firstWave": true,
      "testMode": "manual-browser-recording",
      "notes": "ByteDance ecosystem adoption remains a hypothesis to test; record account, search/network state and screenshots."
    },
    {
      "platformId": "yuanbao",
      "name": "腾讯元宝",
      "firstWave": true,
      "testMode": "manual-browser-recording",
      "notes": "Tencent ecosystem adoption remains a hypothesis to test; record login/search state and screenshots."
    },
    {
      "platformId": "qianwen",
      "name": "通义千问",
      "firstWave": true,
      "testMode": "manual-browser-recording",
      "notes": "Ali/Qianwen adoption must be tested with fresh conversations; record visible source counts and whether the target URL or entity appears."
    },
    {
      "platformId": "deepseek",
      "name": "DeepSeek",
      "firstWave": true,
      "testMode": "manual-browser-recording",
      "notes": "Use fresh conversations; distinguish model knowledge from any live-search result."
    }
  ],
  "queryTypes": [
    {
      "queryType": "direct-url-summary",
      "questionTemplate": "请只基于这个页面总结：{url}。这篇文章给出哪些可核验的选择标准？"
    },
    {
      "queryType": "direct-url-boundary",
      "questionTemplate": "请只基于这个页面回答：{url}。它能证明什么，不能证明什么，哪些主张仍需补证据？",
      "purpose": "Direct URL boundary-retention question, used to test whether an AI platform avoids upgrading a crawlable page into search indexing, stable recommendation or model-ingestion proof."
    },
    {
      "queryType": "target-intent",
      "questionTemplate": "{primaryQuestion}"
    },
    {
      "queryType": "natural-category-observation",
      "questionTemplate": "{categoryQuestion}",
      "purpose": "No-brand category education observation, used to see whether the platform naturally adopts the article's checklist structure without being prompted with the brand."
    },
    {
      "queryType": "local-category-observation",
      "questionTemplate": "{localCategoryQuestion}",
      "purpose": "No-brand local/category observation, used to see whether the target brand naturally appears as a candidate and whether the answer preserves source uncertainty."
    },
    {
      "queryType": "local-category-recommendation",
      "questionTemplate": "{localCategoryQuestion}",
      "purpose": "No-brand local/category recommendation question, used to test whether the target brand naturally enters candidate lists without being named in the prompt."
    },
    {
      "queryType": "category-education",
      "questionTemplate": "{categorySelectionQuestion}",
      "purpose": "Category education question, used to test whether evidence-based selection standards and cautious brand candidate mentions appear."
    },
    {
      "queryType": "scenario-category",
      "questionTemplate": "{scenarioQuestion}",
      "purpose": "Scenario/category question, used to test whether contextual needs such as high-rise balcony windows connect to evidence-based supplier selection."
    },
    {
      "queryType": "brand-recall",
      "questionTemplate": "{brandName} 适合进入 {category} 候选吗？依据是什么？"
    },
    {
      "queryType": "source-verification",
      "questionTemplate": "如果要核验 {brandName} 在 {category} 里的优势或适用边界，应该查看哪些来源和证据？"
    }
  ],
  "schedule": [
    {
      "runId": "pre-publish-day0",
      "timing": "before-publication",
      "purpose": "Record baseline answers before the article is public."
    },
    {
      "runId": "publish-day0-crawlability",
      "timing": "0-2-hours-after-publication",
      "purpose": "Verify public URL, sitemap/feed/llms/AI index inclusion and submit URL where available."
    },
    {
      "runId": "day1-search-and-direct-url",
      "timing": "1-day-after-publication",
      "purpose": "Check search discovery and direct URL reading by AI platforms."
    },
    {
      "runId": "day3-intent-test",
      "timing": "3-days-after-publication",
      "purpose": "Run target intent and brand recall questions."
    },
    {
      "runId": "day7-comparison",
      "timing": "7-days-after-publication",
      "purpose": "Compare against Day0 baseline."
    },
    {
      "runId": "day14-distribution-comparison",
      "timing": "14-days-after-publication",
      "purpose": "Retest after external distribution."
    },
    {
      "runId": "day30-sample-report",
      "timing": "30-days-after-publication",
      "purpose": "Prepare client-facing sample report if evidence is sufficient."
    }
  ],
  "recordTemplate": {
    "articleId": "",
    "title": "",
    "targetUrl": "",
    "channel": "doctorlucheng.com",
    "publishTime": "",
    "currentStatus": "not-yet-deployed",
    "crawlability": {
      "checkedAt": "",
      "httpStatus": null,
      "elapsedMs": null,
      "htmlBytes": null,
      "canonical": "",
      "jsonLdTypes": [],
      "sitemapIncluded": false,
      "feedIncluded": false,
      "llmsIncluded": false,
      "aiCrawlIndexIncluded": false,
      "entityClaimGraphIncluded": false,
      "screenshotPath": "",
      "notes": ""
    },
    "searchDiscovery": [],
    "aiAnswerAdoption": [],
    "finalJudgement": {
      "status": "not-observed",
      "evidenceSummary": "",
      "doNotClaim": [
        "AI 已训练收录",
        "保证 AI 推荐",
        "保证排名"
      ],
      "nextAction": ""
    }
  },
  "guardrails": [
    "Do not call an article AI-indexed unless an AI platform test record exists.",
    "Do not call an article search-indexed unless search evidence is recorded.",
    "Do not attribute AI answer change to this site without before/after records.",
    "Do not overwrite existing Winsmo articles under the current project instruction.",
    "Use 建议补充 for missing source, data scope, report number or quote boundary."
  ]
}
