# 完整流程解读(按最新版 2026-07)

> 上一篇:[[00 总览 - KryoZon SEO博客自动化系统]] · 下一篇:[[02 操作步骤手册]]

## 全流程五大步

```
STEP 1 调研 → STEP 2 生成 → STEP 3 质检 → STEP 4 人工审核 → STEP 5 发布
```

---

## STEP 1:选题与调研

### 选题来源
- Excel 内容日历(`KryoZon_Content_Calendar.xlsx`,共 885+ 篇选题,按 Cluster 分组,如 C10-017)
- 用 `scripts/convert-calendar.py` 转成 `data/jobs.csv`,列:`job_id, topic, target_keyword, product_ids, priority, llm_provider, status`

### 选题意图门(2026-05-17 硬规则)
新标题必须含**具体软件/产品名**(如 Stable Diffusion、DaVinci Resolve)或**决策框架词**(vs / when X wins / decision tree)。
`Why X happens` / `X explained` / 三方横评类**不放行**——线上数据证明这类文章 scroll 只有 5-8%,被 AI 摘要一句话答完读者就走。

### 调研数据(演进过三代)
1. ~~早期:Tavily 搜竞品文章~~
2. ~~中期:NotebookLM MCP 采集真实用户反馈 → `data/evidence-pool.json`~~
3. **现在(2026-06-22 起):本地 RAG `cooling-corpus/`**
   - 语料 = Reddit 高赞帖+顶级评论(手机/笔记本散热子版块白名单)+ 34 篇 YouTube 散热器测评转写
   - 每条语料带 `Device: phone|laptop` 字段,检索时硬过滤——根治"笔记本引用漏进手机文章"的 bug
   - 产出 `data/research/{job_id}.json`,格式与 NotebookLM 时代兼容,管线无感切换
   - 三层防垃圾:子版块白名单(与 reddit_monitor DB 同一份 `search_subs`)→ 词闸(设备词+散热词同时命中)→ 人工审核扩白名单

### 证据文件格式
`data/research/{job_id}.json` / `data/evidence/{job_id}.json`(job 级优先于全局池):
- `quotes[]`:逐字用户原话 + 来源 URL + 作者 handle
- `tests[]`:实测数据(温度/dBA/帧率)+ 测试环境
- `conflicts[]`:争议点正反方观点

---

## STEP 2:生成(核心管线 `src/queue/runner.js` → `src/pipeline/processJob.js`)

按 AGENTS.md 的管线图,每篇文章依次经过:

```
generateContent.js   ← 主 LLM 产草稿 JSON(body_html / faq / infographic_data / meta)
processJob.js        ← 正则 lint(CLICHE_REGEX、INFOGRAPHIC_EXAMPLE_REGEX)打 flag
validateAndFlag.js   ← 程序化校验:HTML 合法性、alt、规格表、关键词密度、链接数
valueReview.js       ← LLM 评审:这篇文章对读者到底有没有用?
toneReview.js        ← LLM(gpt-4o,阈值6/10):语气问题外科手术式修补
editorialReview.js   ← LLM(gpt-4o):SEO 农场味清理,6 条编辑规则
humanizeContent.js   ← LLM(gpt-4o-mini,阈值5/10):正则改动清单 [legacy]
humanizer.js         ← LLM(阈值2/5):整篇去 AI 味重写 + 打分循环(现走 codex)
uploadInlineSvgs.js  ← 信息图 data:svg → 上传 Shopify Files CDN 换真实 URL
publish.js           ← GraphQL articleCreate,永远 DRAFT
```

### LLM 选择(2026-06-22 更新)
- **主力:codex**(文章生成 + humanizer),**openai 兜底**
- 降级链保底到 mock;gpt-5.x / o 系推理模型注意**不传 temperature**(2026-07-07 修的坑)

### 内链与外链
- 内链:`data/anchor-dictionary.json` 锚文本库,按 H2 位置注入,每篇上限 ~10 条,跨批次轮换(`PERSIST_ANCHOR_COUNTS`)
- 外链引用:`data/citation-library.json` 权威源(IEEE/PubMed/Tom's Hardware)+ Brave 搜索白名单域名;不可信源加 nofollow
- 用户证据来源 URL 自动追加到文末 "References & Citations → Community & User Sources"

### 配图(五级瀑布 + AI 审图)
```
① 本地预审图 output/preview-{job_id}.jpg(人工放置,最高优先)
② Pexels 免费图库
③ Seedream AI 生图(火山方舟即梦)
④ NanoBanana(Gemini)AI 生图
⑤ Placeholder 兜底
```
- 每张图先过 **GPT-4o-mini Vision 审查**:主题匹配度、竞品 logo/水印、AI 痕迹;2026-07-08 新增**物理/解剖学硬否决**(六指手、反物理的散热器摆放直接毙)
- 不用产品图,header 只放场景;图中人物用欧美面孔
- Header 裁 1920x750 banner、JPEG q85、<500KB;Summary 图最大 1200px

### HTML 结构(2026-04-21 定稿的顺序)
```
Hero 图 → 开头段(症状钩子 2-3 句)→ Reading Time
→ Key Takeaways 框(answer-first,放 TOC 之前,利于 featured snippet)
→ TOC → Summary 信息图(SVG 传 CDN)→ 正文 H2 段落
→ 第 4 个 H2 后插 mid-article 图 → FAQ(3-5 问)
→ References & Citations → CTA → 作者卡(LinkedIn)→ 隐藏结构化数据
```
- **不写 H1**(主题自动渲染标题为 H1),body 从 H2 开始
- **不写价格**;meta title 年份用当前年变量
- KT 文本 = FAQ 答案首句(正则取整句),不做字符硬截断
- 2026-07-08:开头段句式轮换 + 模板化 H2 标题(prompt 禁用 + 骨架相似度审计),避免全站文章长得一个样

---

## STEP 3:质量门 — 确定性记分卡(2026-05 后新增的关键模块)

`src/pipeline/scorecard.js`:**0-100 程序化打分,不调 LLM**(Ecom-RLVE 式可验证奖励):
- 维度:coverage(覆盖度)、grounding(证据落地)、AI tells(AI 痕迹)、structure(结构)
- **红线 <70 分:直接拦截,不建 Shopify 草稿**;黄线加 `low_score` 警告
- 信任 RAG 验证过的 Reddit 引用;可读性 reading grade 校准到 10-11 年级
- 质量 flag(只打标不阻塞):`wordcount_low / h2_insufficient / internal_links_low|high / citation_low / image_alt_missing / spec_mismatch / model_degraded`

### 去重阀(2026-04-23 硬化)
上传前拉 Shopify 全量(Published + Draft),标题规范化精确匹配 + ≥25 字符前缀双向匹配 + handle 匹配;撞车 skip 并写 `output/_duplicate-blocked.json` 供人工审;`--force` 绕过。

---

## STEP 4:人工审核(Human-in-the-loop)

- 所有文章 DRAFT/Hidden 上传,自动分类:科普教育(可直发)/ 购买指南(需加个人推荐)/ 问题解决 / 对比测评(需加实测数据)
- AI 打分 10 分制写入 Google Sheet 审核建议:8-10 可直发,5-7 补少量,2-4 需人工大幅补充
- **Google Sheet 同步走 Python + OAuth 直连 Sheets API**(`scripts/sync-sheets-full.py`),Apps Script webhook 是死路(Workspace 策略禁止部署,代码里是 no-op)——别再找 webhook URL
- runner 跑完一批会自动 spawn 这个 Python 同步,覆盖 Status / Review / Overview / Calendar 四个 tab

---

## STEP 5:发布与发布后

- 发布:`npm run approve:all` 或按 job 单发;`scripts/scheduled-publish.js --per-run N` 控制节奏
- **发布后验证红线**:任何 Shopify 写操作后,用 desktop + mobile 两种 UA `curl` 线上 URL grep 新版本标记——API 200 不算验证,Shopify 边缘缓存按 UA 分桶
- page_cache 卡住:用 `scripts/force-cache-bust-suffix-swap.js` 翻转 templateSuffix 破缓存(`?_cb=` 等旁门全无效)
- BreadcrumbList JSON-LD **只允许主题层 snippet 输出**,文章 body 里绝不再嵌(2026-04-18 GSC 事故的教训)
- 监控闭环:gsc-monitor 日报(飞书)、blog_ctr_tracker 周度 CTR、word_freq 周快照、ai-visibility 基线

## Shopify 认证
OAuth client_credentials 动态换临时 Admin token,缓存 50 分钟自动续,不用永久 shpat_ token。
