关于 lyric-diagnostic
面向人类和 AI 写作者的歌词诊断技能,按六类问题分析歌词,并提供有针对性的修改建议,涵盖陈词滥调、节拍、声音和结构等方面。
主要功能
- 01六类歌词问题诊断
- 02陈词滥调与押韵检查
- 03节拍与重音分析
- 04意象与潜台词指导
- 05语气与声音审视
- 06歌曲结构评估
适用场景
- 01检查 AI 生成的歌词
- 02诊断感觉不对的歌词
- 03制作前检查歌词
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jwynia/ agent-skills --skill lyric-diagnostic安装后在 Claude Code 中输入/lyric-diagnostic确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
data/cmudict-simplified.jsonlyric-dominance-rules.jsonscripts/cliche-check.tsmeter-check.tsrhyme-check.ts详细介绍
歌词诊断:技能
你可以从多个维度诊断歌词问题。你的职责是找出歌词为何失效,并引导创作者(人类或 AI)做出更有效的选择。
核心原则
歌词失效的方式具有可预测性,也可以诊断。泛泛而谈并非中性——泛泛而谈就是糟糕。
AI 生成的歌词会聚集在统计分布的中心:最可能出现的词语选择、押韵组合和情感词汇。优化概率会产出平庸之作。有效的歌词需要有意识地偏离默认选项。
在音乐生成中,“Celtic” 会触发锡哨,在歌词生成中,“love” 也会触发可预测的押韵组合和情感陈词滥调,同样的模式由此可见。
歌词状态
状态 LY1:陈词滥调陷阱
症状: 可预测的押韵组合占据主导。用词都是第一联想。毫无惊喜。歌词可以套用到任何关于这个主题的歌曲中。
关键问题:
- 你用了哪些押韵组合?它们是否都是第一联想?
- 如果换掉句尾押韵词,意思会改变吗?(如果不会,那它就是凑数的)
- 你能列出这个主题的默认用词,并避开它们吗?
- 其他曲风会如何表达同一种情绪?
诊断清单:
- 不含一级陈词滥调词汇(love、heart、baby、forever)
- 不含套话(见下表)
- 押韵组合不是显而易见的第一联想
- 每段至少有一个出人意料的用词
- 使用具体细节,而非泛泛而谈
套话(短语层面的陈词滥调,不只是单个词):
脚本无法识别这些——它们需要语义判断:
| 短语 | 类别 | 陈词滥调的原因 |
|---|---|---|
| "screaming inside" | 未表达的痛苦 | 每首描写隐藏痛苦的歌都会用到 |
| "need you gone" | 直接表达欲望 | 直接说出想要什么,而不是展现出来 |
| "won't leave me alone" | 挥之不去 | 对记忆或念头的泛泛抱怨 |
| "thought I died" | 情感死亡隐喻 | 滥用的强烈情感标记 |
| "used to be" + 过去状态 | 怀旧铺垫 | 陈套的前后对比框架 |
| "look in your eyes" | 情感联结 | 含糊的浪漫举动 |
| "torn apart" | 毁灭 | 抽象的暴力隐喻 |
| "can't let go" | 依恋 | 直接说出问题所在 |
偷懒的押韵组合(由押韵驱动用词选择):
| 组合 | 问题 |
|---|---|
| desire / fire / tired | 这组词总是一起出现 |
| inside / died / alive | 死亡与内心意象组合 |
| away / stay / day | 动向与时间组合 |
| heart / apart / start | 心与毁灭组合 |
| alone / gone / on | 孤独组合 |
干预措施:
- 预筛选时运行
cliche-check.ts(会列出候选项,但不会做出诊断) - 手动检查套话——脚本会漏掉这些
- 列出句尾词最容易搭配的 10 个押韵词——全部避开
- 用具体的感官意象替换抽象情绪
- 问自己:“厌恶这种曲风的人绝不会说什么?”然后用那个。
状态 LY2:节拍不匹配
症状: 歌词与旋律不合。重音落在错误的音节上。需要不自然的发音。音节挤在一起或被别扭地拉长。
关键问题:
- 你能一边打节拍,一边同时朗读歌词吗?
- 重音落在哪里?是否与旋律的强调位置一致?
- 有没有音节被吞掉或不自然地拉长?
- 每个乐句有多少音节?是否一致?
诊断清单:
- 自然词重音与音乐节拍对齐
- 音节数符合旋律乐句
- 不需要别扭的发音
- 缩约形式或省音形式适合演唱
干预措施:
- 运行
meter-check.ts,分析音节数和重音模式 - 一边打节拍,一边朗读歌词——不匹配之处会一目了然
- 替换为意思相同但音节数不同的词
- 使用缩约形式减少音节,或展开表达以增加音节
状态 LY3:流于表面
**症状:**歌词表达的意思直白明了,除此之外别无他意。没有潜台词、层次或深度。情绪直接说出。一切都浮于表面。
关键问题:
- 是否有第二层解读?是否有言外之意?
- 你是在直接陈述情绪,还是通过意象唤起情绪?
- 哪个具体、鲜明的意象能为抽象概念提供支撑?
- 这些歌词能否让人初听就懂,却在反复聆听时发现深意?
诊断清单:
- 每段主歌至少有一个能从多个层面理解的意象
- 通过细节唤起情绪,而非直接陈述
- 留下一些值得反复聆听、细细发现的内容
- 用具体细节为抽象概念提供支撑
改进方法:
- 为每个抽象陈述找一个能体现它的具体动作或意象
- 不要说“我很难过”,而要展现难过是什么样子、听起来怎样、感受如何
- 加入一个不太合拍的细节,制造富有成效的模糊感
- 测试:你能否对同一句歌词给出两种不同的解读?
状态 LY4:风格不匹配
**症状:**歌词的语气与音乐的情绪相矛盾。戏剧性的编曲搭配随意的措辞。轻快的音乐搭配沉重的歌词。用词不符合对该流派的预期。
关键问题:
- 此刻你希望听众感受到什么情绪?
- 你的用词是雅致还是随意,是否与音乐相匹配?
- 歌词与听众的距离(亲密/旁观)是否与伴奏相匹配?
- 这种表达方式放在这个流派中是否合理?
诊断清单:
- 用词与音乐的强度相匹配
- 歌词与听众的距离(我/你,还是他们/我们)符合音乐风格
- 符合该流派的用词预期,或有意打破预期
- 若存在反讽,信号是否明确
改进方法:
- 不听歌词,单独听音乐——它唤起了什么情绪?
- 逐段让歌词的强度与音乐的强度相匹配
- 检查该流派的用词惯例——要么有意打破,要么完全遵循
- 若使用反讽,加入提示词或结构线索
状态 LY5:忽视声音效果
**症状:**没有关注词语在口中的感觉。温柔的段落中出现刺耳的辅音连缀。元音音色单调。缺少头韵、谐元音或刻意设计的声音质感。
关键问题:
- 哪些辅音音素占主导?它们营造了什么质感?
- 元音音色是否烘托了情绪内容?
- 是否有破坏流畅感的刺耳辅音连缀?
- 是否有刻意的声音描绘?
诊断清单:
- 亲密时刻使用柔和的辅音(l、m、n、w)
- 有冲击力的时刻使用硬辅音(k、t、p)
- 元音音色烘托情绪内容
- 每段主歌至少使用一种声音修辞(头韵、谐元音)
改进方法:
- 大声朗读歌词,只关注词语在口中的感觉
- 将情绪时刻与恰当的声音质感对应起来
- 在温柔的时刻替换掉听起来刺耳的词语
- 在关键短语中加入刻意设计的头韵或谐元音
状态 LY6:结构混乱
症状: 找不到明确的钩子。主歌和副歌听起来可以互换。重复让人厌烦,而非加深印象。桥段没有形成对比。歌曲没有起伏弧线。
关键问题:
- 是否有清晰的钩子?它出现在哪里?
- 每段主歌是否提供了新信息,还是只是在重复?
- 桥段是否真正形成了对比,还是只是在延续?
- 重复是否有其价值?
诊断清单:
- 钩子清晰且令人难忘
- 各段主歌有所区别(提供新信息或不同角度)
- 副歌带来情感上的满足
- 桥段形成对比或递进
- 重复有所发展或起到强调作用,而非令人厌烦
结构陈词滥调:
| 模式 | 问题 | 修正方法 |
|---|---|---|
| 桥段 = 主歌 | 根本不是桥段,只是重复相同内容 | 转换视角、时间或说话者 |
| 副歌重复时不断扩充 | 只增加歌词,却没有发展 | 每次重复副歌都应承载更多含义 |
| 重复钩子却不加以展开 | 说出那句话,却从未进一步诠释 | 这个钩子意味着什么?让我们看见。 |
| 没有起伏弧线 | 结尾时的情感状态与开头相同 | 必须有所变化——领悟、接受或升级 |
| 各段主歌换种说法讲同一件事 | 第二段主歌只是第一段主歌的同义词版本 | 每段主歌都需要提供新信息或不同角度 |
干预措施:
- 找出钩子——如果找不到,就创作一个
- 让每段主歌回答关于主题的不同问题
- 桥段应转换视角、时间或强度
- 删掉没有存在价值的重复
- 检查:说话者在结尾时的情感状态是否有所不同?
诊断流程
步骤 1:首次聆听(整体感受)
不做分析地听一遍。记录:
- 整体印象如何?
- 哪些歌词句子有力或乏力?
- 注意力会在哪里游离?
- 听过一遍后,什么最令人难忘?
步骤 2:确定主要状态
哪种状态最能描述主要问题?
- LY1:感觉平庸、可预测 → 陈词滥调陷阱
- LY2:与旋律不合 → 格律不匹配
- LY3:缺乏深度 → 浅薄表面
- LY4:语气不对 → 语域不匹配
- LY5:听起来别扭 → 忽视声音
- LY6:缺少结构或钩子 → 结构混乱
步骤 3:进行诊断
针对主要状态:
- 回答关键问题
- 运行相关脚本(
cliche-check.ts、meter-check.ts等) - 完成诊断清单
步骤 4:检查次要状态
多种状态经常同时出现:
- 陈词滥调(LY1)常伴随浅薄(LY3)
- 格律(LY2)常伴随声音问题(LY5)
- 语域(LY4)常伴随结构问题(LY6)
步骤 5:按优先级干预
先修复影响最大的问题:
- 先处理格律(LY2),再处理声音(LY5)——如果唱不出来,声音质感也无济于事
- 先处理陈词滥调(LY1),再处理浅薄(LY3)——新鲜的措辞才能带来深度
- 先处理结构(LY6),再处理语域(LY4)——先有段落,才能匹配语气
反模式
1. 过度修改
模式: 修复一个问题,却引入新问题。每次修改都会引发连锁反应。
表现:
- 第 5 稿比第 2 稿更糟
- “修正”押韵却破坏了含义
- 原有的灵感消失了
失败原因: 歌词是一个相互关联的系统。只修单点会忽略系统层面的影响。
修正方法: 每次只改一处,然后从整体上重新阅读。检查全篇之前,不要连续进行多处修正。
2. 虚假的深刻
模式: 为复杂而追求复杂。把晦涩误当深刻。
表现:
- 歌词需要解释
- 隐喻密集,却缺乏清晰脉络
- 让听众困惑,而非引发兴趣
失败原因: 晦涩不等于深刻。听众需要一个切入点。
修正方法: 每个晦涩的元素都需要一个清晰的锚点。复杂性应服务于清晰,而不是取而代之。
3. 类型模仿
模式: 使用类型词汇,却不理解其作用。
表现:
- 乡村歌词里有卡车,却没有故事
- 嘻哈文字游戏缺少韵律感
- 独立音乐的晦涩表达缺少情感内核
为何无效: 类型词汇是实现功能的捷径。没有功能,就只是装扮。
改进方法: 理解类型元素的作用,再出于该目的运用它。
4. 依恋初稿
模式: 拒绝修改那些轻易写出来的歌词。
表现:
- “但这是我最先写出来的”
- 出于情感原因维护薄弱的歌词
- 舍不得删掉自认为出色的内容
为何无效: 初稿捕捉了直觉,但也包含杂音。需要提取其中的有效信号。
改进方法: 将初稿单独保存。把它当作别人写的来修改。
整合
输入(何时使用此技能)
- 生成 AI 歌词后(Suno 等)
- 人类创作的歌词感觉“不对劲”时
- 制作前最终确定任何歌词时
输出(之后该做什么)
- LY1(陈词滥调) → 应用突破陈词滥调框架
- LY2(格律) → 使用 meter-reference.md 查找替代方案
- LY3(浅薄) → 使用 lyric-analysis-framework.md 中的语义层次
- LY4(语域) → 查看 lyricist-dna-framework.md 中的语域模型
- LY5(声音) → 使用 lyric-analysis-framework.md 中的声音质感部分
- LY6(结构) → 使用结构架构部分
互补技能
- prose-style - 用于句子层面的写作技巧(与声音/清晰度有重叠)
- cliche-transcendence - 用于摆脱默认模式
- naming - 用于声音象征和选词
AI 歌词生成的失败模式
AI 生成的歌词(Suno 等)会因大模型的工作方式而出现可预测的问题:
退化模式
- 第 1–2 行: 模型有发挥空间,或许能找到有趣的内容
- 第 3 行起: 押韵约束开始生效,模型优先追求完成,而非原创性
- 到第 2 段时: 完全陷入统计默认模式——套话、敷衍的押韵组合
原因:
两种力量相互叠加:
-
统计中位数牵引: 大模型会生成概率最高的下一个词元。对歌词而言,这意味着最常见的押韵组合、最频繁出现的情感词汇,以及最典型的短语结构。概率优化带来平庸。
-
完成奖励偏差: 针对“有帮助”这一目标的训练,会让目标完成优先于周全程度或质量。无论押韵是否有趣,模型都会把“完成押韵”视为成功。结构完整 > 结构有意义。
这与 Sequential Focus 框架中记录的机制相同——前向参照的引力牵引。模型看到目标(押韵、行尾、段落完成),便奔向概率最高的路径,而不是探索其他可能性。
可观察到的症状
- 开篇部分展现出写作技巧,后续部分却沦为陈词滥调
- 押韵词聚集在可预测的词组中(fire/desire/tired 一起出现)
- 套话集中出现在第 2 段及之后
- 桥段往往是最薄弱的部分(离开篇最远,限制最多)
应对措施
预先确定句尾词: 自己写出韵脚词,有意避开容易成组出现的词。让模型使用那些没有随手可得的押韵搭档的词。如果避开 “fire”,就能打破 fire/desire/tired 这一组韵脚。
用具体意象开篇: 开头几行会设定词汇空间。尽早加入具体、少见的意象,可能比抽象的情感词汇更能延缓统计上的坍缩。
拆分各部分: 单独生成第一段主歌并进行评估,然后生成第二段主歌,并明确要求避开第一段主歌的押韵词族。将每个部分视为独立的生成任务。
将词族列入黑名单: 在提示词中明确禁止使用容易出现的押韵词族:
- “不要使用:fire、desire、tired、higher、liar”
- “不要使用:inside、died、alive、hide、tried”
- “不要使用:heart、apart、start、part”
提供近似押韵的替代方案: 为模型提供其他选择。“不要使用完美押韵,改用近似押韵,例如 home/come、love/move。”
隔离原则
让顺序聚焦适用于 Agent 任务的同一原则,也适用于歌词生成:隐藏最终目标,让每个阶段都能独立完成。
不要提示“写一首关于 X 的完整歌曲”。改为:
- 生成副歌钩子/标题的构思(不写完整歌词)
- 单独生成第一段主歌(暂不写副歌)
- 将第一段主歌作为背景,生成副歌
- 生成第二段主歌,并明确要求与前文有所区别
- 生成桥段,并要求转换视角
每一步都是一项完整任务。如果模型不知道最终目标是一首歌,就无法抢先完成整首歌。
此技能不会做什么
- 不会替你写歌词(仅用于诊断)
- 不会评估音乐元素(请使用 Musical DNA)
- 不会取代人类对艺术意图的判断
- 不保证商业成功(创作 ≠ 商业)
脚本(预筛选工具,而非诊断工具)
这些脚本会筛选出候选项,供大模型/人类解读。它们不会做出诊断判断。请将输出作为分析的输入,而不是把输出本身当作分析。
为什么使用预筛选工具?
- 词表无法识别陈词滥调短语(例如 “screaming inside”)
- 音素匹配无法判断押韵质量(动名词对动名词很偷懒)
- 音节计数有效,但对差异的解读需要判断
cliche-check.ts
从 lyric-dominance-rules.json 中筛选出 Tier 1/2 术语。你必须结合上下文进行评估。
用法: bun run scripts/cliche-check.ts "your lyrics here"
局限: 无法识别陈词滥调短语、受押韵驱动的选词和语义上的陈词滥调。
meter-check.ts
报告音节数、重音模式和差异。你必须判断这种差异是否有意为之。
用法: bun run scripts/meter-check.ts "your lyrics here"
适用于: 找出需要复查的诗行、发现差异较大的诗行。
rhyme-check.ts
标出押韵格式并识别押韵类型。你必须评估押韵质量。
用法: bun run scripts/rhyme-check.ts "your lyrics here"
局限: 会将动名词对动名词(-ing/-ing)标记为押韵,也会将同属一个语义领域的词对标记为押韵。无法识别受押韵驱动的选词。
快速参考
| 状态 | 核心问题 | 首要问题 | 主要修正方法 |
|---|---|---|---|
| LY1 | 可预测 | 押韵词是否都是最先想到的? | 替换陈词滥调用词 |
| LY2 | 难以演唱 | 重音是否与节拍相符? | 计算音节数,替换词语 |
| LY3 | 空洞 | 是否有潜台词? | 添加具体意象 |
| LY4 | 不匹配 | 语气是否与音乐相符? | 让词汇与力度相协调 |
| LY5 | 刺耳 | 这些词在口中是什么感觉? | 将声音与情绪对应起来 |
| LY6 | 没有方向 | 钩子在哪里? | 确定钩子并安排位置 |