content-forge/.claude/skills/write-article/ARCHITECTURE.md

174 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# write-article Skill 生产架构总览
## 文件体量
```
.claude/skills/write-article/
├── SKILL.md ~330 行 ~2,000 字 接口层(工作流 + 约束)
└── references/
├── material-anchors.md ~150 行 ~1,000 字 素材锚点(四类锚点 + 脚手架 + 编织规则)
├── content-quality.md ~275 行 ~1,800 字 质量框架(标题/去AI味/完读率/素材密度)
├── writing-styles.md 122 行 ~750 字 风格模板5 种)
└── personas.md 145 行 ~650 字 人格配置1 个 + 扩展模板)
─────────────────
~1,022 行 ~6,200 字 总上下文消耗
```
## 渐进式披露架构
```
Agent 加载顺序(上下文消耗)
─────────────────────────────────────────────────────────────
第 1 层SKILL.md必加载~1,600 字)
┌──────────────────────────────────────────────────────────┐
│ frontmatter 触发匹配 + 依赖声明 │
│ 目标 流量池公式 + 质量底线 │
│ 输入要求 5 必填 + 7 可选 + style×persona 矩阵 │
│ 7 步工作流 摘要+指针,不含详细规则 │
│ 输出约束 6 条硬性规则 │
│ 失败处理 3 种失败模式 │
│ 风格参考 5 个文件指针 │
└──────────────┬───────────────────────────────────────────┘
│ 按需加载(只在对应 Step 触发时读取)
第 2 层references/(按需,~4,200 字)
┌──────────────────────┐ ┌────────────────────┐ ┌──────────────────┐ ┌───────────────┐
│ material-anchors.md │ │ content-quality.md │ │ writing-styles.md│ │ personas.md │
│ │ │ │ │ │ │ │
│ Step 1b → §1-§3 │ │ Step 3 → §1 标题 │ │ Step 4 → 选风格 │ │ Step 2 → 激活 │
│ 素材锚点+脚手架 │ │ Step 4a → §2 去AI │ │ │ │ │
│ Step 4 → §4 编织 │ │ Step 4b → §3 完读率│ │ │ │ │
│ Step 7 → §4.4 门禁 │ │ Step 7 → §4 门禁 │ │ │ │ │
└──────────────────────┘ └────────────────────┘ └──────────────────┘ └───────────────┘
第 3 层vault 内文件(仅 lizi_kk 风格触发)
┌──────────────────────────────────────────────────────────┐
│ templates/author-style-lizi-kk.md 详细风格指南 │
│ personal-context/ (5 篇) 已发表文章参考 │
│ 通过 obsidian read 读取,不占 skill 上下文 │
└──────────────────────────────────────────────────────────┘
```
架构判定三层分离合理。SKILL.md 是接口references 是实现vault 文件是数据。Agent 不需要一次性加载全部 4,400 字。
## 7 步工作流 × 文件依赖矩阵
```
Step 名称 SKILL.md content-quality writing-styles personas material-anchors vault 文件
──── ──── ──────── ─────────────── ────────────── ──────── ──────────────── ──────────
1a 读取素材 ✓ 指令 ✓ obsidian read
1b 提取素材锚点 ✓ 约束 ✓ §1-§3 锚点+脚手架
2 激活人格 ✓ 格式 ✓ 激活
3 标题工程 ✓ 约束 ✓ §1 详细公式
4 生成草稿 ✓ 约束 ✓ §2 去AI味 ✓ 选风格 ✓ 口吻 ✓ §4 编织规则 ✓ lizi_kk 模板
✓ §3 完读率 ✓ personal-context
5 创建文件 ✓ 模板 ✓ obsidian create
6 验证 frontmatter ✓ 清单 ✓ obsidian read
7 质量检查 ✓ 门禁 ✓ §4 完整清单 ✓ §4.4 素材密度
```
Step 4 是资源消耗峰值——同时需要 5 个参考源。这是合理的,因为生成草稿是整个 skill 的核心价值所在。
## 跨文件一致性检查
```
检查项 结果 备注
─────────────────────────────────────────────────────────────
风格数量声明一致 ✓ SKILL.md "5种" = writing-styles.md "5类"
persona 数据一致20000+ ✓ personas.md:27 = personas.md:75
frontmatter 字段对齐 CLAUDE.md §4.2 ✓ 14 个必填字段全覆盖
门禁清单覆盖所有质量维度 ✓ 基础(4) + 标题(3) + 去AI味(8) + 完读率(6) + 素材密度(6) = 27 项
SKILL.md 指针与 content-quality.md 章节对应 ✓ §1/§2/§3/§4含§4.4素材密度)均有对应引用
SKILL.md 指针与 material-anchors.md 对应 ✓ §1-§3(Step 1b) + §4(Step 4) + §4.4(Step 7)
material-anchors.md 锚点类型与示例完整 ✓ 4 类锚点均有 personal-context + 苍何爆款双源示例
writing-styles.md 每个风格结构统一 ✓ 全部包含 语气/结构/禁忌 三节
personas.md 扩展模板完整 ✓ 有 YAML 模板 + 4 步新增指南
vault 路径使用 $VAULT_PATH 可配置 ✓ ${VAULT_PATH:-default}
```
## 数据流全景图
```
用户输入 SKILL.md 工作流 输出
┌────────────┐ ┌────────────────────────┐ ┌─────────────┐
│ topic │ │ │ │ │
│ style │──▶ Step 1a: obsidian read ──▶│ 事实边界确认 │ │ 02-drafts/ │
│ audience │ Step 1b: 素材锚点提取 ──▶ │ 素材脚手架≥3锚点 │ │ YYYY-MM-DD │
│ source_notes│ Step 2: persona 激活 ──▶ │ 口吻锁定(可选) │ │ -slug.md │
│ tags │ │ │ │ │
│ [persona] │ Step 3: 标题工程 ──────▶ │ ≥5 候选 → 评分 → 选定 │ │ frontmatter │
│ [intensity]│ │ │ │ + 正文 │
│ [title] │ Step 4: 生成草稿 ──────▶ │ 素材编织 × 风格模板 │ │ │
│ [slug] │ │ × 去AI味 × 完读率 │ │ 27 项门禁 │
│ [cta] │ Step 5: obsidian create ─▶│ frontmatter + body │──▶ Step 7 ──▶ │ 全部通过 │
│[mat_sources]│ Step 6: 回读验证 ────────▶│ 字段完整性修补 │ └─────────────┘
└────────────┘ └────────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
参考文件调用: │ material-anchors.md ← Step 1b, 4, 7 │
│ content-quality.md ← Step 3, 4a, 4b, 7 │
│ writing-styles.md ← Step 4 │
│ personas.md ← Step 2 │
│ vault/templates/ ← Step 4 (仅 lizi_kk) │
│ vault/personal-context/ ← Step 1a, 4 (亲历锚点 + lizi_kk) │
└──────────────────────────────────────────────────────────────────┘
```
## 与 content-forge 全链路对接
```
content-forge 生产线 write-article 覆盖范围
──────────────────────────────────────────────────────────────
S0 选题入库 ──▶ 01-topics/*.md
S1 外链采集 ──▶ url-to-markdown可选
┌──────────────────────────────────────────┐
│ S2 草稿生成 ──▶ write-article │
│ Step 1a: 读取素材 + vault 搜索 │
│ Step 1b: 提取素材锚点 ◀── NEW │
│ Step 2: 人格激活 │
│ Step 3: 标题工程 │
│ Step 4: 生成草稿 (素材编织+去AI味+完读率) │
│ Step 5: 写入 02-drafts │
│ Step 6: 验证 frontmatter │
│ Step 7: 质量门禁 (27项) ◀── NEW │
│ │
│ S3 状态标记 ──▶ status: draft │
└──────────────────────────────────────────┘
S4 格式清洗 ──▶ format-markdown
S5 视觉资产 ──▶ baoyu-cover-image / baoyu-article-illustrator
S6 审核 ──▶ /review + /multi-review + /challenge
S7 润色 ──▶ polish
S8 发布 ──▶ post-to-wechat / post-to-x
S9 归档 ──▶ 04-published/*.md
```
write-article 覆盖 S2-S3选题→草稿是全链路中**上下文消耗最大、创意密度最高**的环节。标题工程和质量门禁的加入,把原来"写完就交"变成了"写完过检才交"。
## 架构评分
| 维度 | 评分 | 说明 |
|------|------|------|
| 渐进式披露 | PASS | SKILL.md 摘要+指针,不再重复 reference 内容 |
| 跨文件一致性 | PASS | 数据、字段、章节引用全部对齐 |
| 单一职责 | PASS | 每个 reference 文件只管一件事 |
| 可扩展性 | PASS | personas.md 有扩展模板writing-styles.md 可加新风格 |
| 可移植性 | PASS | `$VAULT_PATH` 可配置,不再硬编码 |
| 质量保障 | PASS | 27 项门禁基础4 + 标题3 + 去AI味8 + 完读率6 + 素材密度6任一失败即打回 |
| 上下文效率 | WARN | 总量 6,200 字合理,但 Step 4 峰值同时需 5 个源 |
整体评价数据结构5 文件分层决定了算法7 步工作流)的优雅——每个 Step 只去找自己需要的 reference不多加载一个字。material-anchors.md 的加入把质量防线从单层(表达)扩展为双层(内容+表达Step 1b 的素材脚手架确保"先有素材,再有文章"。唯一的 WARN 是 Step 4 的峰值加载,但这是生成阶段的固有复杂度,没有更简单的方法。