mcpField
B
blog-persona

blog-persona

github.com/infrasity-labs营销与增长15194 次安装18 周前更新
代码仓库

关于 blog-persona

blog-persona 是面向博客作者和团队的写作风格管理技能,可创建并保存品牌风格档案,再将规则提供给 blog-write 和 blog-rewrite 使用。

主要功能

  1. 01通过六步访谈创建风格档案
  2. 02配置四项语气维度
  3. 03设置词汇级别与可读性
  4. 04记录写作规范与语气范例
  5. 05列出、查看并启用档案

适用场景

  1. 01为博客内容定义统一品牌语气
  2. 02为风格档案设置语气和可读性规则
  3. 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-860-80健康、生活方式、个人理财
专业人士8-1050-60B2B、营销、管理
技术领域10-1230-50工程、医疗、法律

用户选择一个层级后,自动填入可读性字段。如果用户想要非标准组合(例如,为说明性内容采用面向消费者的可读性,同时使用技术词汇),允许其自行修改。

与 blog-write 和 blog-rewrite 集成

启用某个角色设定后(通过 /blog persona use <name>),writer Agent 会加载角色设定 JSON,并在生成内容时遵循这些约束:

  1. 生成前 - 加载角色设定,将语气维度和风格规则注入 blog-writer Agent 的系统提示词。
  2. 生成期间 - Writer 遵循 do/dont 规则,控制句长均值/标准差,并按指定频率使用缩略形式。
  3. 生成后验证 - 检查输出是否符合角色设定的约束:
    • 句长分布在目标均值的 1 个标准差范围内
    • 可读性得分在指定的年级范围内
    • 被动语态比例低于上限
    • 通过模式匹配检查是否违反“dont”规则

如果验证失败,标明具体违规项并建议修改。

List 命令

对 skills/blog/references/personas/*.json 使用 Glob,并显示如下表格:

角色设定行业受众词汇
acme-saasSaaS营销经理专业人士

如果不存在角色设定,请提示用户创建一个。

Show 命令

读取指定的角色设定 JSON,并以格式化摘要的形式显示全部语气维度、风格规则和 do/dont 列表。

Use 命令

读取角色设定 JSON 并确认已启用。打印将要执行的关键约束摘要。该角色设定在当前对话会话中保持启用状态。 Blog-write 和 blog-rewrite 会在生成内容前检查是否存在已启用的角色设定。

错误处理

  • 无效的语气值:如果用户提供的值超出 0.0-1.0,将其限制为最近的有效边界并发出警告
  • 无法访问的语气样本:如果 voice_samples 中的 URL 返回错误,则跳过该样本,并在角色设定中注明该样本不可用
  • 空的角色设定目录:运行 list 或 show 时,如果没有保存任何角色设定,提示用户先创建一个
  • 名称冲突:创建时,如果角色设定名称已存在,询问用户是要覆盖还是选择其他名称
  • 格式错误的 JSON:如果角色设定文件已损坏,报告错误,并提供从访谈内容重新创建的选项

评论

支持 Markdown