ECC 品牌发现体系中的 Module 50:用语音光谱与语调矩阵编码品牌声音(Voice & Tone)
本篇讲解 ECC 仓库中 brand-discovery 技能的第 5 模块——Voice & Tone(声音与语调)的方法论设计:如何用"品牌语音光谱"与"内容类型语调矩阵"两个框架,通过结构化多会话访谈把品牌语言风格沉淀为可执行、可检验的规格文档。读完后,你可以理解该模块的完整工作流(Raw 采集 + Synthesis 合成)、它在 8 模块品牌发现管线中的位置与状态持久化机制,以及它与 ECC 内置 brand-voice 技能的分工关系。
Module 50 在品牌发现管线中的位置
ECC 的 brand-discovery 技能(定义见 skills/brand-discovery/SKILL.md,另有一份位于 .agents/skills/brand-discovery/SKILL.md 的镜像副本,两份内容一致)是一个结构化的品牌身份访谈系统,目标是产出一份可交给设计师、文案和外部协作者使用的总品牌手册 90_SYNTHESIS.md。它按固定的模块顺序推进,完整序列如下(摘自 skills/brand-discovery/SKILL.md 的 Module sequence 表):
| 文件 | 标签 | 使用框架 |
|---|---|---|
10_purpose-why.md |
Purpose / Why | Sinek 黄金圈、Lencioni |
20_positioning.md |
Positioning | Dunford《Obviously Awesome》、Moore 模板 |
30_audience-niche.md |
Audience & Niche | Baker《Business of Expertise》、ICP |
40_personality-archetype.md |
Personality & Archetype | Mark & Pearson 12 原型、J. Aaker 5 维 |
50_voice-tone.md |
Voice & Tone | Brand voice guidelines |
60_narrative-story.md |
Narrative / Story | Neumeier trueline、品牌故事弧线 |
70_founder-tension.md |
Founder Brands vs Studio Brand | Enns《Win Without Pitching》 |
90_SYNTHESIS.md |
Master Brandbook | Kapferer 棱镜、Aaker 品牌系统 |
Module 50 的上游是 Module 40(人格与原型,模板见 skills/brand-discovery/references/40_personality-archetype.md),下游汇入 Module 90 总品牌手册(见 skills/brand-discovery/references/90_SYNTHESIS.md)。Module 50 模板文件本身采用"Raw + Synthesis"双段结构,与技能规范中"每个模块结束时必须写出 ## Raw 和 ## Synthesis 两个章节"的状态写盘协议一一对应。
核心设计原则:Voice 恒定,Tone 随场景漂移
Module 50 的目标在模板开头的 Goal 中定义得非常明确:把品牌的语言风格(verbal register)编码得足够精确,使得两位不同的写作者产出听起来像同一个人在写的文案。原文同时给出了贯穿整个模块的关键区分:
Voice is constant; tone shifts by context (home page vs. error message vs. proposal cover).
也就是说,"品牌声音"(Voice)是跨场景恒定的底色,而"语调"(Tone)在首页标题、错误提示、提案封面等不同内容类型中应当发生可控偏移。这个"常数 + 变量"的拆分,正是下面两个框架要解决的问题:
- 品牌语音光谱(Brand voice spectrum)——回答"常数"是什么:品牌在 formal↔casual、serious↔playful、distant↔warm、conventional↔irreverent 等维度上处于什么位置;
- 内容类型语调矩阵(Content-type tone matrix)——回答"变量"怎么变:同一套 Voice 在不同内容类型下如何调整。
框架一:品牌语音光谱(Voice Spectrum)
Synthesis 部分的第一张表要求把品牌标记在每条轴的 1–5 档位上(模板见 .agents/skills/brand-discovery/references/50_voice-tone.md)。模板定义了 5 条轴:
| Axis | 1 | 2 | 3 | 4 | 5 | Notes |
|---|---|---|---|---|---|---|
| Formal ←→ Casual | ||||||
| Serious ←→ Playful | ||||||
| Distant ←→ Warm | ||||||
| Conventional ←→ Irreverent | ||||||
| Minimal ←→ Expressive |
使用要点:
- 每条轴取 1–5 的离散档位而非自由描述,迫使访谈者对品牌做出明确定位(例如"Serious ←→ Playful 上我们站 4"),Notes 列用于记录依据与边界条件;
- 前 4 条轴是模块头部 Frameworks 声明中明确列出的,第 5 条 Minimal ←→ Expressive 在表格中补充出现,覆盖信息密度/表达量维度;
- 这张表不是孤立的。它与上游 Module 40 的 J. Aaker 五维人格评分(sincerity / excitement / competence / sophistication / ruggedness,同样 1–5 计分,见 skills/brand-discovery/references/40_personality-archetype.md)互为验证:人格维度描述"品牌像什么人",语音光谱描述"这个品牌说话时听起来怎么样"。Module 40 模板末尾专门设有 "Open questions / tensions with Module 50 Voice" 小节,与 Module 50 末尾的 "Open questions / tensions with Module 40 Personality" 形成双向张力检查——两侧人格设定与语言风格若互相矛盾(比如原型偏 playful 但光谱却标在 Formal 侧),必须在模块内记录并留待 Module 90 的"Tensions resolved"表统一裁决(见 skills/brand-discovery/references/90_SYNTHESIS.md)。
框架二:内容类型语调矩阵(Tone Matrix)
语音光谱定好"常数"后,语调矩阵规定"变量"。模板内置了 5 行标准内容类型(见 .agents/skills/brand-discovery/references/50_voice-tone.md):
| Content type | Tone shift | Example phrase |
|---|---|---|
| Homepage headline | ||
| Case study / evidence | ||
| Proposal / commercial | ||
| Error / apology | ||
| Social / informal |
三列分工清晰:
- Content type:预设的 5 类典型内容(首页标题、案例/证据、提案/商务、错误/致歉、社交/非正式),覆盖从最高调性(首页)到最低调性(社交)的完整光谱;
- Tone shift:相对基线 Voice 的偏移方向,例如错误/致歉页通常要向 Warm 侧偏移,而 case study 向 Formal/Minimal 侧偏移;
- Example phrase:必须落到一句可复述的具体示例短语,而不是"更正式一点"之类的空话——这一列强制把矩阵从形容词翻译成可直接用于审校的参照物。
矩阵设计隐含了一个可检验性思路:写完 Tone shift 与 Example phrase 后,新写作者拿到任何一份草稿,都能先判断它属于哪类内容,再对照该行检查偏移是否符合规范。
Raw 阶段:六类访谈素材的采集协议
模板的 Raw 区是访谈阶段的采集框架,用 HTML 注释说明其用途:"Verbatim quotes and examples from the interview. Collect actual copy samples the founder likes or hates."(逐字引用访谈中的原话与例子,收集创始人喜欢或讨厌的真实文案样本)。它定义了 6 个固定的采集类目,全部继承自 Module 50 模板:
- Copy the founder admires (from their own brand or others) — include the source:创始人欣赏的文案(来自自家品牌或他人),必须附出处;
- Copy the founder dislikes or finds "wrong register" — what specifically is wrong?:创始人反感或觉得"语域不对"的文案,以及具体哪里不对;
- Words or phrases the brand uses all the time (even informally):品牌高频使用的词或短语(哪怕是随口说的);
- Words or phrases the brand actively avoids:品牌主动回避的词或短语;
- How should the brand sound on: a sales page? an error message? a proposal?:品牌在销售页 / 错误提示 / 提案上应当听起来如何——这正是语调矩阵的访谈来源;
- "We always…" / "We never…" statements about how the brand communicates:品牌关于自身沟通方式的"我们总是……/我们绝不……"声明。
这 6 个类目是有结构的:前两类收集"正面/负面语料样本",中间两类收集"词汇级黑白名单"(高频词与回避词),后两类分别收集"场景级语调要求"和"原则级行为约束"。从样本到原则,采集粒度逐层抬升。
这些类目如何被执行,由 skills/brand-discovery/SKILL.md 中的 Interview discipline 统一约束,核心规则包括:
- 一次只问一个问题,绝不把问题列表一次抛出("lists produce checklist answers, not real insight");
- 每个回答后:先简短复述(paraphrase),再决定深挖一个探针还是收线;
- Laddering(阶梯追问):对每个"what"类回答追问 "Why does that matter to you?",直到核心价值观浮现,通常 2–4 轮;
- 5 Whys:对信念类、定位类主张一路追问到根本原因;
- 薄回答检测:如果回答空泛、堆术语或含糊,要求给出一个具体例子、一个客户故事或一个数字——对文案类问题,这正对应 Raw 区"include the source"的硬性要求;
- 投射技术(Projective techniques):每个模块至少使用一次以突破平台期,如"如果品牌是一个人,他会怎样走进房间?"、品牌讣告式提问、竞品对比式提问;
- 饱和信号:连续两次探针没有新信息时,总结并收线。过早进入 Synthesis 被明确列为 Anti-Pattern("Moving to Synthesis before saturation")。
Synthesis 阶段:四个合成产物
Raw 素材饱和后,模块文件需要完成 Synthesis 区的四个部分,它们共同构成品牌声音的可执行规格:
- Voice statement(语音声明)——"one paragraph a writer can internalise",即一段写作者能够内化的一小段话。它的验收标准不是文采,而是可操作性:一位没有参与访谈的写作者读完这一段,应当能判断某句文案是否 off-voice。
- Tone matrix by content type——前述 5 行语调矩阵填完,作为场景化检查表。
- The three things to check every draft against——"每份草稿都要对照检查的三件事"。模板只留了 1/2/3 三个空位,强制压缩成恰好三条:数量上限迫使合成时做优先级取舍,保证审校动作真正会被执行,而不是写成长清单后无人使用。
- Open questions / tensions with Module 40 Personality——与上游人格模块的未决张力清单,供 Module 90 汇总裁决。
这四个产物最终会被 Module 90 原样吸收。skills/brand-discovery/references/90_SYNTHESIS.md 的第 5 节"Voice & Tone summary (from Module 50)"只保留其中两项:
Voice statement (one paragraph):
The three checks every draft must pass: 1. 2. 3.
也就是说,进入总品牌手册的是"语音声明 + 三条草稿检查项"这一最小可执行子集;完整的光谱表与语调矩阵留在 Module 50 文件中作为推导依据。这是一个值得注意的取舍:品牌手册面向执行(brief designers, writers, and external collaborators),所以只沉淀结论,不沉淀过程数据。
工程支撑:状态持久化与多创始人模式
Module 50 的方法论要真正可运行,依赖 brand-discovery 技能在 skills/brand-discovery/SKILL.md 中定义的两套工程机制。
跨会话断点续传。 访谈被设计为跨多天甚至多周进行。每次会话启动必须先执行 Session start protocol:查找已有的模块文件与 state.json 检查点 → 若当前模块有在途文件则读取并扫描其 Raw 区 → 用两三句话向用户报告当前模块、状态与剩余工作,再询问"Continue here, or switch module?"。模块达到饱和或 done 状态后写盘两个文件:模块文件(完整 Raw + Synthesis,写入 modules/{moduleFile})和一个轻量检查点 state.json:
{
"session": "{brand_name}-brand-{YYYY-MM}",
"outputPath": "{path_to_brand_identity_directory}",
"completedModules": [],
"inProgressModule": "10_purpose-why.md",
"nextModule": "20_positioning.md",
"participants": ["founder-A"],
"lastUpdated": "{ISO-8601}"
}
对 Module 50 而言,这意味着它的 Raw 区(六类语料)和 Synthesis 区(光谱表、语调矩阵)都是磁盘持久化的:下一位写作者或下一次会话可以直接续接,而不是把创始人重新问一遍。
多创始人模式(Multi-founder mode)。 当多位创始人分别参与访谈时,各自的答案写入 founders/{participant}.md 而非主模块文件,并完成所有创始人访谈后执行 reconciliation(对账):在模块文件中总结一致点与分歧点,把"productive tensions"(有生产力的张力)标记出来交给团队对齐工作坊。写入前还有严格的路径安全校验——participant 只接受字母数字与连字符,拒绝含 /、\、.. 的名称;moduleFile 必须落在 10–90 的枚举序列内;outputPath 必须是项目目录内的绝对路径。这些规则保证 Module 50 这类模板文件在多人流程中不会被注入式路径或越界写入破坏。
该技能还可通过 skills/brand-discovery/agents/openai.yaml 声明的 agent 接口直接唤起(default_prompt: "Use $brand-discovery to run a structured brand identity interview.",allow_implicit_invocation: true)。
与 brand-voice 技能的分工:访谈派生 vs 语料派生
ECC 仓库内还有一个容易被混淆的技能 skills/brand-voice/SKILL.md,brand-discovery 的 Related Skills 一节明确将二者关联:"if the brand-discovery voice-and-tone module needs a separate, source-derived writing-style profile" 时使用 brand-voice。二者的分工是:
- Module 50(brand-discovery):从人的口述出发。通过访谈把创始人脑中隐含的语音/语调显性化为光谱评分、语调矩阵与三条检查项,适合品牌创建、重定位等"身份尚未成文"的场景;
- brand-voice:从已存在的文本语料出发。按"近期 X 帖文 → 文章/备忘录/发布说明 → 有效的外发邮件 → 产品文档与站点文案"的优先级收集 5–20 篇真实样本,提取节奏、压缩度、大小写规范、括注用法、提问频率、断言锐度等特征,产出一个结构化、可直接塞进会话上下文复用的
VOICE PROFILE块(结构见 skills/brand-voice/references/voice-profile-schema.md),供content-engine、crosspost、lead-intelligence等下游内容类技能消费。
从源码结构看,VOICE PROFILE schema 的字段(Rhythm / Compression / Capitalization / Parentheticals / Question Use / Claim Style / Preferred Moves / Banned Moves / CTA Rules / Channel Notes)与 Module 50 Raw 区的采集类目高度呼应——前者是对既有文本的逆向特征提取,后者是对创始人的正向特征追问,最终都收敛到"风格特征 + 禁用模式"这一共同形态。brand-voice 还自带一组 "Hard Bans"(如 fake curiosity hooks、"Excited to share"、bait questions 等),其性质与 Module 50 中"Words or phrases the brand actively avoids"及语调矩阵中的反例列同源:都是把"品牌绝不怎么写"落成可机械执行的删除重写规则。
使用方式与适用前提
- 查看:Module 50 模板完整位于 .agents/skills/brand-discovery/references/50_voice-tone.md(skills/brand-discovery/references/50_voice-tone.md 为同内容副本);技能行为规范位于 skills/brand-discovery/SKILL.md。
- 运行:
brand-discovery是一个流程型技能,按 SKILL.md 的 When to Activate 条件(品牌创建/重定位、预计多会话、多创始人需分别访谈、需要可重复方法等)激活后,由执行 agent 逐模块推进;本文介绍其机制,实际使用时需按技能自身的会话协议执行,且不应在单会话内仓促跳到90_SYNTHESIS.md("Treating this as a one-shot session" 被列为 Anti-Pattern)。 - 适用前提:本模块假设品牌已经过 Module 10–40 的访谈,有人格与定位基础;若完全没有既有身份,Module 50 的光谱评分会缺少锚点。反之,若品牌已有大量成文内容但缺乏结构化规格,
brand-voice的语料派生路线可能比完整 8 模块访谈更直接。 - 局限:模板本身是空白框架,光谱档位、语调矩阵内容、三条检查项都依赖具体品牌的访谈结果填充;文中所有表格均应按实际访谈数据填写,而非照抄示例。
小结
Module 50 的价值在于把"品牌听起来是什么样"这件主观事务拆成三件可交付的事:用 5 轴光谱定住恒定的 Voice 基线,用 5 行语调矩阵规定场景化 Tone 偏移,用恰好三条的草稿检查项兜住执行。配合 brand-discovery 技能的一次一问访谈纪律、state.json 断点续传与多创始人对账机制,这套模板能把跨会话、跨写作者的品牌语言风格稳定收敛到"听起来像同一个人在写";而需要时,brand-voice 技能可以基于真实语料给出互补的、可机器复用的 VOICE PROFILE。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00