Skip to content
Back to skills

Lyric Doctor

ASecurity

当使用者贴出一份写好的歌词说"帮我改改"、"这词哪里有问题"、"听起来像 AI 写的"、"帮我看看字数和押韵对不对"时使用。先跑脚本做机械体检(字数、断句、陈词命中、重复行、与模板比对),再判断需要读音和语感的部分(韵辙、画面感、主歌推进、hook 是否成立、可唱性),可派一个 sonnet 子代理做陌生听众初听测试。产出定点修改清单,每处给两三个替换候选,不重写整稿。

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
documentationpythongobash

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add ChromiteCr/Skills --skill lyric-doctor --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Lyric Doctor?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Lyric Doctor
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/chromitecr-lyric-doctor/badge)](https://www.skillsdirectory.com/skills/chromitecr-lyric-doctor)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: lyric-doctor
description: 当使用者贴出一份写好的歌词说"帮我改改"、"这词哪里有问题"、"听起来像 AI 写的"、"帮我看看字数和押韵对不对"时使用。先跑脚本做机械体检(字数、断句、陈词命中、重复行、与模板比对),再判断需要读音和语感的部分(韵辙、画面感、主歌推进、hook 是否成立、可唱性),可派一个 sonnet 子代理做陌生听众初听测试。产出定点修改清单,每处给两三个替换候选,不重写整稿。
category: songwriting/revision
version: 0.1.1
status: draft
priority: P1
compatible_agents:
  - claude-code
  - generic-llm-agent
display_name: 歌词体检
outputs:
  - chat
max_rounds: 20
suggest_hint: 词写完了但总觉得哪里不对?用「歌词体检」逐句查字数、韵和 AI 腔
---

# 歌词体检 / Lyric Doctor

给一份写好的词做体检,产出定点修改清单。

**不重写整稿**。使用者自己写的词里有他的语气和真话,整篇重写等于把这些换成模型的默认口吻,
稿子会变得更"顺"也更没人味。这个技能只指出哪一行有什么问题、可以往哪个方向改。

## 何时使用 / When to use

- 词写完了,想知道能不能唱、字数对不对
- 觉得"听起来像 AI 写的"但说不出哪里不对
- 拿到一份别人写的或模型生成的词要评估
- 改到第五版已经麻木,需要一份外部判据

**不适用于** / Not for:

- 还没写、要从头填 → `adversarial-lyric-writer`
- 词没问题但结构不对(副歌来得太晚、主歌太长)→ `lyric-structure-mapper`

## 流程 / Process

### 1. 先跑脚本,别用眼睛数

把词存成文件(段落名单独一行,空行分段),有字数模板也存一份,然后:

```bash
python3 scripts/lyric_check.py 歌词.txt --template 模板.txt
```

段落名照使用者的写法存就行:「主歌 1」「【副歌】」「副歌:」「[Verse 1]」都认,
AABA 里单独一行的「A」「B」也算段落名。歌词段落先按段落名找模板段落,写法不同也对得上:
「主歌 1」「主歌 2」都对模板的「主」,「副歌」对「副」,重复出现的段落反复套用同一段模板。
A/B 后缀不去掉,「副歌 A」只对模板里的「副 A」。对不上的段落会报出来并计入机械问题,
不按位置硬配。

脚本给出:每行字数与停顿分段、行末字、陈词黑名单命中、完全重复的行、
同一个字反复收尾、与模板的逐行比对。无第三方依赖。退出码:0 没有机械问题,
1 有机械问题,2 输入有误(文件读不了、模板里没有 x 行)。`--selftest` 跑脚本自带的回归用例。

`--extra 词1,词2` 可以追加本首特有的禁用词(比如使用者不想再出现的某个意象),
逗号全角半角、顿号都能分隔。

**目测数字数一定会错。** 十个字和十一个字看上去一样,唱起来差半拍。
脚本不做押韵判断,因为那需要读音,纯字符串做不了。

### 2. 判断需要语感的部分

脚本跑完,逐项过下面这些。判据见 `_shared/craft-reference.md`:

| 检查项 | 怎么判 | 参考 |
|---|---|---|
| 韵辙 | 每段行末字是否同辙;副歌是不是开口辙 | 第 1 节 |
| 画面感 | 逐行问:这句能不能拍成一个镜头?拍不了的占比 | 第 2 节 |
| 主歌推进 | 主歌二相对主歌一,时间/地点/事件/视角变了吗 | —— |
| 副歌重复 | A/B 两段是不是同义换词 | —— |
| hook | 有没有一句能单独拎出来、且反复出现 | —— |
| 倒装 | 有没有为押韵扭曲语序的句子 | 第 1 节 |
| 可唱性 | 行末和停顿前是不是闭口音;换气点间隔是否过长 | 第 3 节 |

**画面感这一项最要紧**。一首词听起来像 AI,九成是因为通篇在讲道理没有具体的东西。
脚本能查出"温柔""治愈"这类词,但查不出"一切都值得"这种没有黑名单词、
却同样空洞的句子。这一项只能靠逐行判断。

### 3. 可选:陌生听众初听测试

判断 hook 是否成立时,派一个 sonnet 子代理,`model: "sonnet"`,只给它**歌词正文**,
不给主题说明、不给概念卡、不给任何背景。让它:

1. 只读一遍
2. 说出记住了哪一句
3. 用一句话说这首歌在讲什么
4. 说出它认为的情绪终点

它记不住任何一句 → hook 不成立。
它说的主题和使用者想写的差很远 → 处境没有立住,问题在概念层不在句子层。

这个测试之所以要用子代理,是因为主 Agent 已经知道这首歌想写什么,读不出"第一次听"的效果。

### 4. 出定点修改清单

按严重程度排序,不按行号排序。每一处给:位置、问题、**两到三个替换方向**(不是成句)。

给方向而不是给成句的原因:直接给成句,使用者多半会照单全收,
最后整首词变成模型写的。给方向能让他用自己的话改。

只有他明确说"直接给我改好的句子"时才给成句,并且标出哪些行被换掉了。

## 输出格式 / Output

```markdown
## 机械体检
<脚本输出的关键结论,不要整段粘贴>
- 字数:<全中 / 第 X 段第 Y 行差 N 字>
- 陈词:<命中 N 处,列出来>
- 重复:<有无>

## 需要判断的部分
| 项 | 结论 |
|---|---|
| 韵辙 | 主歌=言前,副歌=江阳,桥段第 3 行脱辙 |
| 画面感 | 24 行里 7 行能拍成镜头,其余在讲道理 |
| 主歌推进 | 主歌二是主歌一的同义换词 |
| hook | 不成立(初听测试没记住任何一句) |

## 修改清单(按严重程度)

### 1. <位置> —— <问题类型>
原句:<那一行>
问题:<具体是什么毛病>
方向:
- <方向 A>
- <方向 B>

### 2. ...

## 不用改的地方
<写得好的行,明确说出来。全篇都是问题会让人不想改了>
```

最后那一段不是客套。一份只有问题清单的体检报告,使用者会直接推倒重写,
连原本写得好的句子一起丢掉。

## 边界 / Boundaries

- **不重写整稿**。除非使用者明确要求,只给定点修改。
- **不把他的真话改成漂亮话**。使用者写的某一行可能笨拙但真实,
  那种句子是整首词里最值钱的,指出它笨拙可以,别顺手改掉。
- **不拿"像不像某首歌"当判据**。参考成品可以谈结构和手法,不比较优劣,也不复述原歌词。
- **不给没有依据的评价**。"感觉不够高级"这种话没有用;每一条问题都要能指到具体的行和具体的判据。
- **不替他做取舍**。字数和意思冲突时,两个方案都摆出来,让他决定牺牲哪个。

## Token 控制 / Token discipline

- 先跑脚本,机械问题不要用模型逐行数
- 脚本输出只摘关键结论,不整段粘贴给使用者
- 初听测试的子代理只拿歌词正文,给多了测试就失效了
- 修改清单按严重程度截断,一次给五到八处,改完再看下一轮

## 变更记录 / Changelog

| 版本 | 日期 | 变更 | 类型 |
|---|---|---|---|
| 0.1.1 | 2026-09-26 | 修 lyric_check.py:段落名与模板写法不同(主歌 1 对「主」)时重复段被静默跳过、按序号兜底配错段落,改为精确名 → 去编号归一名 → 对不上就报;认【主歌】、副歌:、AABA 的 A/B;模板全角空格和 --extra 全角逗号不再失效;黑名单补「这就是最好的」「所有的X都会Y」并与 craft-reference 自检同步;加 --selftest;"脚本查不出"的例句换成真查不出的「一切都值得」 | patch |
| 0.1.0 | 2026-08-11 | 初始草稿,含无依赖的机械体检脚本 | minor |

Files in this skill

  • SKILL.md7.6 KB
  • scripts/lyric_check.py26.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.