"一个网站,一段故事,一首属于你自己的歌。"
写在前面:
从零写了60多首歌后,我踩遍了Suno的很多坑:九段管道符配置、韵脚与情感失配、中文咬字不清...... 后来我把这60首歌的创作法则逆向工程成一整套规则,并做成了一个叫**「回声(Echo)」**的免费开源网站------你只需要输入一段自己的故事,剩下的全交给AI。

事情是这样的。今年年初在AI音乐社群里听到了几首用Suno生成的歌。不是「AI写的歌也就那样」的水平------情绪到位,旋律顺,唱出来像一个真实的人在唱一段真实的经历。
我好奇了。跑去了解了Suno,对着那个输入框愣了半天。歌词不会写,Style那一栏不知道怎么填,管道符配置是什么意思完全不懂。翻了几天教程才上传了第一首歌。说实话挺粗糙的,但那个感觉很奇妙------你心里有一段经历,你把它变成了歌词,AI把它唱了出来。不是别人的歌,是你自己的。
从那之后断断续续写了60多首。状态好一晚上两首,改几十遍不满意的时候也有。
然后问题来了。每首歌都要走完整套流程------写歌词、改韵脚、配Style Prompt、填Suno、生成、听、不满意再改。每次都得重新回忆「这个韵脚对应什么情绪」「管道符顺序是什么」「该用大调还是小调」。写多了特别繁琐。
于是我把60多首歌的创作法则逆向工程成了两个SKILL------chinese-lyric-craft和songwriting-and-ai-music。Suno的坑全踩过了------多音字要重拼(「乐理」得写成「月理」,不然AI歌手会唱成「勒理」),管道符顺序不能乱,韵脚选错了整首歌别扭。
但SKILL是我自己用的。我始终在想------能不能直接做个网站?让一个完全没用过Suno的人,不用学歌词怎么写、不用懂管道符是什么,只输入一段自己经历过的故事,就能得到一首完整的歌。
所以就有了「回声(Echo)」。
三步写出一首歌
打开网站,迎接你的是一个深色画布,暖琥珀色的灯光感。右侧一张旋转的黑胶唱片动画。Hero区域写着两行字------「你经历的故事」「值得被唱出来」。



第一步:输入你的故事
往下滑,进入写歌工作区。双栏布局------左边输入,右边输出。

左边是一个大输入框,你把故事贴进去。故事最少20个字。写不了长故事?没关系。内置了三个示例故事可以直接点进去看------「冬日辞职」「外婆的厨房」「深夜出租车」------每个都是真实经历的画面切片。
输入框上方有五组配置:
- 曲风:民谣、流行、摇滚、电子、R&B、古风、爵士、后摇(可多选)
- 情绪:思念、释怀、热烈、忧伤、平静、怅然、温暖、决绝(可多选)
- 人声:男声、女声、自动
- 年代:90年代经典、千禧年、当代流行、复古怀旧
- 节奏:慢板、中板、快板
还有一个上传文件按钮。如果你有写好的txt文件(10KB以内),直接拖进去。
输入框右下角写着快捷键提示。Ctrl+Enter,开始生成。
第二步:AI分析
AI读取你的故事,提取5到8个关键意象,判断情感弧线,从十三辙里选定最合适的韵脚,匹配曲风和BPM,确定调性,推荐人声风格。



第三步:生成歌词
AI基于分析结果,按五条铁律创作完整歌词。结构固定------Verse、Pre-Chorus、Chorus、Verse、Chorus、Bridge、Chorus、Outro------全部标注Suno标准段落标签。歌词逐行动画展开,一首歌慢慢出现在你面前。
输出区有三个Tab:
歌词Tab:完整歌词,段落标注清晰。歌名下面是曲风·BPM·情绪·人声·调性信息条。三个复制按钮:复制歌词、复制Style、复制全部。

Suno配置Tab:长文本被自动拆成8个可视化标签------人声、曲风、情绪、配器、制作、动态、BPM、调性。还有一个「在Suno中听」按钮。点一下,一键复制全部,直接跳转suno.com/create。从故事到真歌,最后一步补上了。

创作分析Tab:意象清单、情感弧线描述、韵脚设计说明、推荐曲风和BPM、人声风格。

几个意料之外的细节
每首歌一张专属封面
每次生成,随机一张封面。纯CSS画的,零图片请求。8种图案------暖弧渐变、对角线切割、中心圆、斜切、水平条纹、偏移方块、同心圆环、四分块。8套色调从暖琥珀到深赭到砖红。不是「随机一张图」,是「你的歌配了一张专属封面」。
唱片架
导航条上有一个唱片架按钮。点开,从右侧滑入一个面板。你写过的每首歌一张卡片------CSS封面 + 歌名 + 曲风·BPM·日期。每张卡片有独立的删除按钮。空状态是一张纯CSS画的黑胶唱片插画,上面写着「还没有唱片,写下你的第一首歌」。

版本对比
每首歌生成后有一个「再来一版」按钮。同样的故事,用更高的temperature再跑一次。然后弹窗并排展示Take 1和Take 2------两版各有独立封面、独立歌词、独立Suno配置、独立「在Suno中听」按钮。AI不帮你选,AI给你两版,你自己挑。


API设置
右上角齿轮弹出API设置弹窗。预置了6个模型------火山方舟(豆包)、OpenAI、DeepSeek、通义千问、智谱GLM、Moonshot(Kimi)。点一下自动填入地址和模型名,只粘贴Key就行。也支持手动填自定义配置。

历史记录存在你电脑的localStorage里,最多50条。API Key也是。不上传任何数据到服务器。
产品的灵魂:1800字的System Prompt
功能看完了。要说为什么AI能写出有章法的歌词------答案是编进代码里的1800字System Prompt。核心是三条线。
第一条线:五条创作铁律
| # | 法则 | 说明 |
|---|---|---|
| 1 | Show-Don't-Tell | 不能用「悲伤」「思念」「孤独」「幸福」这些词。情感外包给物体------「路灯一盏一盏灭了」不是「我很想你」 |
| 2 | 韵脚锁死 | 选定韵脚后全歌逐字核对。Suno的AI歌手会把意外押韵唱成同一声调 |
| 3 | 私人意象优先 | 「冰箱里的酸奶记得喝吗」 >「我的思念」。「一张小方桌,有一荤一素」 |
| 4 | 四行体追问 | 每段第四行要比前三行高一个意义层次。「没有信用卡也没有她」→「我想要怒放的生命」 |
| 5 | 禁止词 | 「其实」「就那样」「和我一样」「没什么」------全禁 |
这五条是写了60多首歌筛出来的。试过6条互相打架,试过4条AI自己编新规则稀释效果。5条能覆盖90%的常见问题。
第二条线:十三辙情感对应
不同韵辙的开口度、音色气质不一样,适配的情绪也不同:
| 韵辙 | 韵母 | 情感基调 | 适用场景 |
|---|---|---|---|
| 怀来辙 | ai | 开阔明亮 | 励志、希望 |
| 乜斜辙 | ie/üe | 狭促压抑 | 暗恋、纠结 |
| 江阳辙 | ang | 洪亮昂扬 | 宣言、大歌 |
| 遥条辙 | ao | 悠长飘荡 | 自由、漂泊 |
| 言前辙 | an | 响亮开阔 | 叙事 |
AI分析完故事的情绪后,从这张表里找到最匹配的韵脚。不只是选韵------是选对了情绪底色。
第三条线:二阶段生成
整个生成分两步。这是试出来的------一步出的话,结构对,意象也提取了,但唱起来不舒服。因为没有先「选韵脚」这步。一步出的韵脚是AI从故事里「感觉」到的,不是分析→判断→执行的流程。两步虽然多一轮API调用,但质量跳了一大截。
第一步,AI分析故事。严格JSON输出:意象清单(5-8个,必须来自故事原文)、情感弧线、韵脚选择(十三辙+理由)、曲风、BPM、调性、人声风格和性别、weirdness值、排除风格。
第二步,AI写歌。基于分析结果,按五条铁律创作。严格JSON输出:歌名(4-7字,从核心意象提取)、完整歌词(Verse-Chorus结构,150-300字)、Style Prompt(管道符九段)、创作分析。
Style Prompt最后那段「clear Mandarin diction」「crisp consonant articulation」「native Mandarin vocals」是关键------Suno v5.5 Pro的中文咬字优化全靠这三个约束。不加的话AI歌手唱歌会含混不清。

为什么必须是1M上下文的模型
上面这一整套System Prompt,8K上下文的模型塞进去就没了,用户的故事根本放不下。32K勉强能装,但几条规则的「为什么」和「反例」就得砍掉------砍掉之后成了空洞的口令,效果直接打折。
我的方法论决定了必须用1M上下文的模型。豆包Seed Evolving刚好是这个量级------1024K输入,在上面跑完整Prompt+Spec+四轮迭代+两首歌全文,总共不到50K token,只用掉了5%。每条规则可以保留完整的「为什么+反例+来源」,不需要为了省token把知识库压缩成口号。
项目是怎么搭起来的
想法有了,下一步是选工具。
生成项目的模型用的是豆包Seed Evolving。在火山方舟控制台开通后,拿到API Key,配置Agent Plan------模型选doubao-seed-evolving,接入地址就是方舟的Anthropic兼容端点。具体的接入步骤官方文档写得很清楚:火山方舟。
开发工具用的是Codex桌面客户端。在设置里把Base URL指到方舟地址,填上模型名和Key就行了。然后就是跟它对话------我写Spec,它写代码,一轮一轮调。全程我一行代码没写。

用量统计
第一版其实被我完全推翻了。最初的设计方向偏冷色调,做完之后怎么看都不对------不像写歌的地方,像个管理后台。加上Prompt从一步改两步、API层后来兼容多模型又加了两层fallback,整个推翻重来了一遍。最终版本的总用量如下:

欢迎来试试
项目已开源:
GitHub:GitHub - chnjames/echo-suno-writer: 把故事写成歌 · 专为 Suno v5.5 Pro 优化的 AI 歌词生成器 · GitHub
在线体验:回声 --- 你经历的故事,值得被唱出来
三步就能开始:
- 打开网站 → API设置 → 填你的Key
- 输入一段你的故事
- Ctrl + Enter
试试吧。把那个一直藏在心里的故事、那个想说却没说出口的夜晚、那段被时间慢慢发酵的情绪,唱出来,它值得被听见。
欢迎体验,也欢迎提建议。
**同样的架构,换一套Prompt,你也可以做出属于自己的工具。**每天日记生成一首歌,一年365首个人编年史。把和某个人的聊天记录写成一首歌。
写在最后
做这个项目让我重新理解了一件事。AI写代码,不是「你给我标题我给你项目」。你花在Spec上的每一分钟,出来的代码就高一分。

那些在我没说的地方------每首歌一张专属封面、不把自己设为默认、补上无障碍特性、给你两版让你自己挑------不是「完成要求」。是「理解意图后的主动填充」。这可能就是1M上下文真正带来的东西。不是更多的token。是更多的理解空间。是那种愿意给你的歌做一个封面的判断力。