autocrew 0.1.0
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.
- package/HAMLETDEER.md +562 -0
- package/LICENSE +21 -0
- package/README.md +190 -0
- package/README_CN.md +190 -0
- package/adapters/openclaw/index.ts +68 -0
- package/bin/autocrew.mjs +23 -0
- package/bin/autocrew.ts +13 -0
- package/openclaw.plugin.json +36 -0
- package/package.json +74 -0
- package/skills/_writing-style/SKILL.md +68 -0
- package/skills/audience-profiler/SKILL.md +241 -0
- package/skills/content-attribution/SKILL.md +128 -0
- package/skills/content-review/SKILL.md +257 -0
- package/skills/cover-generator/SKILL.md +93 -0
- package/skills/humanizer-zh/SKILL.md +75 -0
- package/skills/intel-digest/SKILL.md +57 -0
- package/skills/intel-pull/SKILL.md +74 -0
- package/skills/manage-pipeline/SKILL.md +63 -0
- package/skills/memory-distill/SKILL.md +89 -0
- package/skills/onboarding/SKILL.md +117 -0
- package/skills/pipeline-status/SKILL.md +51 -0
- package/skills/platform-rewrite/SKILL.md +125 -0
- package/skills/pre-publish/SKILL.md +142 -0
- package/skills/publish-content/SKILL.md +500 -0
- package/skills/remix-content/SKILL.md +77 -0
- package/skills/research/SKILL.md +127 -0
- package/skills/setup/SKILL.md +353 -0
- package/skills/spawn-batch-writer/SKILL.md +66 -0
- package/skills/spawn-planner/SKILL.md +72 -0
- package/skills/spawn-writer/SKILL.md +60 -0
- package/skills/teardown/SKILL.md +144 -0
- package/skills/title-craft/SKILL.md +234 -0
- package/skills/topic-ideas/SKILL.md +105 -0
- package/skills/video-timeline/SKILL.md +117 -0
- package/skills/write-script/SKILL.md +232 -0
- package/skills/xhs-cover-review/SKILL.md +48 -0
- package/src/adapters/browser/browser-cdp.ts +260 -0
- package/src/adapters/browser/browser-relay.ts +236 -0
- package/src/adapters/browser/gateway-client.ts +148 -0
- package/src/adapters/browser/types.ts +36 -0
- package/src/adapters/image/gemini.ts +219 -0
- package/src/adapters/research/tikhub.ts +19 -0
- package/src/cli/banner.ts +18 -0
- package/src/cli/bootstrap.ts +33 -0
- package/src/cli/commands/adapt.ts +28 -0
- package/src/cli/commands/advance.ts +28 -0
- package/src/cli/commands/assets.ts +24 -0
- package/src/cli/commands/audit.ts +18 -0
- package/src/cli/commands/contents.ts +18 -0
- package/src/cli/commands/cover.ts +58 -0
- package/src/cli/commands/events.ts +17 -0
- package/src/cli/commands/humanize.ts +27 -0
- package/src/cli/commands/index.ts +80 -0
- package/src/cli/commands/init.ts +28 -0
- package/src/cli/commands/intel.ts +55 -0
- package/src/cli/commands/learn.ts +34 -0
- package/src/cli/commands/memory.ts +18 -0
- package/src/cli/commands/migrate.ts +24 -0
- package/src/cli/commands/open.ts +21 -0
- package/src/cli/commands/pipelines.ts +18 -0
- package/src/cli/commands/pre-publish.ts +27 -0
- package/src/cli/commands/profile.ts +31 -0
- package/src/cli/commands/research.ts +36 -0
- package/src/cli/commands/restore.ts +28 -0
- package/src/cli/commands/review.ts +61 -0
- package/src/cli/commands/start.ts +28 -0
- package/src/cli/commands/status.ts +14 -0
- package/src/cli/commands/templates.ts +15 -0
- package/src/cli/commands/topics.ts +18 -0
- package/src/cli/commands/trash.ts +28 -0
- package/src/cli/commands/upgrade.ts +48 -0
- package/src/cli/commands/versions.ts +24 -0
- package/src/cli/index.ts +40 -0
- package/src/data/sensitive-words-builtin.json +114 -0
- package/src/data/source-presets.yaml +54 -0
- package/src/e2e.test.ts +596 -0
- package/src/modules/auth/cookie-manager.ts +113 -0
- package/src/modules/cards/template-engine.ts +74 -0
- package/src/modules/cards/templates/comparison-table.ts +71 -0
- package/src/modules/cards/templates/data-chart.ts +76 -0
- package/src/modules/cards/templates/flow-chart.ts +49 -0
- package/src/modules/cards/templates/key-points.ts +59 -0
- package/src/modules/cover/prompt-builder.test.ts +157 -0
- package/src/modules/cover/prompt-builder.ts +212 -0
- package/src/modules/cover/ratio-adapter.test.ts +122 -0
- package/src/modules/cover/ratio-adapter.ts +104 -0
- package/src/modules/filter/sensitive-words.test.ts +72 -0
- package/src/modules/filter/sensitive-words.ts +212 -0
- package/src/modules/humanizer/zh.test.ts +75 -0
- package/src/modules/humanizer/zh.ts +175 -0
- package/src/modules/intel/collector.ts +19 -0
- package/src/modules/intel/collectors/competitor.test.ts +71 -0
- package/src/modules/intel/collectors/competitor.ts +65 -0
- package/src/modules/intel/collectors/rss.test.ts +56 -0
- package/src/modules/intel/collectors/rss.ts +70 -0
- package/src/modules/intel/collectors/trends.test.ts +80 -0
- package/src/modules/intel/collectors/trends.ts +107 -0
- package/src/modules/intel/collectors/web-search.test.ts +85 -0
- package/src/modules/intel/collectors/web-search.ts +81 -0
- package/src/modules/intel/integration.test.ts +203 -0
- package/src/modules/intel/intel-engine.test.ts +103 -0
- package/src/modules/intel/intel-engine.ts +96 -0
- package/src/modules/intel/source-config.test.ts +113 -0
- package/src/modules/intel/source-config.ts +131 -0
- package/src/modules/learnings/diff-tracker.test.ts +144 -0
- package/src/modules/learnings/diff-tracker.ts +189 -0
- package/src/modules/learnings/rule-distiller.ts +141 -0
- package/src/modules/memory/distill.ts +208 -0
- package/src/modules/migrate/legacy-migrate.test.ts +169 -0
- package/src/modules/migrate/legacy-migrate.ts +229 -0
- package/src/modules/pro/api-client.ts +192 -0
- package/src/modules/pro/gate.test.ts +110 -0
- package/src/modules/pro/gate.ts +104 -0
- package/src/modules/profile/creator-profile.test.ts +178 -0
- package/src/modules/profile/creator-profile.ts +248 -0
- package/src/modules/publish/douyin-api.ts +34 -0
- package/src/modules/publish/wechat-mp.ts +320 -0
- package/src/modules/publish/xiaohongshu-api.ts +127 -0
- package/src/modules/research/free-engine.ts +360 -0
- package/src/modules/timeline/markup-generator.ts +63 -0
- package/src/modules/timeline/parser.ts +275 -0
- package/src/modules/workflow/templates.ts +124 -0
- package/src/modules/writing/platform-rewrite.ts +190 -0
- package/src/modules/writing/title-hashtag.ts +385 -0
- package/src/runtime/context.test.ts +97 -0
- package/src/runtime/context.ts +129 -0
- package/src/runtime/events.test.ts +83 -0
- package/src/runtime/events.ts +104 -0
- package/src/runtime/hooks.ts +174 -0
- package/src/runtime/tool-runner.test.ts +204 -0
- package/src/runtime/tool-runner.ts +282 -0
- package/src/runtime/workflow-engine.test.ts +455 -0
- package/src/runtime/workflow-engine.ts +391 -0
- package/src/server/index.ts +409 -0
- package/src/server/start.ts +39 -0
- package/src/storage/local-store.test.ts +304 -0
- package/src/storage/local-store.ts +704 -0
- package/src/storage/pipeline-store.test.ts +363 -0
- package/src/storage/pipeline-store.ts +698 -0
- package/src/tools/asset.ts +96 -0
- package/src/tools/content-save.ts +276 -0
- package/src/tools/cover-review.ts +221 -0
- package/src/tools/humanize.ts +54 -0
- package/src/tools/init.ts +133 -0
- package/src/tools/intel.ts +92 -0
- package/src/tools/memory.ts +76 -0
- package/src/tools/pipeline-ops.ts +109 -0
- package/src/tools/pipeline.ts +168 -0
- package/src/tools/pre-publish.ts +232 -0
- package/src/tools/publish.ts +183 -0
- package/src/tools/registry.ts +198 -0
- package/src/tools/research.ts +304 -0
- package/src/tools/review.ts +305 -0
- package/src/tools/rewrite.ts +165 -0
- package/src/tools/status.ts +30 -0
- package/src/tools/timeline.ts +234 -0
- package/src/tools/topic-create.ts +50 -0
- package/src/types/providers.ts +69 -0
- package/src/types/timeline.test.ts +147 -0
- package/src/types/timeline.ts +83 -0
- package/src/utils/retry.test.ts +97 -0
- package/src/utils/retry.ts +85 -0
- package/templates/AGENTS.md +99 -0
- package/templates/SOUL.md +31 -0
- package/templates/TOOLS.md +76 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: teardown
|
|
3
|
+
description: |
|
|
4
|
+
拆解对标内容 — 用户粘贴一段文案,输出结构化拆解报告。分析钩子、HKRR、时钟节奏、评论触发、微操技巧。结果存入 intel 系统供创作参考。
|
|
5
|
+
trigger: 当用户说"拆解"、"teardown"、"分析这条"、"对标分析"时触发
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Competitive Teardown(对标拆解)
|
|
9
|
+
|
|
10
|
+
> 免费版:分析用户粘贴的文案。Pro 版(待实现):通过 Chrome Relay 抓取视频/账号数据。
|
|
11
|
+
|
|
12
|
+
## 触发方式
|
|
13
|
+
|
|
14
|
+
用户说 "拆解这条内容" / "teardown" / "帮我分析对标" 并粘贴一段文案。
|
|
15
|
+
|
|
16
|
+
## 前置加载
|
|
17
|
+
|
|
18
|
+
- `HAMLETDEER.md` — HKRR 框架、Clock Theory、Micro-Retention Techniques、Bang Moment Types
|
|
19
|
+
- `~/.autocrew/creator-profile.json` — 用于对比自己的定位
|
|
20
|
+
|
|
21
|
+
## 拆解流程
|
|
22
|
+
|
|
23
|
+
### Step 1: 基本信息提取
|
|
24
|
+
|
|
25
|
+
- 预估平台(根据文案风格/emoji/hashtag 特征)
|
|
26
|
+
- 预估内容类型(图文 / 视频脚本 / 长文)
|
|
27
|
+
- 字数统计
|
|
28
|
+
|
|
29
|
+
### Step 2: 钩子分析
|
|
30
|
+
|
|
31
|
+
- 开头类型:Pain point / Suspense / Ideal state / Emotional resonance / Contrast / 其他
|
|
32
|
+
- 标题公式匹配:Number+Result / Contrarian / Identity+Pain / Curiosity Gap / Contrast / Resonance Question / 无匹配
|
|
33
|
+
- 钩子强度评分(0-10)
|
|
34
|
+
|
|
35
|
+
### Step 3: HKRR 评分
|
|
36
|
+
|
|
37
|
+
对四个维度分别打分(0-10):
|
|
38
|
+
|
|
39
|
+
| 维度 | 评分 | 说明 |
|
|
40
|
+
|------|------|------|
|
|
41
|
+
| Happiness | X/10 | 是否有趣/有笑点? |
|
|
42
|
+
| Knowledge | X/10 | 是否有增量信息/方法论? |
|
|
43
|
+
| Resonance | X/10 | 是否触达情绪/身份认同? |
|
|
44
|
+
| Rhythm | X/10 | 节奏是否有变化?能否持续吸引? |
|
|
45
|
+
|
|
46
|
+
标注最强维度。
|
|
47
|
+
|
|
48
|
+
### Step 4: Clock 映射
|
|
49
|
+
|
|
50
|
+
将内容按比例映射到时钟位,分析每个位置:
|
|
51
|
+
|
|
52
|
+
| Clock | 内容段落 | Bang moment 类型 | 效果评估 |
|
|
53
|
+
|-------|---------|-----------------|---------|
|
|
54
|
+
| 12:00 | ... | ... | 强/弱/缺失 |
|
|
55
|
+
| 3:00 | ... | ... | 强/弱/缺失 |
|
|
56
|
+
| 6:00 | ... | ... | 强/弱/缺失 |
|
|
57
|
+
| 9:00 | ... | ... | 强/弱/缺失 |
|
|
58
|
+
|
|
59
|
+
### Step 5: 评论触发点识别
|
|
60
|
+
|
|
61
|
+
- 争议埋点:在哪里?什么话题?
|
|
62
|
+
- 未答问题:有没有故意留白?
|
|
63
|
+
- 金句钩子:哪句最值得截图?
|
|
64
|
+
|
|
65
|
+
### Step 6: 微操技巧识别
|
|
66
|
+
|
|
67
|
+
- 开放循环:有没有?在哪里?
|
|
68
|
+
- 信息缺口:段落结尾有没有前向动力?
|
|
69
|
+
- 视觉锚点:有没有高密度独立金句?
|
|
70
|
+
- 断裂感:有没有突然的超短句?
|
|
71
|
+
|
|
72
|
+
### Step 7: 一句话总结
|
|
73
|
+
|
|
74
|
+
"这条内容有效/无效,核心原因是 ___"
|
|
75
|
+
|
|
76
|
+
### Step 8: 可借鉴点
|
|
77
|
+
|
|
78
|
+
列出 2-3 个可以应用到自己内容的具体技巧。
|
|
79
|
+
|
|
80
|
+
## 保存拆解结果
|
|
81
|
+
|
|
82
|
+
将拆解报告保存到 intel 系统:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
~/.autocrew/data/pipeline/intel/_teardowns/{slug}-{date}.md
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
YAML frontmatter:
|
|
89
|
+
```yaml
|
|
90
|
+
---
|
|
91
|
+
title: "拆解: {原内容标题或前20字}"
|
|
92
|
+
type: teardown
|
|
93
|
+
platform: "{预估平台}"
|
|
94
|
+
hookType: "{钩子类型}"
|
|
95
|
+
dominantHKRR: "{最强HKRR维度}"
|
|
96
|
+
hookScore: 0
|
|
97
|
+
overallScore: 0
|
|
98
|
+
createdAt: "{ISO timestamp}"
|
|
99
|
+
tags: [teardown]
|
|
100
|
+
---
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 输出格式
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
## 🔍 对标拆解报告
|
|
107
|
+
|
|
108
|
+
**内容摘要:** {前50字}...
|
|
109
|
+
**预估平台:** {platform}
|
|
110
|
+
**字数:** {count}
|
|
111
|
+
|
|
112
|
+
### 钩子分析
|
|
113
|
+
- 类型:{hook type}
|
|
114
|
+
- 公式:{title formula or 无匹配}
|
|
115
|
+
- 强度:{score}/10
|
|
116
|
+
- 评价:{一句话评价}
|
|
117
|
+
|
|
118
|
+
### HKRR 评分
|
|
119
|
+
| H | K | R | R |
|
|
120
|
+
|---|---|---|---|
|
|
121
|
+
| {n}/10 | {n}/10 | {n}/10 | {n}/10 |
|
|
122
|
+
**最强维度:** {element}
|
|
123
|
+
|
|
124
|
+
### Clock 映射
|
|
125
|
+
{table}
|
|
126
|
+
|
|
127
|
+
### 评论触发点
|
|
128
|
+
{list}
|
|
129
|
+
|
|
130
|
+
### 微操技巧
|
|
131
|
+
{list}
|
|
132
|
+
|
|
133
|
+
### 💡 总结
|
|
134
|
+
{一句话总结}
|
|
135
|
+
|
|
136
|
+
### 🎯 可借鉴
|
|
137
|
+
{2-3 bullet points}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
向用户确认后保存。
|
|
141
|
+
|
|
142
|
+
## 与 write-script 联动
|
|
143
|
+
|
|
144
|
+
write-script 在创作时会自动搜索 `pipeline/intel/_teardowns/` 目录,查找与当前主题相关的拆解报告作为参考。无需手动操作。
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: title-craft
|
|
3
|
+
description: |
|
|
4
|
+
Domain-agnostic viral title methodology. Reference skill — not invoked standalone.
|
|
5
|
+
Other skills (topic-ideas, spawn-writer, platform-rewrite) reference this for title creation guidance.
|
|
6
|
+
invokable: false
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Viral Title Methodology
|
|
10
|
+
|
|
11
|
+
> Reference skill. Provides domain-agnostic frameworks for crafting high-performing titles across any niche. Consult this before generating or adapting titles.
|
|
12
|
+
|
|
13
|
+
## Core Principle
|
|
14
|
+
|
|
15
|
+
A great title speaks to ONE specific person, not a crowd. Before writing any title, answer three questions:
|
|
16
|
+
|
|
17
|
+
1. **Who is reading?** — What specific person will see this in their feed?
|
|
18
|
+
2. **What are they thinking right now?** — What worry, desire, or curiosity do they have at this moment?
|
|
19
|
+
3. **What do they want?** — What outcome would make them stop scrolling?
|
|
20
|
+
|
|
21
|
+
Build a hyper-specific reader portrait: not "people interested in AI" but "a 35-year-old traditional business owner who heard AI can cut costs, spent money on it, got burned, and now wants to know if it's all hype."
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## The 8 Title Types
|
|
26
|
+
|
|
27
|
+
These are psychological mechanisms, not rigid templates. Combine 2 types for differentiation. Each type has classic sub-methods listed as examples — develop new variants based on your domain and audience.
|
|
28
|
+
|
|
29
|
+
### 1. Emotional Resonance — "They understand me"
|
|
30
|
+
|
|
31
|
+
Make the reader feel seen and understood.
|
|
32
|
+
|
|
33
|
+
**Sub-methods:**
|
|
34
|
+
|
|
35
|
+
- **Honest Conversation** — Write like you're talking to a close friend. Raw, real, unfiltered.
|
|
36
|
+
- Formula: `[Frank admission] + [Real emotional expression]`
|
|
37
|
+
- Signals: first-person voice, emoji for emotion, colloquial language
|
|
38
|
+
- Core test: Does it sound like a real person talking, not a brand?
|
|
39
|
+
|
|
40
|
+
- **Precision Lens** — Zoom into a specific person and situation so the target reader thinks "this is literally about me."
|
|
41
|
+
- Formula: `[Specific persona/situation] + [Concrete solution]`
|
|
42
|
+
- Signals: mention specific demographics, budgets, scenarios, life stages
|
|
43
|
+
- Core test: Could you name the exact person this is for?
|
|
44
|
+
|
|
45
|
+
Develop new variants based on your domain. The underlying mechanism: reader recognition — "this is about ME."
|
|
46
|
+
|
|
47
|
+
### 2. Transformation Contrast — "Change is possible"
|
|
48
|
+
|
|
49
|
+
Show the gap between before and after. Spark desire for change.
|
|
50
|
+
|
|
51
|
+
**Sub-methods:**
|
|
52
|
+
|
|
53
|
+
- **Before/After Gap** — Highlight dramatic transformation with minimal effort implied.
|
|
54
|
+
- Formula: `[Problem state] + [Surprising result]`
|
|
55
|
+
- Signals: numbers that quantify change, words like "from X to Y"
|
|
56
|
+
|
|
57
|
+
- **Small Input, Big Output** — Emphasize low cost or effort with disproportionate results.
|
|
58
|
+
- Formula: `[Minimal investment] + [Outsized outcome]`
|
|
59
|
+
- Signals: specific dollar amounts, time frames, concrete metrics
|
|
60
|
+
|
|
61
|
+
Core test: Does the reader see a version of their situation that got dramatically better?
|
|
62
|
+
|
|
63
|
+
### 3. Emotion Trigger — "I need to act on this feeling"
|
|
64
|
+
|
|
65
|
+
Activate strong emotional response — either pain avoidance or pleasure seeking.
|
|
66
|
+
|
|
67
|
+
**Sub-methods:**
|
|
68
|
+
|
|
69
|
+
- **Pain Point Strike** — Hit anxiety, fear of loss, or regret directly.
|
|
70
|
+
- Formula: `[Warning word] + [Common mistake] + [Emotional punctuation]`
|
|
71
|
+
- Signals: words like "never," "avoid," "mistake," "regret"
|
|
72
|
+
- Use restraint: professional warning, not fear-mongering
|
|
73
|
+
|
|
74
|
+
- **Aspiration Fulfillment** — Present the ideal state the reader craves.
|
|
75
|
+
- Formula: `[Premium/aspirational word] + [Ideal outcome] + [Simple method hint]`
|
|
76
|
+
- Signals: words suggesting quality, ease, social proof
|
|
77
|
+
|
|
78
|
+
Core test: Does the reader feel an emotional pull — either "I must avoid this" or "I want that"?
|
|
79
|
+
|
|
80
|
+
### 4. Perspective Elevation — "This is bigger than I thought"
|
|
81
|
+
|
|
82
|
+
Connect a specific detail to a larger life improvement or insight.
|
|
83
|
+
|
|
84
|
+
**Sub-methods:**
|
|
85
|
+
|
|
86
|
+
- **Detail-to-Philosophy** — Elevate a tactical tip into a life principle.
|
|
87
|
+
- Formula: `[Specific detail] + [Quality of life upgrade]`
|
|
88
|
+
- Signals: connects craft to lifestyle, implies deeper wisdom
|
|
89
|
+
|
|
90
|
+
- **Risk Warning** — Reveal hidden dangers the reader hasn't considered.
|
|
91
|
+
- Formula: `[Warning word] + [Hidden risk] + [Consequence hint]`
|
|
92
|
+
- Signals: protective tone, "I wish someone had told me"
|
|
93
|
+
|
|
94
|
+
Core test: Does the reader walk away thinking about something bigger than the surface topic?
|
|
95
|
+
|
|
96
|
+
### 5. Urgency & Scarcity — "I might miss this"
|
|
97
|
+
|
|
98
|
+
Create a sense that delay equals loss.
|
|
99
|
+
|
|
100
|
+
**Sub-methods:**
|
|
101
|
+
|
|
102
|
+
- **Time Pressure** — Imply the content or opportunity is fleeting.
|
|
103
|
+
- Formula: `[Time-pressure word] + [Scarce resource] + [Action word]`
|
|
104
|
+
- Signals: "save now," "before it's gone," "limited"
|
|
105
|
+
|
|
106
|
+
- **Insider Access** — Frame the content as exclusive or soon-to-disappear.
|
|
107
|
+
- Formula: `[Exclusivity hint] + [Valuable content] + [Urgency]`
|
|
108
|
+
|
|
109
|
+
Core test: Does the reader feel they'll lose something by not engaging now? (Without being manipulative.)
|
|
110
|
+
|
|
111
|
+
### 6. Pattern Breaker — "Wait, what?"
|
|
112
|
+
|
|
113
|
+
Defy expectations. Create cognitive dissonance that demands resolution.
|
|
114
|
+
|
|
115
|
+
**Sub-methods:**
|
|
116
|
+
|
|
117
|
+
- **Surprising Reversal** — State something that contradicts common belief.
|
|
118
|
+
- Formula: `[Unexpected claim] + [Curiosity hook]`
|
|
119
|
+
- Signals: "actually," "turns out," contradiction of conventional wisdom
|
|
120
|
+
|
|
121
|
+
- **Early Access** — Make the reader feel ahead of the curve.
|
|
122
|
+
- Formula: `[Ahead-of-time word] + [Future trend] + [Action word]`
|
|
123
|
+
- Signals: year references, "before everyone else," "not yet mainstream"
|
|
124
|
+
|
|
125
|
+
- **Secret Sharing** — Create an insider circle feeling.
|
|
126
|
+
- Formula: `[Secret hint] + [Expert knowledge] + [Small-circle feeling]`
|
|
127
|
+
- Signals: "insiders know," "not publicly shared," "industry secret"
|
|
128
|
+
|
|
129
|
+
Core test: Does the reader think "that can't be right... I need to check"?
|
|
130
|
+
|
|
131
|
+
### 7. Authority & Proof — "I can trust this"
|
|
132
|
+
|
|
133
|
+
Establish credibility through expertise, data, or social proof.
|
|
134
|
+
|
|
135
|
+
**Sub-methods:**
|
|
136
|
+
|
|
137
|
+
- **Authority Endorsement** — Borrow credibility from recognized experts or institutions.
|
|
138
|
+
- Formula: `[Authority figure/brand] + [Professional content] + [Value hint]`
|
|
139
|
+
|
|
140
|
+
- **Result Promise** — Commit to specific, measurable outcomes.
|
|
141
|
+
- Formula: `[Number + method] + [Professional term] + [Clear effect]`
|
|
142
|
+
- Signals: specific numbers, actionable steps, measurable results
|
|
143
|
+
|
|
144
|
+
- **Comprehensive Guide** — Promise a complete, one-stop solution.
|
|
145
|
+
- Formula: `[Completeness word] + [Core problem] + [Ultimate solution]`
|
|
146
|
+
- Signals: "complete guide," "everything you need," specific count of points
|
|
147
|
+
|
|
148
|
+
Core test: Would a skeptical reader think "this person actually knows what they're talking about"?
|
|
149
|
+
|
|
150
|
+
### 8. Problem-Solution — "I've been struggling with exactly this"
|
|
151
|
+
|
|
152
|
+
Name the reader's problem so precisely they feel you've read their mind.
|
|
153
|
+
|
|
154
|
+
**Sub-methods:**
|
|
155
|
+
|
|
156
|
+
- **Deep Question** — Ask the question the reader is already asking themselves.
|
|
157
|
+
- Formula: `[Thought-provoking question] + [Value point]`
|
|
158
|
+
|
|
159
|
+
- **Comparison Choice** — Frame a common decision as a clear choice.
|
|
160
|
+
- Formula: `[Option A] vs [Option B] + [Decision guidance]`
|
|
161
|
+
|
|
162
|
+
- **Need Revelation** — Help the reader realize they have a problem they haven't articulated.
|
|
163
|
+
- Formula: `[Problem prompt] + [Resonance point] + [Solution direction]`
|
|
164
|
+
- Signals: "Do you ever feel...," "Why does X always...," "You probably didn't realize..."
|
|
165
|
+
|
|
166
|
+
Core test: Does the reader think "YES, that's exactly my problem"?
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Combining Types
|
|
171
|
+
|
|
172
|
+
Single-type titles work. Two-type combinations are stronger. Examples:
|
|
173
|
+
|
|
174
|
+
- **Precision Lens + Transformation**: "Solo developer making $3K/month — how I 5x'd revenue with one change"
|
|
175
|
+
- **Pattern Breaker + Authority**: "The advice every expert gives about X is wrong — here's what the data shows"
|
|
176
|
+
- **Emotion Trigger + Problem-Solution**: "Stop wasting money on Y — this free alternative does it better"
|
|
177
|
+
|
|
178
|
+
Pick the primary type based on the content's strongest angle. Add a secondary type if it naturally fits. Never force a combination.
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Quality Checklist (5 Questions)
|
|
183
|
+
|
|
184
|
+
Every title must pass all five. If it fails any, rewrite.
|
|
185
|
+
|
|
186
|
+
1. **Targeting** — Does it speak to a specific person or scenario? (Not "everyone")
|
|
187
|
+
2. **Emotion** — Does it trigger concern, anticipation, curiosity, or desire?
|
|
188
|
+
3. **Value** — Does it promise to solve a real problem or deliver a real upgrade?
|
|
189
|
+
4. **Curiosity** — Does it create an urge to click/tap? ("I need to know more")
|
|
190
|
+
5. **Credibility** — Does it feel authentic and trustworthy? (Not clickbait)
|
|
191
|
+
|
|
192
|
+
Bonus check: Write 3-5 variants. The best title is rarely the first one.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Practical Techniques
|
|
197
|
+
|
|
198
|
+
- **Numbers beat vague quantifiers.** "3 methods" > "several methods." "Save $500" > "save money."
|
|
199
|
+
- **First person > third person.** "I tried X" > "Someone tried X."
|
|
200
|
+
- **Emoji adds visual impact** — but platform-dependent. Xiaohongshu loves it. WeChat MP less so.
|
|
201
|
+
- **Front-load the hook.** On platforms that truncate (Douyin, Instagram), the first visible characters must carry the entire weight.
|
|
202
|
+
- **Match platform tone.** Xiaohongshu is conversational. WeChat MP is authoritative. Bilibili is youth-friendly. Adapt.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Platform Title Constraints
|
|
207
|
+
|
|
208
|
+
Respect hard limits. Writing a beautiful 40-character title for Xiaohongshu is useless — it won't fit.
|
|
209
|
+
|
|
210
|
+
| Platform | Hard Limit | Recommended | Visible Before Fold | Tone |
|
|
211
|
+
|----------|-----------|-------------|--------------------:|------|
|
|
212
|
+
| Xiaohongshu | 20 chars | 10-18 | 20 (no fold) | Conversational, emoji-friendly, first-person |
|
|
213
|
+
| Douyin | 300 chars | 15-55 | ~55 | Hook-first, reversal words, suspense |
|
|
214
|
+
| Bilibili | 80 chars | 12-24 | 20-24 | Youth-friendly, brackets for labels, detailed OK |
|
|
215
|
+
| WeChat MP | 64 chars | 20-30 | 64 (no fold) | Info-dense, authoritative, colon-separated |
|
|
216
|
+
| Toutiao | 30 chars (min 5) | 15-30 | 30 (no fold) | Direct, two-segment, value-forward |
|
|
217
|
+
| YouTube | 100 chars | 30-70 | 60-70 | Keyword-rich, bilingual OK |
|
|
218
|
+
| Twitter/X | 280 chars (whole post) | 60-140 | 280 | First line = title. Punchy. |
|
|
219
|
+
| Instagram | 2200 chars (caption) | 60-125 | 125 | First line = title. Emoji-heavy. |
|
|
220
|
+
|
|
221
|
+
**When adapting across platforms: re-craft, don't truncate.** A Xiaohongshu title and a Bilibili title for the same content should feel like they were written natively for each platform.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Anti-Patterns
|
|
226
|
+
|
|
227
|
+
Reject titles that fall into these traps:
|
|
228
|
+
|
|
229
|
+
- **Jargon titles** — Using industry terminology the audience doesn't understand
|
|
230
|
+
- **Tool review format** — "{Tool Name} Review" is boring and generic
|
|
231
|
+
- **Academic tone** — Reads like a paper abstract, not a social media post
|
|
232
|
+
- **Condescending tone** — Talking down to the reader, lecturing
|
|
233
|
+
- **Generic superlatives** — "The Best X" / "Amazing Y" with no specificity
|
|
234
|
+
- **Pure clickbait** — Promise with no substance. Destroys trust long-term.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: topic-ideas
|
|
3
|
+
description: |
|
|
4
|
+
互动式选题头脑风暴。用户给出种子想法,生成5个选题方向。
|
|
5
|
+
Trigger: 帮我想选题, 想选题, 灵感, 这个方向怎么样
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 选题头脑风暴
|
|
9
|
+
|
|
10
|
+
互动式选题头脑风暴。用户给出一个种子想法,输出 5 个经过质量门检验的选题方向。
|
|
11
|
+
|
|
12
|
+
## 输入
|
|
13
|
+
|
|
14
|
+
| 参数 | 来源 | 必填 | 说明 |
|
|
15
|
+
|------|------|------|------|
|
|
16
|
+
| seed_idea | 用户消息 | 否 | 粗略的想法、观察或方向 |
|
|
17
|
+
| count | 用户消息 | 否 | 选题数量(默认 5) |
|
|
18
|
+
|
|
19
|
+
## 流程
|
|
20
|
+
|
|
21
|
+
### 1. 加载上下文
|
|
22
|
+
|
|
23
|
+
读取 `~/.autocrew/MEMORY.md` 获取品牌背景、目标受众、人设。
|
|
24
|
+
读取 `~/.autocrew/STYLE.md` 获取平台和语气偏好。
|
|
25
|
+
读取 `creator-profile.json` 获取创作者画像(如有)。
|
|
26
|
+
|
|
27
|
+
如果没有受众人设,先问用户:
|
|
28
|
+
> 我需要先了解你的内容是给谁看的。描述一个你最想影响的人 — 他是干什么的、多大年纪、为什么会关注你?
|
|
29
|
+
|
|
30
|
+
生成人设,确认后继续。
|
|
31
|
+
|
|
32
|
+
### 2. 张力拆解(模糊请求时)
|
|
33
|
+
|
|
34
|
+
如果用户只给了模糊请求(如 "帮我想选题"),先拆解为 3-4 个**受众侧张力**。
|
|
35
|
+
|
|
36
|
+
张力 = 受众**相信的** vs **实际上是真的**,用受众的语言表述。
|
|
37
|
+
|
|
38
|
+
- 差(创作者视角):"AI执行力强但判断力弱"
|
|
39
|
+
- 好(受众视角):"觉得买了AI工具就能省人力,实际上要花更多时间想清楚让AI干嘛"
|
|
40
|
+
|
|
41
|
+
**翻译规则**:创作者的知识必须翻译成受众听得懂的话。行业术语 → 日常语言。
|
|
42
|
+
|
|
43
|
+
展示张力,问用户哪个最戳,然后从那个张力出发做头脑风暴。
|
|
44
|
+
|
|
45
|
+
如果用户给了具体种子(一个故事、一个观察、一个吐槽),跳到第 3 步。
|
|
46
|
+
|
|
47
|
+
### 3. 生成选题
|
|
48
|
+
|
|
49
|
+
**Before generating, review the title methodology in `skills/title-craft/SKILL.md`.** Select 1-2 title types (from the 8 types) that best match the topic angle and target audience. Use the quality checklist to validate each title.
|
|
50
|
+
|
|
51
|
+
生成 5 个选题。每个选题写之前,模拟人设:
|
|
52
|
+
|
|
53
|
+
> [人设名], [年龄], [职业]。他刷到这条,会停下来吗?他能在3秒内理解标题在说什么吗?
|
|
54
|
+
|
|
55
|
+
如果答案是否 → 重写。**绝不使用人设听不懂的术语**。
|
|
56
|
+
|
|
57
|
+
每个选题必须包含:
|
|
58
|
+
|
|
59
|
+
- **标题**(≤20 字):具体、能让人停下来刷。
|
|
60
|
+
- **Hook 方向**:前 3 秒怎么抓住人。
|
|
61
|
+
- **角度**(内部用):非显而易见的洞察或转折。一句话。
|
|
62
|
+
- **证据**(受众可读):支撑这个角度的具体事实/数据/案例。
|
|
63
|
+
- **人设心理**:这个选题击中了受众的什么心理?解决了什么张力?
|
|
64
|
+
|
|
65
|
+
### 4. 四道质量门
|
|
66
|
+
|
|
67
|
+
每个选题必须全部通过:
|
|
68
|
+
|
|
69
|
+
- [ ] **人设测试**:人设能在 3 秒内理解标题吗?
|
|
70
|
+
- [ ] **停刷测试**:在 100 条内容中,他会为这条停下来吗?
|
|
71
|
+
- [ ] **So-what 测试**:标题是否制造了悬念?读完标题会想"然后呢"?
|
|
72
|
+
- [ ] **冒牌货测试**:一个没做过这件事的人也能写这个选题吗?如果能 → 不够独特,重来。
|
|
73
|
+
|
|
74
|
+
没通过的选题淘汰,补新的。
|
|
75
|
+
|
|
76
|
+
### 5. 反模式清单
|
|
77
|
+
|
|
78
|
+
以下选题类型直接淘汰:
|
|
79
|
+
|
|
80
|
+
- **术语标题**:用行业黑话当标题(受众看不懂)
|
|
81
|
+
- **工具测评格式**:"{工具名}测评" — 太无聊
|
|
82
|
+
- **论文式标题**:读起来像学术摘要
|
|
83
|
+
- **说教语气**:居高临下、教育口吻
|
|
84
|
+
|
|
85
|
+
### 6. 展示与确认
|
|
86
|
+
|
|
87
|
+
展示选题给用户。问哪些有感觉。
|
|
88
|
+
|
|
89
|
+
### 7. 保存
|
|
90
|
+
|
|
91
|
+
用户确认的选题,通过 `autocrew_topic` 工具保存:
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"action": "create",
|
|
96
|
+
"title": "...",
|
|
97
|
+
"description": "角度 + hook方向 + 为什么有效 + 证据",
|
|
98
|
+
"tags": [...],
|
|
99
|
+
"source": "brainstorm"
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 翻译规则
|
|
104
|
+
|
|
105
|
+
所有选题标题和描述必须用受众的语言。如果受众说中文,就写中文。不要夹杂英文术语,除非受众日常确实在用。
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# 视频时间轴生成
|
|
2
|
+
|
|
3
|
+
> Trigger: "生成视频" / "视频素材" / "时间轴" / "video timeline" / "做视频" / "视频制作"
|
|
4
|
+
|
|
5
|
+
## 概述
|
|
6
|
+
|
|
7
|
+
将已完成的文案自动生成视频时间轴,包括AI配音段落规划、B-roll素材标注、知识卡片配置。
|
|
8
|
+
|
|
9
|
+
## 前置条件
|
|
10
|
+
|
|
11
|
+
- 内容状态为 `approved` 或 `draft_ready`
|
|
12
|
+
- 文案(draft.md)已完成
|
|
13
|
+
|
|
14
|
+
## 流程
|
|
15
|
+
|
|
16
|
+
### 第一步:确认内容
|
|
17
|
+
|
|
18
|
+
使用 `autocrew_content` 工具的 `get` 动作读取内容,确认文案已就绪。
|
|
19
|
+
|
|
20
|
+
### 第二步:选择预设和比例
|
|
21
|
+
|
|
22
|
+
询问用户:
|
|
23
|
+
|
|
24
|
+
**预设风格:**
|
|
25
|
+
- `knowledge-explainer`:知识讲解(卡片为主 + B-roll 过渡)
|
|
26
|
+
- `tutorial`:教程类(步骤卡片 + 屏幕录制占位)
|
|
27
|
+
|
|
28
|
+
**画面比例:**
|
|
29
|
+
- `9:16` 竖屏(抖音/快手/Reels)
|
|
30
|
+
- `16:9` 横屏(B站/YouTube)
|
|
31
|
+
- `3:4` 小红书
|
|
32
|
+
- `1:1` 正方形(朋友圈)
|
|
33
|
+
- `4:3` 视频号
|
|
34
|
+
|
|
35
|
+
### 第三步:AI 自动标记
|
|
36
|
+
|
|
37
|
+
分析文案内容,在合适位置插入 `[card:...]` 和 `[broll:...]` 标记。
|
|
38
|
+
|
|
39
|
+
**knowledge-explainer 规则:**
|
|
40
|
+
- 约 60% 画面用知识卡片,40% 用 B-roll
|
|
41
|
+
- 提到对比、列举、要点时用 card
|
|
42
|
+
- 切换话题或需要过渡时用 broll
|
|
43
|
+
- B-roll prompt 要具体(画面内容+风格+氛围)
|
|
44
|
+
- card 数据从文案中提取,不编造
|
|
45
|
+
|
|
46
|
+
**tutorial 规则:**
|
|
47
|
+
- 每个步骤用带编号的 card 展示
|
|
48
|
+
- 步骤之间用 broll 做过渡
|
|
49
|
+
- 软件操作标注 `[broll:屏幕录制占位 — 操作描述]`
|
|
50
|
+
|
|
51
|
+
**可用卡片模板:**
|
|
52
|
+
- `comparison-table`:对比表。attrs: `title="标题" rows="名称:优点:缺点,名称:优点:缺点"`
|
|
53
|
+
- `key-points`:要点列表。attrs: `items="要点1,要点2,要点3"`
|
|
54
|
+
- `flow-chart`:流程图。attrs: `steps="步骤1,步骤2,步骤3"`
|
|
55
|
+
- `data-chart`:数据图。attrs: `title="标题" items="标签:数值,标签:数值"`
|
|
56
|
+
|
|
57
|
+
**标记语法示例:**
|
|
58
|
+
```
|
|
59
|
+
今天我们聊聊三个效率工具
|
|
60
|
+
[card:comparison-table title="三款工具对比" rows="Notion:全能:学习曲线,Obsidian:本地:无协作"]
|
|
61
|
+
|
|
62
|
+
第一个是 Notion,很多人用它来管理生活
|
|
63
|
+
[broll:Notion 应用界面操作画面,暗色主题,流畅页面切换]
|
|
64
|
+
|
|
65
|
+
它最强的地方在于三点
|
|
66
|
+
[card:key-points items="数据库驱动,模板生态,多端同步"]
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**跨段B-roll:** 一个 B-roll 跨越多段旁白时,用 `span=N`:
|
|
70
|
+
```
|
|
71
|
+
第一段话
|
|
72
|
+
第二段话
|
|
73
|
+
[broll:城市航拍夜景 span=2]
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 第四步:用户确认标记
|
|
77
|
+
|
|
78
|
+
将带标记的文案展示给用户。用户可以:
|
|
79
|
+
- 修改标记位置
|
|
80
|
+
- 更换卡片模板
|
|
81
|
+
- 调整 B-roll prompt
|
|
82
|
+
- 添加或删除标记
|
|
83
|
+
|
|
84
|
+
### 第五步:生成时间轴
|
|
85
|
+
|
|
86
|
+
用户确认后,使用 `autocrew_timeline` 工具的 `generate` 动作:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
action: generate
|
|
90
|
+
content_id: {内容ID}
|
|
91
|
+
preset: {用户选择的预设}
|
|
92
|
+
aspect_ratio: {用户选择的比例}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
将带标记文案保存为 draft.md,然后生成 timeline.json。
|
|
96
|
+
|
|
97
|
+
### 第六步:引导后续操作
|
|
98
|
+
|
|
99
|
+
告知用户时间轴已生成,后续可以:
|
|
100
|
+
|
|
101
|
+
1. **Web UI 素材面板** — 在浏览器中打开 `/contents/{id}/assets` 查看和调整素材
|
|
102
|
+
2. **自动生成素材** — 安装 `@autocrew/studio` 后,运行 `autocrew render` 自动生成 TTS 配音、B-roll 素材、知识卡片截图
|
|
103
|
+
3. **导出剪映** — 运行 `autocrew render --jianying` 导出为剪映项目文件
|
|
104
|
+
|
|
105
|
+
## 用户修改素材时
|
|
106
|
+
|
|
107
|
+
在 Web UI 素材面板中,用户可以对每个素材:
|
|
108
|
+
- 🔄 重新生成:重新调用 AI 生成
|
|
109
|
+
- 📝 编辑:修改 prompt 或卡片内容
|
|
110
|
+
- 📤 上传替换:用本地文件替换
|
|
111
|
+
|
|
112
|
+
所有素材确认后(状态为 confirmed),即可触发最终合成。
|
|
113
|
+
|
|
114
|
+
## 工具依赖
|
|
115
|
+
|
|
116
|
+
- `autocrew_content` — 读取文案
|
|
117
|
+
- `autocrew_timeline` — 生成和管理时间轴
|