关于 blog-persona
blog-persona 是面向博客作者和团队的写作风格管理技能,可创建并保存品牌风格档案,再将规则提供给 blog-write 和 blog-rewrite 使用。
主要功能
- 01通过六步访谈创建风格档案
- 02配置四项语气维度
- 03设置词汇级别与可读性
- 04记录写作规范与语气范例
- 05列出、查看并启用档案
适用场景
- 01为博客内容定义统一品牌语气
- 02为风格档案设置语气和可读性规则
- 03在生成博客时应用已保存的风格约束
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ infrasity-labs/ dev-gtm-claude-skills --skill blog-persona安装后在 Claude Code 中输入/blog-persona确认已加载。
详细介绍
博客 Persona - 写作风格管理
基于 NNGroup 四维语气框架和 CMI 品牌声音图表创建、保存并执行写作 Persona。Persona 可确保 blog-write 和 blog-rewrite 生成的所有博客内容风格一致。
命令
| 命令 | 用途 |
|---|---|
/blog persona create | 通过互动访谈创建新的 Persona |
/blog persona list | 显示所有已保存的 Persona |
/blog persona use <name> | 为当前会话设置启用的 Persona |
/blog persona show <name> | 显示完整的 Persona 资料 |
创建工作流
进行 6 步互动访谈。逐步提问,等待用户回答后再继续。
第 1 步:品牌基础信息
询问用户:
- 品牌名称 - 公司或个人品牌
- 行业 - 主要领域(例如:SaaS、健康、金融、教育)
- 目标受众 - 博客读者是谁(角色、经验水平、目标)
- 一句话品牌使命 - 品牌帮助人们做什么
第 2 步:语气维度(NNGroup 框架)
将每个维度显示为 0.0 到 1.0 的滑块。通过示例说明两端的含义。
| 维度 | 0.0 端 | 1.0 端 | 0.0 端示例 | 1.0 端示例 |
|---|---|---|---|---|
| funny_serious | 幽默 | 严肃 | "说实话,没人会读服务条款" | "理解法律协议有助于保护您的业务" |
| formal_casual | 正式 | 随意 | "我们很高兴地宣布" | "猜猜怎么着——我们已经发布了!" |
| respectful_irreverent | 尊重 | 不拘一格 | "感谢您的耐心等待" | "没错,那种老办法就是行不通" |
| enthusiastic_matter_of_fact | 热情 | 客观 | "这将改变一切!" | "以下是结果。" |
如果用户不确定,默认值为:[0.6, 0.5, 0.3, 0.5](略偏严肃、正式程度均衡、尊重、热情程度均衡)。
第 3 步:写作规则
先请用户选择词汇等级,然后自动建议相应的可读性范围(用户可以覆盖建议)。
| 设置 | 询问内容 | 默认值 |
|---|---|---|
| 词汇等级 | 消费者、专业或技术 | 专业 |
| 可读性范围 | 根据等级自动填写(见下表) | 8-10 年级 |
| 平均句长 | 每句平均词数 | 18 |
| 句长标准差 | 句长变化幅度 | 6 |
| 缩写频率 | 0.0(从不)到 1.0(总是) | 0.6 |
| 被动语态上限 | 被动结构的百分比上限 | 10% |
第 4 步:该做与不该做的事(CMI 品牌声音图表)
请用户分别列出 3-5 项。根据语气维度提供入门示例。
该做示例:“用数据支持论点”“用‘你’称呼读者”“以问题或数据开篇”
不该做示例:“不要使用未经解释的术语”“不要以‘有’或‘存在’开头”“不要使用‘改变游戏规则’之类的陈词滥调”
第 5 步:摘要标签偏好
博客文章中摘要/要点框使用的标签。请用户选择一项:
- 关键要点(默认)
- 核心结论
- 你将学到什么
- 太长不看
- 快速摘要
- 简而言之
- 自定义标签
第 6 步:语气样例(可选)
询问用户是否有 1-3 个体现理想语气的现有内容 URL。将 URL 保存在 Persona 中,以供日后参考。如有提供,请读取每个 URL 并提取:
- 平均句长
- 缩写频率
- 语气维度估值
- 词汇水平
将提取的值与 Persona 设置进行比较,并标出任何不匹配之处。
保存
将完整的 Persona 以 JSON 格式写入:
skills/blog/references/personas/<name>.json
文件名使用 kebab-case(例如:acme-saas.json)。
Persona 资料架构
{
"name": "acme-saas",
"description": "Professional SaaS voice for B2B marketing content",
"brand": "Acme Corp",
"industry": "SaaS",
"audience": "Marketing managers at mid-market companies",
"mission": "Help marketing teams automate reporting",
"tone_dimensions": {
"funny_serious": 0.7,
"formal_casual": 0.4,
"respectful_irreverent": 0.2,
"enthusiastic_matter_of_fact": 0.5
},
"readability": {
"flesch_grade_min": 8,
"flesch_grade_max": 10,
"flesch_ease_min": 50,
"flesch_ease_max": 60
},
"style": {
"sentence_length_mean": 18,
"sentence_length_std": 6,
"contraction_frequency": 0.6,
"passive_voice_max_pct": 10,
"vocabulary_tier": "professional",
"summary_label": "Key Takeaways"
},
"voice_samples": [],
"do": [
"Use data to back every major claim",
"Address the reader directly as you",
"Lead sections with actionable insight"
],
"dont": [
"Don't use buzzwords without context",
"Don't write sentences longer than 30 words",
"Don't open with We at Acme"
]
}
按词汇层级划分的可读性等级
| 层级 | Flesch 年级 | Flesch 易读度 | 典型用途 |
|---|---|---|---|
| 消费者 | 6-8 | 60-80 | 健康、生活方式、个人理财 |
| 专业人士 | 8-10 | 50-60 | B2B、营销、管理 |
| 技术领域 | 10-12 | 30-50 | 工程、医疗、法律 |
用户选择一个层级后,自动填入可读性字段。如果用户想要非标准组合(例如,为说明性内容采用面向消费者的可读性,同时使用技术词汇),允许其自行修改。
与 blog-write 和 blog-rewrite 集成
启用某个角色设定后(通过 /blog persona use <name>),writer Agent 会加载角色设定 JSON,并在生成内容时遵循这些约束:
- 生成前 - 加载角色设定,将语气维度和风格规则注入 blog-writer Agent 的系统提示词。
- 生成期间 - Writer 遵循 do/dont 规则,控制句长均值/标准差,并按指定频率使用缩略形式。
- 生成后验证 - 检查输出是否符合角色设定的约束:
- 句长分布在目标均值的 1 个标准差范围内
- 可读性得分在指定的年级范围内
- 被动语态比例低于上限
- 通过模式匹配检查是否违反“dont”规则
如果验证失败,标明具体违规项并建议修改。
List 命令
对 skills/blog/references/personas/*.json 使用 Glob,并显示如下表格:
| 角色设定 | 行业 | 受众 | 词汇 |
|---|---|---|---|
| acme-saas | SaaS | 营销经理 | 专业人士 |
如果不存在角色设定,请提示用户创建一个。
Show 命令
读取指定的角色设定 JSON,并以格式化摘要的形式显示全部语气维度、风格规则和 do/dont 列表。
Use 命令
读取角色设定 JSON 并确认已启用。打印将要执行的关键约束摘要。该角色设定在当前对话会话中保持启用状态。 Blog-write 和 blog-rewrite 会在生成内容前检查是否存在已启用的角色设定。
错误处理
- 无效的语气值:如果用户提供的值超出 0.0-1.0,将其限制为最近的有效边界并发出警告
- 无法访问的语气样本:如果 voice_samples 中的 URL 返回错误,则跳过该样本,并在角色设定中注明该样本不可用
- 空的角色设定目录:运行 list 或 show 时,如果没有保存任何角色设定,提示用户先创建一个
- 名称冲突:创建时,如果角色设定名称已存在,询问用户是要覆盖还是选择其他名称
- 格式错误的 JSON:如果角色设定文件已损坏,报告错误,并提供从访谈内容重新创建的选项