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

13 KiB
Raw Blame History

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 的峰值加载,但这是生成阶段的固有复杂度,没有更简单的方法。