用途
lw-workflow 是作词技能库的入口与路由技能。任何作词请求都先读它,再决定读哪个别的技能。它的产出不是歌词文本,而是一份 LYR-SPEC(词稿规格单)——词是其中一部分,规格单还带着“为什么这么写”和“怎么验它”。
作词是歌曲制作里唯一产出纯文本的环节,因此文本的 AB 方法可以原样使用:评判表在看结果前定稿、A/B 标签打乱、成对比较、同一对判两三次看结论稳不稳。普通话的倒字(声调走向与旋律走向相反,唱成别的字)与粤语的协音可以用程序判定,不需要耳朵,这让中文歌词第一次有了客观判据。
主要能力
第一个岔路口:哪种流程
这是本库唯一必须先答的问题,因为两条路的阶段表完全不同:
- 先曲后词:meta.upstream(段落表+旋律)→ LYR-SPEC 的 prosody 约束
- 先词后曲:LYR-SPEC 的字数句式 → 交出去约束小节数 form[].bars
两条路数据方向相反,规则只有一条:谁先做谁定,后做的一方只读。判断依据包括:是否已有旋律/demo、是否命题作文、词的内容是否比曲更重要、是否为粤语(粤语几乎必然是先曲后词,协音让旋律直接决定每个位置能用什么字)。
阶段表:先曲后词
S0 立意(intent 五项齐全,plot_type 先答且不默认叙事型,anchor_object 必须是能拍照的实物)→ S1 接规格(从 meta.upstream 读段落、小节数、情绪弧与旋律)→ S2 量句(逐句数音节/字数、标重音位置、标最高音落在哪个字,peak_syllable 必填)→ S3 找物件与意象(object writing,抽象词黑名单清零)→ S4 写词 → S5 语言层检查(倒字/协音/辙口/重音,手判结果必须写进 checks.computed)→ S6 反对称(至少填两项)→ S7 验收(LYR-LINT+AI 味清单,10 条全过)。
阶段表:先词后曲
S0 立意同上;S1 定形(自己定段落与句式,更容易写得整齐划一,反对称要更用力);S2 写词;S3 量句(反过来数出每句字数,按字数句式定 form[].bars);S4 语言层检查(此时还没有旋律,倒字查不了);S5 交接(交出规格单);S6 回检(旋律回来后必须重跑倒字/协音检查,这一步最常被漏)。最大陷阱是词定稿后配旋律才发现倒字,对策是写词时就标出每句字调轮廓,写进 prosody.sections[].melody_contour。
全库边界表
按问题分派:这首歌要说什么→lw-song-intent;段落功能、hook 与标题→lw-structure;意象与具体名词→lw-imagery;押韵与韵式→lw-rhyme;人称、视角、时间锚点、留白→lw-narrative;倒字、十三辙、平仄→lw-mandarin;粤语协音→lw-cantonese;英文重音与节拍→lw-english;日文モーラ与符割り→lw-japanese;韩文音节与收音→lw-korean;中国风→lw-chinese-style;音乐剧→lw-musical-theatre;说唱→lw-rap;倒字检测器→lw-tone-check;AI 味终检→lw-ai-tell-audit;真实例子→lw-case-studies。
最容易混的分界:日文按モーラ数(促音・撥音・長音各占一拍),韩文按谚文字块数(收音不另占拍);rhyme 管押韵本身,mandarin 管中文韵表与字调;mandarin 与 cantonese 不是换张韵表,粤语协音是硬约束且写作顺序反转;imagery 管“用什么东西说”,narrative 管“谁在说、什么时候说、哪些不说”;词的段落功能归本库,曲式小节数归作曲编曲;字怎么安到音上归本库,字该怎么唱归演唱指导。
一律出库的内容:旋律、和声、编曲、曲式小节数归作曲编曲;人声录音、修音、演唱指导归声音;为画面写音乐归配乐;不入乐的诗歌不是歌词;戏曲唱词的曲牌格律、板式句格归剧作。
LYR-SPEC 与 LYR-LINT
完整规范在 LYR-SPEC.schema.md,空模板 LYR-SPEC.template.yaml,示例 example-01-jacket.yaml(正)与 example-00-ai-default.yaml(反)。写规格单前先读模板,照字段名填;写完 prosody.syllables 后对着词逐行点一遍字数。YAML 自查两处最常写坏:值里用了引号就整句都在引号里;列表项 - {…} 下面不能再挂 note: 键。
LYR-LINT 十条:1 intent 五项非空、plot_type 在封闭集合、anchor_object 是能拍照的实物;2 每段至少 N 个具体名词、forbidden 抽象词零出现;3 各段字数不许完全相同;4 asymmetry 三项至少填两项;5 narrative.withholding 非空;6 pov+tense_anchor 非空;7 倒字率≤阈值(普通话)/协音违例=0(粤语);8 辙口不许全曲只用一两个宽辙;9 韵脚意外度不许全是最高频韵字;10 副歌各遍文本不许完全相同。第 2、7、8、9 条只报数,不判过/不过。十条是判据不是铁律:不过的条目改掉,或写一句为什么这首词就该这样。
对外接口
本库对外只经 LYR-SPEC。交给作曲编曲:lyrics[]、prosody.sections[]、先词后曲时本库定的六个共享字段、checks.computed 的倒字记录;有就读 meta.upstream 的段落表、速度、调、谁在唱、旋律出处。交给声音:lyrics[]、vocal.persona、narrative.pov、倒字高风险字。交给配乐:intent、narrative、lyrics[]。交给剧作:intent、narrative、lyrics[]。
与歌曲另一侧共享的六个字段:form[].id / form[].bars / form[].name / meta.tempo / meta.key / vocal.persona。谁先做谁定,后做一方只读。后做一方不改这六项,放不进就写消息给 music。messages 每条 {from, to, about, says, status, reply},本库写 from: lyrics。读不到回话就当没有,open 的消息不挡任何门禁。
使用方式
本库不需要用户机器上有任何工具——没有脚本、不预设 Python 或 Node。LYR-LINT 十条全部手工逐条过,结果写进 checks.self_audit。倒字用 lw-tone-check §2.2 的五个调型表手判,只对每段最高音、每句首字、大跳落点三类位置查(约占全部字的 1/5),判完把结果写进 checks.computed。不要为了检查去写脚本。
适用场景
从零写一首词、给现成旋律填词、先写词再谱曲、不知道某个问题归哪个技能、lint 不过、要把词交出去、要检验请求归属或倒字、想知道这个库能用到什么程度。
限制
语言层覆盖普通话、粤语、英文、日文、韩文,五套语言约束不可互相顶替,拿其中一套去查另一套会得到自信的错误答案。体裁层覆盖中国风、音乐剧唱词、说唱,缺民谣叙事,遇到这类请求用 L1 通用层并说明体裁惯例没有覆盖。先词后曲时倒字检查要等旋律出来再补做。第 7、8、9 条只能给出数值,不能给出“过/不过”。