mcpField
B
brand-voice

brand-voice

本地服务
github.com/zoharbabin商业与营销017 周前更新

关于 brand-voice

brand-voice 根据可配置的品牌指南检查 Claude Code 中的 Markdown 正文。它结合自动写入钩子、按需 MCP 分析和用于 CI 检查的 CLI。

主要功能

  1. 01自动检查 Markdown 编辑
  2. 02可配置词汇与语气规则
  3. 03可读性和句长检查
  4. 04应用词语级建议
  5. 05CI 检查、基线与 PR 注释

适用场景

  1. 01在 Claude Code 编辑时执行写作规范
  2. 02在 CI 流水线检查 Markdown 文件
  3. 03审查拉取请求中的变更文件
  4. 04替换受限词语的安全替代词

MCP 相关

MCP 服务提供 `analyze_readability`,用于检查文件或内联文本;还提供 `apply_suggestions`,用于安全地进行词语级替换。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"zoharbabin-brand-voice": {
"command": "npx",
"args": [
"-y",
"brand-voice"
]
}
}
}
启动命令npx -y brand-voice

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmbrand-voice0.1.8

工具

2

收录的工具列表 · 更新于 2 周前

参数类型必填说明
cwdstring否用于定位 brand-guidelines.md 的工作目录绝对路径。默认为服务进程的工作目录。
filestring否要分析的 .md 或 .mdx 文件的绝对路径或相对于 cwd 的路径。请提供 "file" 或 "text",不能同时提供两者。
textstring否要分析的内联 Markdown 文本。请提供 "text" 或 "file",不能同时提供两者。

详细介绍

brand-voice

为 Claude Code 自动执行品牌文案规范——可配置、零摩擦。

npm version npm downloads CI License: MIT Node.js 18+

每当 Claude 编写或编辑 Markdown 文件时,brand-voice 都会根据你的品牌指南进行检查,并在文件保存之前提示 Claude 修正违规内容。无需人工审核,也无需在每条提示词中重复提醒规则。

brand-voice 演示

Claude 会读取违规列表、修正文件,然后自动重试写入。


为什么选择 brand-voice?

你的品牌指南可能放在某个文档里。除非你把它们粘贴到每条提示词中,否则 Claude 不会读取。即使这样,规则也会随着时间逐渐偏离。

brand-voice 将规则融入工作流程:

  • 适用于任何公司——可配置自己的词汇、语气和视觉形象
  • 自动修正,而不只是报告——PostToolUse 钩子会阻止不合规的写入并触发重试
  • 覆盖整个技术栈——用于 Claude Code 的钩子、用于按需检查的 MCP 服务,以及用于 CI 流水线的 CLI
  • 智能处理代码——忽略围栏代码块、缩进代码、行内代码片段和表格单元格
  • 提供例外方式——使用 .brand-voice-ignore 忽略整个文件,使用 `` 忽略单独的行
  • 包含视觉形象规范——颜色、字体和徽标 URL 都保存在同一份指南文件中

安装

npm install -g brand-voice

也可以直接运行,无需安装:

npx brand-voice@latest check

需要 Node.js 18+。


快速入门

选项 A — 在 Claude Code 中引导设置(推荐)

在任意 Claude Code 会话中运行设置技能:

/brand-voice-setup

该技能会完成所有工作:

  1. 询问你是否已有品牌文档,或是否愿意回答四个问题
  2. 可选择通过网络自动调研你的品牌
  3. 在项目中创建 brand-guidelines.md
  4. 将摘要块注入 CLAUDE.md
  5. 在 .claude/settings.json 中注册 PostToolUse 钩子
  6. 在 .mcp.json 中注册 MCP 服务

设置完成后,Claude 接触到的每个 .md 和 .mdx 文件都会自动接受检查。

选项 B — 手动设置
# 1. Install
npm install -g brand-voice

# 2. Create brand-guidelines.md in your project root (see schema below)

# 3. Register the hook
brand-voice setup

工作原理

三个组件协同工作:

组件功能
PostToolUse 钩子(brand-voice-check)每次对 .md/.mdx 执行 Write/Edit/MultiEdit 后运行;发现违规时以代码 2 退出,让 Claude 自动修正;内容合规时以代码 0 退出
MCP 服务(brand-voice-mcp)提供 analyze_readability 和 apply_suggestions,用于按需分析和词语级修正
CLI(brand-voice)独立检查工具,可用于 CI 流水线、基线渐进检查以及 GitHub PR 注释
检查内容
规则严重级别说明
禁用词error匹配完整单词,不区分大小写——阻止写入
建议避免的词语warning使用相同的匹配方式——提示更推荐的替代词
句子长度warning可配置每句的最大词数(默认值:25)
被动语态warning检测助动词 + 过去分词模式
可读性年级warning根据目标值,逐句计算 Flesch-Kincaid 年级

绝不会检查代码块、行内代码、缩进代码块和表格行——只检查正文内容。

**绝不会检查:**物理行长度或换行。注入 CLAUDE.md 的内容始终包含一条格式规则,要求 Claude 编写连续段落,并由渲染器自动换行;但分析器本身没有行宽规则,以后也不会添加——句子长度按词数而非字符数或行数计算,因此无论正文是否硬换行,评分都相同。

PostToolUse hook 退出代码
代码含义
0未发现违规 — 文件通过
2发现违规 — Claude 读取输出、进行修正并重试

永不使用退出代码 1(它会中止会话,而不是触发重试)。


brand-guidelines.md

一个 Markdown 文件即可存放全部品牌配置。请控制在 600 词以内,以便完整放入上下文。

# Brand Guidelines

## Persona
Who you are and who you write for.

## Tone & Voice
- Direct, honest, clear
- Person: second          ← "first" | "second" | "third"
- Voice: active           ← "active" | "passive"
- Sentences: max 25 words
- Contractions: yes       ← "yes" | "no"
- Exclamation marks: no

## Vocabulary
**Always use:** Acme, Acme Platform, APIs
**Avoid:** leverage, utilize, synergy, seamless
**Forbidden:** [competitor names, unverified claims]

## On-Tone Examples
> Connect your data in minutes — Acme handles the routing.

## Off-Tone Examples
> Leverage our cutting-edge platform to seamlessly integrate.

## Visual Identity
- Primary color: #006EFA
- Secondary color: #0050C3
- Accent color: #FF9DFF
- Background color: #FFFFFF
- Text color: #282828
- Logo (light): https://cdn.example.com/logo-light.svg
- Logo (dark):  https://cdn.example.com/logo-dark.svg
- Heading font: Inter
- Body font: Source Sans Pro

## Formatting Rules
- Heading style: sentence case
- Oxford comma: yes
- Readability target: 8th grade

## Quick Reference
Repeat your top 5 rules here. This section appears last —
where LLM attention is highest — to reinforce critical rules
against context-window attention drop-off.

完整可用示例请参见 example/brand-guidelines.md。

章节别名

## On-Brand Examples 和 ## Off-Brand Examples 可作为 ## On-Tone Examples / ## Off-Tone Examples 的别名。其他所有章节名称均不区分大小写,但必须完全匹配。

搜索路径

hook 和 CLI 会按以下顺序搜索 brand-guidelines.md:

  1. 当前工作目录
  2. ~/.claude/brand-guidelines.md(用户范围 — 在所有项目中强制执行规则)
  3. 父目录,逐级向上查找,直到 Git 根目录

抑制违规提示

跳过文件或目录 — .brand-voice-ignore

在项目根目录中创建 .brand-voice-ignore 文件。支持 gitignore 风格的模式:

# Auto-generated content
dist/
CHANGELOG.md

# Agent prompt files — intentional brand vocabulary exceptions
data/prompts/**

# Vendor docs
vendor/
跳过单行 — 内联注释

在某一行的任意位置添加此注释,即可抑制该行中的所有违规提示。适用于违规属于有意为之的一次性例外情况。


MCP 服务

analyze_readability

检查文件或内联文本中的违规提示和可读性评分。

输入:

字段类型必填描述
filestringfile/text 二选一.md/.mdx 文件的绝对或相对路径
textstringfile/text 二选一要分析的内联 Markdown
cwdstring否用于查找 brand-guidelines.md 的工作目录

返回: { filePath, passed, violations[], readabilityScores, visualIdentity }

apply_suggestions

对禁止或应避免的术语应用安全的词语级替换。不会修正句子长度、被动语态或年级水平 — 这些需要人工判断。

输入:

字段类型必填描述
filestring是要修正的文件路径
dryRunboolean否预览差异但不写入(默认值:false)

返回: 差异 + 更改列表(试运行)或确认信息 + 更改列表(实际运行)

提示: 先运行 dryRun: true 预览,然后再应用更改。


CI 集成

brand-voice 可独立于 Claude Code 运行 — 可将其添加到任何流水线中。

检查所有 .md 文件:

npx brand-voice@latest check

仅检查当前分支中已更改的文件:

npx brand-voice@latest check --changed-only

GitHub Actions 内联注释(PR 差异评论):

npx brand-voice@latest check --reporter github-pr-review

递增检查 — 无需从零开始,也能阻止质量回退:

# Run once, commit the file
npx brand-voice@latest baseline --save

# In CI: fail only if violations increase above baseline
npx brand-voice@latest check --baseline .brand-voice-baseline.json

GitHub Actions 工作流示例:

name: Brand Voice
on:
  pull_request:
    paths: ['**.md', '**.mdx']

jobs:
  prose:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 0 }
      - run: npx brand-voice@latest check --changed-only --reporter github-pr-review

退出代码 0 = 无问题或未超出基线。退出代码 1 = 发现错误或超出基线。


CLI 参考

brand-voice <command> [options]

Commands:
  check [file]          Check a file or all .md files in cwd
  setup                 Print instructions to run /brand-voice-setup in Claude Code
  import <file>         Normalize a brand-guidelines.md into cwd
  baseline --save       Save current violation count as ratchet baseline
  vale-sync             Check that the Vale binary is available

Check options:
  --changed-only        Only check files changed in git (requires git)
  --baseline <file>     Compare against a baseline JSON file (ratchet check)
  --reporter github-pr-review  Emit GitHub Actions annotation format

编程式 API

import { parseGuidelines, analyzeText, loadGuidelines } from 'brand-voice';

const guidelines = loadGuidelines(process.cwd());
if (guidelines) {
  const result = analyzeText(markdownString, 'doc.md', guidelines);
  console.log(result.violations);        // Violation[]
  console.log(result.readabilityScores); // ReadabilityScores
  console.log(result.passed);            // false if any error-severity violations
}

完整类型定义请参见 src/types.ts。


分发方式

场景操作
个人开发者每个项目运行一次 /brand-voice-setup;提交 brand-guidelines.md
团队提交 brand-guidelines.md、.claude/settings.json 和 .mcp.json;队友执行 git pull 后即可启用规则检查
全局(所有项目)使用全局标志运行 /brand-voice-setup;将配置写入 ~/.claude/brand-guidelines.md
claude.ai(浏览器)设置技能会生成一段可粘贴的内容,用于 Claude Project 指令 — 无需 hook 或 MCP
企业 / CI在流水线中使用 brand-voice check;提交 .brand-voice-baseline.json 以启用递增检查

要求

  • Node.js 18+
  • brand-guidelines.md — 由 /brand-voice-setup 创建或手动编写
  • Vale — 可选;仅 vale-sync 需要

贡献

欢迎提交错误报告、功能请求和拉取请求。请参阅 CONTRIBUTING.md,了解设置说明、需要保留的关键不变量和代码风格指南。


许可证

MIT — 请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。