autocrew 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,601 +1,83 @@
1
1
  ---
2
2
  name: write-script
3
- description: |
4
- Write one complete content draft for Chinese social media. Activate when user asks to write a post, create content, draft an article, or produce copy. This is the executor — it does the actual writing.
3
+ description: Content writing workflow for Chinese social media
5
4
  ---
6
5
 
7
6
  # Write Script
8
7
 
9
- > Executor skill. Single responsibility: generate one complete original script and save it.
8
+ ## Boundaries (violations = restart)
10
9
 
11
- ## THE OPERATING SYSTEM Read This Before Anything Else
10
+ - NEVER fabricate data, statistics, or case studies
11
+ - NEVER use AI filler phrases: 值得一提的是, 综上所述, 首先/其次/最后, 一方面/另一方面
12
+ - NEVER skip the skeleton phase — no prose before structure is confirmed
13
+ - NEVER save content via Write tool — always use autocrew_content action="save"
14
+ - Title MUST be ≤20 Chinese characters (including punctuation and emoji)
12
15
 
13
- These 5 principles override every other instruction in this file. When a specific rule
14
- conflicts with a principle, the principle wins. When you're unsure what to do, return
15
- to these principles. They are not suggestions — they are the mental model you run on
16
- while writing.
16
+ ## Before Writing Think
17
17
 
18
- ```
19
- 1. EMPATHY FIRST
20
- You are not writing. You are sitting across from ONE person — the audiencePersona —
21
- having a conversation. They are scrolling on their phone, half-distracted, ready to
22
- swipe away in 2 seconds. Everything you write must earn the next 3 seconds of their
23
- attention. Before committing any sentence, simulate their reaction: do they feel
24
- curiosity, recognition, surprise, or relief? If a sentence triggers none of these —
25
- if the reader's inner voice says "so what?" or "I know this already" — delete it.
26
- The reader's emotional state is the only metric that matters mid-writing.
27
-
28
- 2. THEIR WORDS, NOT YOURS
29
- Every word must pass one test: would the reader say this to a friend over coffee?
30
- If no, replace it. You are matching THEIR vocabulary, not showcasing yours. The
31
- reader never thinks in abstractions — they think in scenes, faces, and feelings.
32
- When you catch yourself reaching for a "smart" word, stop. The smarter move is the
33
- simpler word. A concept the reader can't picture is a concept that doesn't exist.
34
- This applies to every language: Chinese, English, technical terms, metaphors. If
35
- the audiencePersona wouldn't use it, you can't use it.
36
-
37
- 3. SHOW THE MOVIE
38
- Abstractions are invisible. Stories are visible. "AI improves productivity" is
39
- invisible — the reader's brain generates no image. "She built an entire product
40
- in 3 weeks, alone, without writing a single line of code" — the reader sees a
41
- person, a timeline, a result. Every claim in your draft needs a SCENE: a face,
42
- a number, a moment in time. If you can't attach a scene to a claim, the claim
43
- is too abstract to include. Concreteness is not decoration — it IS the content.
44
-
45
- 4. TENSION IS OXYGEN
46
- Content without tension is content nobody finishes. The reader stays because they
47
- need to know what happens next. Every paragraph must either OPEN a question or
48
- CLOSE one. If a paragraph does neither — if it's just "information sitting there"
49
- — the reader's thumb is already moving to the next post. Tension can be explicit
50
- ("But why don't big companies do this?") or structural (a gap between what the
51
- reader assumed and what you're about to reveal). When you feel the energy dropping,
52
- you've lost tension. Inject a question, a contradiction, or a surprise immediately.
53
-
54
- 5. THE CREATOR IS THE PROOF
55
- The most persuasive evidence is not data or expert quotes — it's the creator saying
56
- "I did this, and here's what happened." The creator's lived experience is
57
- irreplaceable social proof. Third-party cases support the argument; the creator's
58
- own story IS the argument. Always lead with the creator's experience when available.
59
- Vulnerability beats authority: "I failed at this three times before it worked" is
60
- more compelling than "Studies show a 30% improvement." If the creator has relevant
61
- experience for this topic, it must appear in the draft — not as a footnote, but as
62
- the backbone.
63
- ```
64
-
65
- ## Prerequisites
66
-
67
- Before writing, load these reference documents:
68
- - `HAMLETDEER.md` — Content philosophy, HKRR framework, Clock Theory, Micro-Retention Techniques
69
- - `skills/title-craft/SKILL.md` — Title methodology (8 types + quality checklist)
70
-
71
- For video scripts: apply the **Clock Theory** from HAMLETDEER.md. Map the script to clock positions (12/3/6/9) and ensure every position has a bang moment. Short-form video: pick ONE HKRR element and commit. Long-form: combine all four.
72
-
73
- ## Steps
74
-
75
- 1. **Load style & memory context:**
76
-
77
- a. Read `~/.autocrew/STYLE.md` — absorb brand voice, personality, boundaries.
78
- b. Read `~/.autocrew/MEMORY.md` — check for writing preferences, past feedback, audience persona.
79
- c. Read `~/.autocrew/creator-profile.json` — check `styleCalibrated`, `platforms`, `writingRules`, `contentPillars`.
80
- d. If none exist, proceed with sensible defaults and note that style calibration is recommended.
81
-
82
- 1.5. **⚠️ 提取创作者自己的故事和经历(MANDATORY):**
83
-
84
- 创作者自己的亲身经历是最高级别的真实性素材 — 比任何第三方案例都有说服力。
85
-
86
- a. 从 MEMORY.md、creator-profile.json、对话上下文中,提取与当前主题相关的
87
- **创作者本人的经历、数据、案例**。例如:
88
- - 创作者自己做过什么项目?结果如何?
89
- - 创作者踩过什么坑?学到了什么?
90
- - 创作者有什么独特视角是别人没有的?
91
-
92
- b. 如果对话中创作者提到了自己的经历("我做了两个独立站"、"我花了 3 个月…"),
93
- 这些是**必须使用的一级素材**,不可以被第三方案例替代。
94
-
95
- c. 素材优先级(高→低):
96
- 1. 创作者自己的亲身经历(最高说服力,最强共鸣)
97
- 2. 创作者认识的真人案例(有名有姓,可追溯)
98
- 3. references/ 里的公开案例和数据
99
- 4. LLM 知识库中的案例(最低优先级,尽量不用)
100
-
101
- d. 在 Phase A 骨架中标注哪些素材来自创作者本人。
102
- 如果骨架里没有一条创作者自己的素材 → 重新审视,一定有可以用的。
103
-
104
- 2. **Content positioning check:**
105
-
106
- a. Identify which **content pillar** this content belongs to (from `creator-profile.json` → `contentPillars`).
107
- b. If no pillar match, ask the user: "这条内容属于你的哪个内容支柱?" and list available pillars.
108
- c. Load the pillar's `targetPersona`, `toneGuide`, and `exampleAngles` as writing context.
109
- d. If `contentPillars` is not configured, skip this step and note that content positioning is recommended.
110
-
111
- 3. **Traffic hypothesis (MANDATORY):**
112
-
113
- Before writing, state the hypothesis for this content:
114
- - "I believe [this angle/hook/format] will [expected outcome] because [reason]"
115
- - Classify: `title_test` / `hook_test` / `format_test` / `angle_test`
116
- - If testing against a previous content, note the `controlRef` (content ID being compared to)
117
-
118
- If the user doesn't provide a hypothesis, infer one from the topic and state it explicitly.
119
-
120
- 4. If a topic was specified, load its details via `autocrew_topic` action="list" and find the matching topic.
121
-
122
- 5. **Check for relevant teardowns:**
123
-
124
- Search `~/.autocrew/data/pipeline/intel/_teardowns/` for teardown reports related to this topic. If found, use them as reference for what works in this space.
125
-
126
- 5.5. **⚠️ MANDATORY — Topic-specific research → populate `references/` BEFORE writing:**
127
-
128
- **Why this exists:** Writing from LLM memory alone produces generic, unverifiable content
129
- indistinguishable from a random chat response. Every claim, case study, name, and data
130
- point in a draft must trace back to a real source. This step is non-negotiable.
131
-
132
- **Step-by-step:**
133
-
134
- a.0. **Query wiki knowledge base (if wiki exists):**
135
- 1. Check if `~/.autocrew/data/pipeline/wiki/index.md` exists. If not, skip to step a.
136
- 2. Read `index.md` and find wiki pages whose title, aliases, or summary
137
- match the current topic's keywords or angle (fuzzy match, not exact).
138
- 3. Read matched pages (max 5, prioritize by number of sources — more sources
139
- = more synthesized = more valuable).
140
- 4. For each matched wiki page, write it as a reference file into the project's
141
- `references/` folder:
142
- - Filename: `wiki-{page-slug}.md`
143
- - Format: same as other reference files, but with `source: wiki/{page-slug}.md`
144
- - Set `relevance: 8` (synthesized knowledge is higher value than raw intel)
145
- 5. Wiki-sourced references count toward the 6-reference minimum and can satisfy
146
- multiple angle-coverage categories (wiki pages are cross-source syntheses).
147
- 6. If wiki already provides 4+ solid references, the subsequent intel queries
148
- (steps b-d) can be lighter — focus on filling angle gaps rather than full research.
149
-
150
- a. Compute the project slug early: `projectSlug = slugify(topic_title)`.
151
- References will live at `~/.autocrew/data/pipeline/drafting/{projectSlug}/references/`.
152
- mkdir it if needed (the save step will reuse the same dir).
153
-
154
- b. **Query the existing intel library first** (fast, free):
155
- ```json
156
- { "action": "list" }
157
- ```
158
- via `autocrew_intel`. Scan the returned items for any whose title/summary matches
159
- this topic's keywords or angle. If 3+ strong matches exist, you may skip step (c).
160
-
161
- c. **Pull fresh intel targeted at this topic** (only if the library is thin):
162
- ```json
163
- { "action": "pull", "keywords": ["<keyword 1>", "<keyword 2>", "<keyword 3>"] }
164
- ```
165
- Derive 3-5 keywords from the topic title/angle — specific phrases, not generic.
166
- Example: topic "vibe-coding 重新定义能力边界" → keywords like
167
- `["vibe-coding 案例", "非程序员 AI 工具 产品", "Cursor 文科生", "GitHub 趋势 独立开发者"]`.
168
- Avoid over-broad terms like "AI" alone.
169
-
170
- d. If `web_search` is available, run 2-4 additional targeted queries to find primary
171
- sources the intel collectors missed: news articles, product pages, creator interviews,
172
- concrete numbers. Prefer named examples over anonymous anecdotes.
173
-
174
- e. **Write each source as a reference file** into the project's `references/` folder.
175
- Use the `Write` tool. Filename: `{short-slug}.md`. Format (strict):
176
- ```markdown
177
- ---
178
- source: <url or intel ref>
179
- title: <original title>
180
- collected: <ISO timestamp>
181
- relevance: <1-10, how directly this informs the draft>
182
- ---
183
-
184
- ## 要点
185
- - <3-6 bullet points of the most useful facts/quotes/data>
186
-
187
- ## 可引用
188
- - <specific sentences, names, numbers you might cite verbatim>
189
-
190
- ## 角度
191
- - <what angle of the topic this source unlocks>
192
- ```
193
-
194
- f. **Minimum bar to proceed — both quantity AND angle coverage:**
195
-
196
- **Quantity:** at least **6 reference files** with `relevance ≥ 6`. Fewer than 6
197
- means you'll run out of fresh material by the middle of the draft and fall back to
198
- LLM-memory filler.
199
-
200
- **Angle coverage (all 4 categories must have ≥1 reference):**
201
- 1. **具体案例/人物** — named individual or company with a traceable story
202
- (e.g., "腾讯文科生用 Cursor 3 个月做了约饭小程序")
203
- 2. **数据/数字** — concrete numbers from a report, dashboard, or study
204
- (not "很多人", but "2000+ 员工在用" / "3000 万投资" / "涨薪 30%")
205
- 3. **反面/争议观点** — a dissenting view, failure case, or counter-evidence
206
- (prevents the draft from becoming one-sided cheerleading)
207
- 4. **趋势/背景** — market context, timeline, or "why now" signal
208
- (answers why this topic is worth writing about today, not last year)
209
-
210
- Think of it as 2+2+1+1 = 6 minimum. More is better. Duplicates in the same
211
- category do NOT count toward the other categories.
212
-
213
- If you cannot hit BOTH bars (6+ total AND all 4 angles covered), stop and tell
214
- the user honestly:
215
- > 我目前找到 N 条相关信息源,覆盖角度:{已覆盖的角度}。缺少:{缺失的角度}。
216
- > 不够支撑一篇有分量的文案。要不要我再调研一轮、换个切入角度、还是你直接补充几个你知道的案例?
217
-
218
- Do NOT proceed to writing on thin research. "写出来再说" is the failure mode
219
- this step exists to prevent.
220
-
221
- g. Record the reference filenames in working memory — Step 6 will cite them, and
222
- Step 8 will record them in `meta.yaml` via the save params.
223
-
224
- 6. **⚠️ 创作分两个阶段执行。不可跳过 Phase A 直接写正文。**
225
-
226
- **为什么分两阶段**:一口气从头写到尾会产出逻辑混乱、节奏平淡的流水账。
227
- 先搭骨架(结构)再填肉(正文),确保每一段都有存在的理由。
228
-
229
- ---
230
-
231
- ## Phase A — 搭结构骨架(先想清楚再动笔)
232
-
233
- 在写任何正文之前,必须先完成以下 5 个决策。输出为结构化的骨架文档,
234
- 展示给用户确认后才进入 Phase B。
235
-
236
- **A1. 核心观点(一句话)**
237
-
238
- 用一句话说清楚这篇内容的核心主张。不是主题,是观点。
239
-
240
- | ❌ 不是这样(主题) | ✅ 而是这样(观点) |
241
- |---|---|
242
- | "聊聊 vibe-coding" | "vibe-coding 重新定义的不是会不会写代码,是会不会想清楚问题" |
243
- | "AI 工具推荐" | "90% 的人用 AI 工具亏钱,因为他们把 AI 当员工而不是当合伙人" |
244
- | "创业经验分享" | "创业最大的坑不是没钱,是你以为自己想清楚了其实没有" |
245
-
246
- 这个观点必须满足:
247
- - 有立场(不是两边讨好的"一方面...另一方面...")
248
- - 有反直觉成分(读者看到会想"真的吗?")
249
- - 能用 references 里的具体案例支撑
250
-
251
- **A2. 论证结构(观点的骨架)**
252
-
253
- 确定论证链条:核心观点要通过什么逻辑路径让读者信服?
254
-
255
- ```
256
- 核心观点: {一句话}
257
-
258
- ├── 误区/共识切入: 大多数人以为___(读者的当前认知)
259
-
260
- ├── 真相揭示: 但实际上___(反转,用数据或案例支撑)
261
- │ └── 证据: {来自 references/ 的具体案例/数据}
262
-
263
- ├── 深入解释: 为什么会这样?因为___(给出底层逻辑)
264
- │ └── 证据: {来自 references/ 的第二个案例}
265
-
266
- └── 行动指引: 所以你应该___(给读者一个可执行的 takeaway)
267
- ```
268
-
269
- 论证结构不是唯一形式。以下几种都可以,选最适合这个观点的:
270
- - **误区→真相→行动**(适合反直觉观点)
271
- - **故事→提炼→框架**(适合经验分享)
272
- - **现象→归因→预判**(适合趋势分析)
273
- - **问题→拆解→方案**(适合教程类)
274
-
275
- **A3. Clock Theory 节点规划(4 个 bang moment)**
276
-
277
- ⚠️ **Clock Theory 是创作骨架,不是事后审计。** 先定 4 个 bang moment,
278
- 然后围绕这 4 个点展开写。
279
-
280
- | 时钟位 | 内容功能 | 你的 bang moment | Bang 类型 | 来自哪个 reference |
281
- |--------|---------|-----------------|-----------|-------------------|
282
- | 12:00 (0%) | Hook — 3 秒决生死 | {具体写什么} | {数据炸弹/反转/故事/共鸣} | {ref} |
283
- | 3:00 (25%) | Escalation — 兑现 hook 的承诺 | {具体写什么} | {类型} | {ref} |
284
- | 6:00 (50%) | Payload — 核心价值交付 | {具体写什么} | {类型} | {ref} |
285
- | 9:00 (75%) | Climax — 最强一击 | {具体写什么} | {类型} | {ref} |
286
-
287
- 每个 bang moment 必须具体到"写什么内容",不能是"在这里放一个反转"这种空话。
288
- 如果想不出 bang moment,说明这个论点不够强 — 回 A2 调整论证结构。
18
+ Answer these questions (in your thinking, not in output):
289
19
 
290
- **A4. HKRR 选择**
20
+ ### 1. Who am I writing for?
21
+ - Load `~/.autocrew/STYLE.md` and `~/.autocrew/creator-profile.json`
22
+ - Picture ONE specific person from the audiencePersona
23
+ - What are they feeling right now? What problem keeps them up?
291
24
 
292
- 短视频(<60s):只选 1 个维度,全力打透。
293
- 长内容(图文/长视频):选 1 个主导 + 1 个辅助。
25
+ ### 2. What is my ONE opinion?
26
+ - Not a topic an OPINION. "AI编程" is a topic. "AI编程让不会写代码的人更危险" is an opinion.
27
+ - State it in one sentence. If you can't, you're not ready to write.
294
28
 
295
- ```
296
- 主导维度: {H/K/R/R}
297
- 理由: {为什么这个主题用这个维度最有效}
298
- 辅助维度: {H/K/R/R 或 无}
299
- ```
29
+ ### 3. What is my hypothesis?
30
+ - What does this content test? "I believe [hook type] + [angle] will get [metric] because [reason]"
31
+ - This goes into the `hypothesis` field when saving.
300
32
 
301
- **A5. 微操技巧预埋**
33
+ ### 4. What evidence do I have?
34
+ - Creator's own experience is the strongest evidence (first person > third person)
35
+ - Load wiki knowledge if available (autocrew_content action="draft" returns it)
36
+ - If evidence is thin, use autocrew_intel action="pull" to gather more
302
37
 
303
- 4 种微操技巧中选 2-3 种,标注在骨架的具体位置:
38
+ ### 5. What is the emotional arc?
39
+ - Clock Theory: plan 4 energy peaks (hook → escalation → payload → climax)
40
+ - Every section must either OPEN a question or CLOSE one
41
+ - Where does tension come from? Contradiction? Surprise? Vulnerability?
304
42
 
305
- | 技巧 | 埋在哪里 | 具体怎么用 |
306
- |------|---------|-----------|
307
- | Open Loop | {位置,如"hook 之后"} | {具体的悬念句} |
308
- | Curiosity Gap | {位置} | {具体的过渡句} |
309
- | Visual Anchor | {位置} | {具体的金句} |
310
- | Rhythm Break | {位置} | {具体的短句} |
43
+ ## Writing Process
311
44
 
312
- ---
45
+ 1. **Present skeleton** — thesis, structure (argument flow), 4 clock moments, HKRR dimension. Wait for user confirmation.
46
+ 2. **Write full draft** — fear short, not long. Every case study deserves full detail. Ground factual claims in real sources.
47
+ 3. **Self-review** — run the Quality Checklist below mentally before saving.
313
48
 
314
- **输出骨架给用户确认:**
49
+ ## Quality Checklist (before save)
315
50
 
316
- ```
317
- 📐 内容骨架:
51
+ Ask yourself:
52
+ - [ ] Does every paragraph earn the reader's next 3 seconds?
53
+ - [ ] Would the reader say these words to a friend over coffee?
54
+ - [ ] Is there a specific scene/number/moment for every claim? (No bare abstractions)
55
+ - [ ] Does the opening hook create immediate tension or curiosity?
56
+ - [ ] Is the creator's voice present? (I did X > Company Y did Z)
318
57
 
319
- 核心观点:{A1}
320
- 论证结构:{A2 的链条}
321
- HKRR:主打 {A4}
58
+ ## Save
322
59
 
323
- Clock 节点:
324
- 🕛 12:00 Hook: {内容}
325
- 🕐 3:00 Escalation: {内容}
326
- 🕕 6:00 Payload: {内容}
327
- 🕘 9:00 Climax: {内容}
328
-
329
- 微操预埋:{A5 的技巧和位置}
330
-
331
- 这个结构 OK 吗?确认后开始写正文。
332
- ```
333
-
334
- **等待用户确认。** 用户说 OK → 进入 Phase B。
335
- 用户说要调整 → 修改骨架后再次确认。
336
-
337
- ---
338
-
339
- ## Phase B — 基于骨架填充正文
340
-
341
- ⚠️ **每一段正文必须服务于 Phase A 确定的骨架。** 如果写着写着偏离了
342
- 论证结构或错过了 clock 节点,停下来对照骨架修正,不要硬写下去。
343
-
344
- **B1. Hook(12:00 位 bang moment)**
345
-
346
- 写 1-3 句。从 A3 已经确定的 hook bang moment 展开。
347
-
348
- | Hook 类型 | 模式 |
349
- |-----------|------|
350
- | Pain point | "XX最大的问题不是YY,而是ZZ" |
351
- | Suspense | "我花了X万测试,结果发现…" |
352
- | Contrast | "别人XX,你却在YY" |
353
- | Identity | "每个做XX的人都经历过这一刻" |
354
-
355
- ❌ 绝对禁止:"哈喽大家好" / "你有没有想过" / 任何通用问候
356
-
357
- **坏 hook vs 好 hook 对比:**
358
- ```
359
- ❌ 坏:"今天聊聊 vibe-coding,这是一个很火的概念。"
360
- → 没有观点、没有冲突、没有理由继续看
361
-
362
- ✅ 好:"我不会写代码。但我用 3 周时间,做了一个智能分类平台——
363
- 自动识别图片、分类、智能推荐。不是外包给程序员做的,
364
- 是她自己用 AI 工具一个人搞定的。"
365
- → 有具体案例、有反直觉(不会代码但做出了产品)、有悬念(怎么做到的)
366
- ```
367
-
368
- **B2. Body(3:00 → 6:00 → 9:00 的论证展开)**
369
-
370
- Follow the argument chain from A2. Each paragraph maps to a clock node from A3.
371
-
372
- Apply the Operating System principles throughout — they replace specific writing rules:
373
- - EMPATHY FIRST → earn the reader's next 3 seconds with every sentence
374
- - THEIR WORDS NOT YOURS → if the reader wouldn't say it, you can't write it
375
- - SHOW THE MOVIE → every claim needs a scene (face, number, moment)
376
- - TENSION IS OXYGEN → every paragraph opens or closes a question
377
- - THE CREATOR IS THE PROOF → lead with creator's own experience
378
-
379
- **Length:** No cap. Fear short, not long. If a case study deserves 200 words of vivid
380
- detail, give it 200 words. Readers leave because of boredom, not length. The only
381
- constraint: every sentence must have a reason to exist (advance argument, build emotion,
382
- provide evidence). No padding.
383
-
384
- **After each clock section, verify against skeleton:**
385
- - Does this paragraph serve the argument structure from A2?
386
- - Is the planned bang moment present and strong?
387
- - Are the pre-placed micro-retention techniques firing?
388
- - Apply EMPATHY FIRST: would the reader keep reading at this point? If not, rewrite
389
- before continuing.
390
-
391
- **B3. Comment triggers(评论触发)**
392
-
393
- 在正文中自然嵌入 1-2 个评论触发点(不是单独加在最后):
394
-
395
- | 类型 | 做法 | 例子 |
396
- |------|------|------|
397
- | 争议埋点 | 故意留一个可辩论的观点 | "AI 不会让你变成超人,它只是放大你已经有的东西。" |
398
- | 未答问题 | 提出但不完全回答 | "至于为什么大厂不这么做?评论区聊" |
399
- | 金句钩子 | 一句值得截图的话 | "想到了,就能做出来。这才是真正的能力边界变化。" |
400
-
401
- 标注:`commentTriggers: [{ type: "controversy", position: "paragraph N" }]`
402
-
403
- **B4. CTA**
404
-
405
- 1-2 句收尾。连接内容价值:"收藏这条,下次用得上" > "觉得有用就点赞"。
406
-
407
- **B5. Title(3-5 个候选)**
408
-
409
- | 公式 | 模式 | 例子 |
410
- |------|------|------|
411
- | Number + Result | 数字+结果 | "用了3个月AI,我把团队从12人砍到3人" |
412
- | Contrarian | 反直觉 | "AI写的代码比人快10倍,但我劝你别用" |
413
- | Identity + Pain | 身份+痛点 | "传统老板看过来:这3种AI项目100%是坑" |
414
- | Curiosity Gap | 悬念 | "花了20万做AI系统,结果…" |
415
- | Contrast | 对比 | "别人用AI赚钱,你用AI亏钱,差在哪?" |
416
-
417
- 15-25 字。标注每个候选用了什么公式。
418
-
419
- **B6. Hashtags**
420
-
421
- 调用 `generateHashtags(topic, platform, tags)` 生成平台专用标签。
422
-
423
- ---
424
-
425
- 7. **Self-review — run the Operating System check**
426
-
427
- Re-read the entire draft once through. For each paragraph, verify the 5 principles:
428
-
429
- **EMPATHY FIRST check:** Read the draft as if you are the audiencePersona, scrolling
430
- on your phone. At every paragraph boundary ask: would I keep reading? If any point
431
- makes you think "so what?" or "I'd swipe away here" — rewrite that section.
432
-
433
- **THEIR WORDS NOT YOURS check:** Scan for any word the reader wouldn't use in casual
434
- conversation. Every term must pass the coffee-chat test.
435
-
436
- **SHOW THE MOVIE check:** Is every claim attached to a scene (face, number, moment)?
437
- Any paragraph that reads like a summary instead of a story needs a concrete example
438
- injected.
439
-
440
- **TENSION IS OXYGEN check:** Does every paragraph either open or close a question?
441
- Any paragraph that just "sits there" providing information without tension is a
442
- dropout point — add a question, contradiction, or surprise.
443
-
444
- **THE CREATOR IS THE PROOF check:** If the creator has relevant personal experience
445
- for this topic, is it in the draft? Not as a footnote — as the backbone?
446
-
447
- **Structure verification:**
448
- - [ ] 4 clock bang moments present and strong?
449
- - [ ] Argument chain from A2 complete — no missing steps?
450
- - [ ] HKRR dominant dimension consistent throughout?
451
- - [ ] ≥2 micro-retention techniques fired at planned positions?
452
- - [ ] ≥1 comment trigger embedded naturally?
453
- - [ ] Hypothesis, title, hashtags ready?
454
-
455
- 8. **Save via `autocrew_content` tool — THE ONLY ALLOWED WAY TO SAVE:**
456
-
457
- ⚠️ **CRITICAL — 绝对禁止用 Write 工具直接写 draft.md 文件。**
458
- `autocrew_content` save action 会同时创建 `draft.md`、`meta.yaml`、pipeline 项目结构、
459
- 运行去AI味处理。用 Write 工具直接写文件会导致 meta.yaml 缺失、版本记录丢失、pipeline
460
- 状态机断裂。如果你脑子里有一个"我先用 Write 写到文件,然后再..."的想法 — 停下来,
461
- 那个想法是错的。唯一正确的路径是调用 `autocrew_content`。
462
-
463
- ```json
464
- {
465
- "action": "save",
466
- "title": "The single best title (no emoji in title field)",
467
- "body": "Full script as plain text. Blank lines between sections.",
468
- "platform": "xiaohongshu",
469
- "topicId": "topic-xxx (if based on a topic)",
470
- "tags": ["tag1", "tag2"],
471
- "hashtags": ["#标签1", "#标签2"],
472
- "status": "draft",
473
- "hypothesis": "I believe [angle] will [outcome] because [reason]",
474
- "experiment_type": "hook_test",
475
- "content_pillar": "AI落地避坑",
476
- "comment_triggers": [{"type": "controversy", "position": "paragraph 3"}]
477
- }
478
- ```
479
-
480
- Note: Auto-humanize runs automatically inside the save tool. You do NOT need to call humanize separately.
481
-
482
- 8.5. **⚠️ Post-save verification (MANDATORY):**
483
-
484
- After `autocrew_content` returns, verify these fields exist in the response:
485
- - `ok: true` — save succeeded
486
- - `filePath` — draft.md 路径
487
- - `projectDir` — pipeline 项目目录
488
-
489
- If ANY of these are missing or `ok: false`:
490
- - Do NOT proceed to output.
491
- - Do NOT fall back to Write tool.
492
- - Show the error to the user and ask them to retry.
493
-
494
- If save succeeded, do a quick sanity check — the response should contain `pipelinePath`.
495
- If it does, the pipeline project is properly initialized with meta.yaml and draft.md.
496
-
497
- 9. **Auto-review (MANDATORY — runs silently):**
498
- - After saving, ALWAYS run content review:
499
- ```json
500
- { "action": "full_review", "content_id": "<saved-id>", "platform": "<platform>" }
501
- ```
502
- - If review passes → proceed to output.
503
- - If review finds issues → auto-fix what can be fixed, then proceed to output.
504
- - Do NOT ask the user "要审核吗?" — just do it.
505
-
506
- 10. **Output to user:**
507
- Show the complete draft in chat, including:
508
- - Title (with 2-3 alternative variants + formula annotations)
509
- - Content pillar tag
510
- - Hypothesis
511
- - Full body text
512
- - Comment trigger annotations
513
- - Micro-retention technique annotations
514
- - Hashtags
515
- - Clock mapping (for video)
516
- - Review result summary (pass/issues found)
517
- - **File location**:
518
- > 📄 内容已保存到:`~/.autocrew/contents/{content-id}/draft.md`
519
- > 打开方式:在终端执行 `open ~/.autocrew/contents/{content-id}/` 或用 Obsidian 打开 `~/.autocrew/` 文件夹
520
- Then:
521
- > 要修改的话直接说,或者确认后我帮你标记为待发布。
522
-
523
- **⚠️ IMPORTANT — Remember the `content_id` from the save result.** You will need it
524
- for any subsequent revision in this conversation.
525
-
526
- 11. **Handling revisions (MANDATORY — 不可只在聊天框里改):**
527
-
528
- When the user requests modifications to a saved draft ("改一改", "换个角度", "这里调整一下",
529
- "第二段重写", etc.), you MUST persist the revised content back to the pipeline. Never show
530
- a rewritten version in chat only — the draft file must stay in sync.
531
-
532
- Steps for every revision:
533
-
534
- a. Rewrite the full body (or title) incorporating the user's feedback. Re-check against
535
- the Step 7 self-review list — a revision is still a draft, same standards apply.
536
-
537
- b. Call `autocrew_content` with `action: "update"`:
538
- ```json
539
- {
540
- "action": "update",
541
- "id": "<content-id from the original save>",
542
- "title": "<updated title if changed, else original>",
543
- "body": "<full revised body — not a diff, the complete new text>",
544
- "diff_note": "<one-line summary of what changed and why, e.g. '换成悬念式开头,加 vibe-coding 具体案例'>"
545
- }
546
- ```
547
- The storage layer will archive the previous `draft.md` into an immutable
548
- `draft-v{N}.md` snapshot, then replace `draft.md` with your new body, and append
549
- the snapshot entry to `meta.yaml` → `versions`. After this:
550
- - `draft.md` always holds the newest revision
551
- - `draft-v1.md`, `draft-v2.md`, ... are frozen historical states (never modified)
552
-
553
- b.5. **If the user's revision changes the angle or adds new claims** (new companies,
554
- new data, new cases), go back to Step 5.5 and add more reference files BEFORE
555
- rewriting. New claims still need backing. Don't smuggle new unverified material in
556
- under the label "minor tweak".
557
-
558
- c. Confirm to the user that the new version is saved, and show the updated content.
559
- Example:
560
- > 已更新到 v2(`~/.autocrew/data/pipeline/drafting/{project}/draft.md`)。改动:{diff_note}
561
-
562
- d. If the revision is substantial (new angle, new hook, new structure), re-run
563
- `full_review` from Step 9 on the updated content before confirming.
564
-
565
- **Never do:** paste the revised content in chat without calling `update`. If you catch
566
- yourself about to show "这是修改后的版本..." without a tool call, stop and save first.
567
-
568
- 12. **If adaptation is needed:**
569
- - Do not just trim one draft for another platform.
570
- - Use `platform-rewrite` / `autocrew_rewrite` to create the first platform-native version.
571
-
572
- ## Platform-Specific Adjustments
573
-
574
- | Platform | Chars | Style notes |
575
- |----------|-------|-------------|
576
- | xiaohongshu | 300-1000 | Emoji-rich, casual, hashtags at end (5-15) |
577
- | douyin | Script format | [Scene] + [Voiceover] + [Text overlay], hook in 3s |
578
- | wechat_mp | 1500-3000 | Subheadings every 300-500 chars, more structured |
579
- | wechat_video | 300-800 | Educational tone, include text summary |
580
- | bilibili | 500-2000 | 年轻化表达,可以用梗,【】标注类型 |
60
+ ```
61
+ autocrew_content action="save"
62
+ title: ≤20 chars
63
+ body: full draft
64
+ platform: target platform
65
+ hypothesis: what this tests
66
+ comment_triggers: at least 1
67
+ ```
581
68
 
582
- ## Title & Hashtag Integration
69
+ Auto-humanization and review run automatically after save — do not call them manually.
583
70
 
584
- The `title-hashtag.ts` module provides:
585
- - `generateTitleVariants(topic, platform)` → 3-5 title variants with style labels
586
- - `generateHashtags(topic, platform, tags)` → deduplicated, platform-limited hashtags
587
- - `generateForPlatform(topic, platform)` → titles + hashtags + tips in one call
71
+ ## Revision Handling
588
72
 
589
- Always use these for structured title/hashtag generation. The AI agent refines the output — these are starting points, not final answers.
73
+ If user requests changes:
74
+ 1. Read feedback carefully — what specifically is wrong?
75
+ 2. Make targeted edits (don't rewrite from scratch unless asked)
76
+ 3. Save updated version via autocrew_content action="update"
590
77
 
591
- ## Error Handling
78
+ ## Platform Adaptation
592
79
 
593
- | Failure | Action |
594
- |---------|--------|
595
- | Style/Memory files missing | Write with sensible defaults. Suggest running style-calibration. |
596
- | Topic not found | Ask user for topic details directly. |
597
- | Save fails | Output the content in chat so user can copy it. Retry save once. |
598
- | Review fails to run | Save the draft anyway. Note that review was skipped. |
599
- | title-hashtag returns empty | Fall back to manual title + basic hashtags from tags. |
600
- | Content pillars not configured | Skip pillar check, suggest configuring pillars. |
601
- | No teardowns found | Skip reference step, write from scratch. |
80
+ After the primary draft is saved, if user wants to publish on additional platforms:
81
+ - Use autocrew_rewrite action="batch_adapt" for multi-platform rewrites
82
+ - Each platform has different title length limits and content norms
83
+ - Load title-craft skill for platform-specific title methodology