lyric-concept-builder
当使用者说"我想写一首关于X的歌"、"这首歌想表达Y"、"帮我想想这首歌写什么"、"疗愈主题的歌该怎么切入"时使用,适用于只有主题词或一句念头、还没定具体处境的时候;处境和字数骨架都已齐、只差句子时改用 adversarial-lyric-writer。动笔写句子之前先定四样东西:这首歌的具体处境(谁、在什么状况、发生了什么变化)、一套只属于同一个世界的意象系统、情绪弧线的起点转折点终点、五条 h
SKILL.mdskills/songwriting/lyric-concept-builder/SKILL.md
GitHub定这首歌写什么 / Lyric Concept Builder
在写第一句之前,把这首歌的处境、意象系统、情绪弧线和 hook 候选定下来。
这一步省的是返工。跳过它直接填词,写出来的一定是形容词堆砌 —— 因为没有素材的时候,模型只剩下形容词可用。
主题不是效果
"疗愈""治愈""成长""青春"都不是主题,是听完之后的效果。 把它们当主题写,出来的就是"你已经很勇敢""慢慢来不用匆忙"这类谁都能说的话。
主题必须是一个具体处境:
| 效果词 | 换成处境 |
|---|---|
| 疗愈 | 一个人连续加班三个月后的第一个周六早上,醒来不知道该干什么 |
| 成长 | 搬家那天发现高中的校服还在衣柜最里面 |
| 遗憾 | 那条编辑了四次最后没发出去的消息 |
处境包含三件事:谁、在什么状况下、发生了什么变化。三样缺一样,这首歌就没有落点。
何时使用 / When to use
- 有一个主题词或一句话的想法,还没开始写
- 写了几句发现全是套话,想推倒重来
- 一首歌写到一半失去方向,不知道副歌该说什么
不适用于 / Not for:
- 已经知道要写什么、只差句子 → 直接用
adversarial-lyric-writer - 手上有成稿要改 → 用
lyric-doctor
流程 / Process
1. 只问两个问题
先问,因为这两个答案会决定后面所有内容,猜错了整套要重做:
- 这首歌唱给谁:唱给自己听 / 唱给某个具体的人 / 唱给泛听众。 对象不同,人称、口气、能说多私密的话全都不同
- 有没有真实的画面可以用:真实发生过的事、一个物件、一个地点、一句原话。 有就用他的;确实没有,就明说这首歌只能写通感,不能写细节
这两个问题一次问完。不要再问"你喜欢什么风格""想要什么调性",那些等有词了再定也不迟。
2. 派三个子代理,各提一个切入角
用 Agent 工具,model: "sonnet",三个并行,同一条消息发出。
每个拿到相同的处境和素材,但被指定不同的切入位置:
| 代号 | 切入位置 | 要求 |
|---|---|---|
| 近景 | 一个具体动作或物件 | 整首歌不离开这一个东西,情绪全从它身上长出来 |
| 时间 | 两个时间点的对照 | 用"那时候 / 现在"的落差承载变化,不直接说变化 |
| 对话 | 一句没说出口的话 | 整首歌是对某个人说的,那句话到副歌才出现 |
每个子代理返回:处境的一句话表述、母意象 + 三到五个子意象、情绪弧线三点、 两条 hook 候选。不许写完整段落,这一步不是写词。
3. 主 Agent 收敛
三个角里挑一个,或者取其中两个的组合。挑的时候看:
- 哪个角能撑满整首歌,而不是只够写一段副歌
- 哪个角的意象来自使用者给的真实素材,而不是子代理编的
- 哪个角在主歌二那里还有话可说(很多角只够写一遍,第二遍就没了)
挑完之后自己补全其余三项,产出下面的概念卡。
4. 意象系统必须来自同一个世界
三到五个子意象要能出现在同一个场景里。厨房、通勤、病房、深夜便利店、老家的院子, 选一个,其余的删掉。
星空 + 海洋 + 森林 + 翅膀同时在场,就是没有意象系统。 那是把所有"听起来美"的词堆在一起,听众抓不住任何一个。
判据:这五个意象能不能拍进同一个镜头里?不能就砍。
5. hook 候选给五条
hook 是副歌里被记住的那一句,通常在副歌第一句或最后一句。要求:
- 7 到 12 个字,能单独成立(拆出来发朋友圈不显得莫名其妙)
- 口语,不是书面语
- 不含
_shared/craft-reference.md第 2 节黑名单里的词 - 五条要在说法上真的不同,不是同一句话换五种措辞
给五条不是为了让使用者挑一条,是因为写到副歌时前四条大概率会不合节奏, 手上有备份比重想快。
没有这些工具时(降级)
第 2 步用到 Claude Code 的子代理(Agent 工具、model: "sonnet")。没有子代理时:
- 能发互不共享上下文的独立调用(新会话、单独的模型请求)就用它,三个切入角各一次, 每次只给处境、素材和那一个切入位置的要求
- 做不到就在同一个上下文里依次提三个切入角:每提一个之前只重读处境、素材和这个角的要求, 不回看前一个角;三个都提完再收敛
- 概念卡最后加一行"降级:各角色互相看得见",并告诉使用者三个角之间的差别会比并行时小
输出格式 / Output
## 处境
<谁 / 在什么状况下 / 发生了什么变化,三句话之内>
## 意象系统
母意象:<一个具体物件或场所>
子意象:<3-5 个,全部来自同一个世界>
不用:<明确排除掉的高危意象,写出来免得后面又飘回去>
## 情绪弧线
起点:<第一段听众感到什么>
转折:<在哪一段、因为什么翻转>
终点:<结束时停在哪里>
## hook 候选
1. <7-12 字>
2. ...
## 素材清单
<使用者提供的真实画面、物件、原话,逐条列出,填词时只能用这些>
## 我拿不准的
<需要使用者确认的地方>
终点不必是"好起来了"。疗愈题材最常见的失败就是强行给一个圆满结局, 停在"还没好但今天能出门"比停在"一切都会好起来"可信得多。
边界 / Boundaries
- 不替使用者编经历。他没说过的事就是没有。要细节就问他, 编一个"外婆院子里的柿子树"出来,整首歌的地基就是假的。
- 不把效果词当主题交差。产出里出现"这首歌想表达温暖与治愈"这种句子,就是这一步没做。
- 不在这一步写完整歌词。概念卡是给填词用的输入,越界写了整段,后面的对抗起草就被锚死了。
- 不替他选情绪终点。停在释然还是停在没解决,是使用者的判断,给建议但不代定。
- 不抄现有歌曲的概念。参考某首歌时说的是结构和手法,不是照搬它的意象系统。
Token 控制 / Token discipline
- 两个问题一次问完,不要一问一答
- 三个子代理并行,提示自包含,不传对话历史
- 子代理只返回概念卡的四项,明确禁止它写段落 —— 写了就是白烧 token
变更记录 / Changelog
| 版本 | 日期 | 变更 | 类型 |
|---|---|---|---|
| 0.1.1 | 2026-09-26 | 补"没有这些工具时(降级)":流程依赖子代理却声明 generic-llm-agent,没有子代理时改为独立调用或按角色依次提切入角并标注降级;description 补一句与 adversarial-lyric-writer 的分流判别 | patch |
| 0.1.0 | 2026-08-11 | 初始草稿 | minor |