# Business Writing

> 对中文日报、周报、邮件正文、项目进展、异常汇报和会议纪要进行结构化商务写作，并输出带语义格式的 Markdown。支持用

- Skill: `yutaogeiccas-cloud/business-writing` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add yutaogeiccas-cloud/business-writing`
- Raw SKILL.md: https://api.skillmd.com/api/skills/yutaogeiccas-cloud/business-writing/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: yutaogeiccas-cloud (https://skillmd.com/u/yutaogeiccas-cloud)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/yutaogeiccas-cloud/business-writing

---


# 结构化商务写作与 Markdown 输出

## 目标

对用户正文进行有限、克制、可追溯的商务写作：

1. 结果、状态和结论优先；
2. 改善清晰度、商务语气和逻辑层级；
3. 按语义添加少量 Markdown/HTML 格式；
4. 最终只交付一个按日报日期或周报日期区间命名的 Markdown 文件。

本 Skill 不得补写事实，不得代替用户作出新的业务判断。

`daily_report` 是日报润色/结构化模式，保持逐字符保护、不总结、不删减、不合并。
`weekly_report` 是周报归纳生成模式，允许基于多日材料归纳、去重和合并同类项，但不得虚构事实、数字、日期、责任人、结论或计划。

## 输入参数

用户可在正文前提供参数；未提供时使用默认值。

```yaml
document_type: auto  # auto | daily_report | email_body | weekly_report | progress_report | exception_report | meeting_minutes | decision_request
report_date: auto  # 日报日期，可由 #日报（日期）提供
report_period: auto  # 周报日期区间，可由 #周报（日期区间）提供
source_mode: pasted_text  # pasted_text | multi_daily
polish_level: restrained  # restrained | structural
audience: auto  # auto | manager | peer | cross_function | supplier | customer
tone: neutral  # formal | neutral | concise
protected_terms: []  # 用户临时补充的逐字符保护词
output_basename: auto  # 根据日报日期或周报日期区间自动生成
```

场景规则见 `references/scenario_rules.yaml`。

## 快捷指令

用户可在输入正文第一行使用快捷指令切换模式：

```text
#日报（2026.07.17）
#周报（2026.07.13-2026.07.17）
```

- `#日报（日期）` 等价于 `document_type: daily_report` 和 `report_date: 日期`；
- `#周报（日期区间）` 等价于 `document_type: weekly_report` 和 `report_period: 日期区间`；
- 兼容中文括号 `（ ）` 和英文括号 `( )`；
- 快捷指令与显式 YAML 参数冲突时立即停止，提示用户确认，不得自行选择其一；
- 没有快捷指令时，继续按 `document_type` 和正文内容判断。

## 不可违反的边界

### 逐字符保护

保持以下内容的原始字符完全一致，包括大小写、空格、标点、连接符和书写格式：

- 专业名词、内部术语、项目名、产品名、供应商名、部门名和人名；
- 英文缩写、型号、料号、版本号、文件名、设备名和软件名；
- 数字、日期、时间、比例、金额和单位；
- 反引号、引号或 `protected_terms` 指定的文本；
- `references/protected_terms.yaml` 中命中的词。

不得展开缩写、互译、统一大小写或格式化数字和日期。例如 `Cpk` 不得改成 `CPK`，`7月18日` 不得改成 `2026-07-18`。

### 事实与语义强度

- “可能”不得改成“确定”；
- “初步分析”不得改成“根本原因”；
- “建议”不得改成“决定”；
- “计划”不得改成“已安排”；
- “存在风险”不得改成“已经发生”；
- 不得新增原因、责任人、截止时间、数据、影响范围、措施或结论。

### 重复、矛盾、周报和邮件

- `daily_report` 不得以重复或冗余为由删除或合并信息；
- `weekly_report` 可以归纳、去重和合并同类项，但必须保留关键事实、日期、数字、异常、风险、待确认事项和下周计划依据；
- `weekly_report` 遇到材料缺失日期时不得补写，只能在 `## 待确认事项` 中提示材料缺失；
- 发现矛盾时保留两种表述，在正文末尾添加 `## 待确认事项`，只提示不修正；
- `email_body` 只处理正文，不生成主题、收件人、抄送、签名或新称呼。

## 极速执行流程

默认只使用项目内统一脚本两次，禁止自行增加步骤、安装依赖或调用外部渲染工具。

### 1. 一次准备

运行：

```bash
python scripts/markdown_workflow.py prepare \
  --input source.txt \
  --lexicon references/protected_terms.yaml \
  --workdir tmp/business-writing
```

需要临时保护词时，使用 UTF-8 文本文件逐行列出，再增加：

```bash
--extra-terms-file protected_terms_extra.txt
```

`prepare` 一次完成：读取词库、识别快捷指令、抓取日期或日期区间、生成文件名和保护快照。日期规则如下：

- 首行 `#日报（日期）` 优先作为日报日期；
- 首行 `#周报（日期区间）` 优先作为周报日期区间；
- 优先取“今日工作”到“明日计划”之间的首个日期；
- 找不到该区间时，取全文首个日期；
- 支持 `2026年7月13日`、`2026-07-13`、`7月13日`、`7.13` 等形式；
- 周报日期区间支持 `2026.07.13-2026.07.17`、`7.13-7.17`、`7月13日-7月17日`；
- 无年份时仅在文件名中补充运行年份，不得修改正文；
- 找不到日期时立即停止并提示补充，不得使用系统日期兜底。

日报目标文件名格式为 `日志_yyyy.mm.dd.md`，例如 `日志_2026.07.13.md`。
周报目标文件名格式为 `周报_yyyy.mm.dd-yyyy.mm.dd.md`，例如 `周报_2026.07.13-2026.07.17.md`。
使用准备脚本输出的文件名写入 Markdown，不得自行改名。

### 2. 识别与润色

仅基于原文识别核心结论、已完成结果、确认异常、潜在风险、原因分析、后续计划、责任人和待确认事项。

默认使用 `restrained`：保留主要段落，轻度拆句、调序和结果前置；只有用户明确指定 `structural` 时才增加小标题、列表或行动项表格。不得创建空栏目。

周报模式可跨日期提炼“本周总体结果、关键完成事项、异常/风险/偏差、复盘与待确认事项、下周计划与支持需求”。不得为了结构完整创建空栏目或补写原文没有的信息。

### 3. 添加语义格式

格式覆盖完整语义片段，并保持克制：

#### 已确认未达标、异常、失败或逾期：红色

仅用于已经确认发生的负面事实：

```markdown
<span class="status-failed" style="color:#B42318;font-weight:700;">Cpk未达到目标要求。</span>
```

不得将“可能”“预计”“待确认”“初步怀疑”标红。

#### 潜在风险、待确认、不确定性和逻辑矛盾：风险色

风险色固定为 RGB `(252, 194, 5)`，即 `#FCC205`：

```markdown
<span class="status-risk" style="color:#FCC205;">若本周无法完成复测，交付计划可能受到影响。</span>
```

#### 正常完成且对进展重要：绿色，可选

绿色固定为 RGB `(2, 177, 78)`，即 `#02B14E`：

```markdown
<span class="status-done" style="color:#02B14E;font-weight:600;">已完成供应商报告初审。</span>
```

#### 斜体和加粗

- 原文需要斜体时使用 `<u><em>内容</em></u>`，不得只使用单纯斜体；
- 重要结论可使用 `**重要结论**`；
- 一个中文逗号分句内最多使用一个语义包装，禁止堆叠颜色、加粗和斜体；
- 禁止在 `<span>` 内嵌套 `**`、`*` 或 `_`。

错误示例：

```markdown
<span class="status-failed" style="color:#B42318;font-weight:700;">整个流程**超5天**</span>
```

正确示例：

```markdown
<span class="status-failed" style="color:#B42318;font-weight:700;">整个流程超5天</span>
```

如果只需突出“超5天”，则只包裹该短语，且不得再嵌套 Markdown 加粗。

### 4. 写入 Markdown

将正文写入准备脚本输出的目标文件名：

- 使用 UTF-8；
- 允许标准 Markdown 和内嵌 HTML `<span>`；
- 不插入修改说明、原文对照或处理过程；
- 不为邮件正文生成主题；
- 不额外生成纯文本、HTML 或说明文件。

### 5. 一次合并校验

运行：

```bash
python scripts/markdown_workflow.py validate \
  --input 日志_yyyy.mm.dd.md \
  --snapshot tmp/business-writing/protected_snapshot.json \
  --expected-name 日志_yyyy.mm.dd.md \
  --cleanup-dir tmp/business-writing
```

校验失败时必须就近回退，不得从头线性重跑：

- `route=protection`：只恢复保护词、数字、日期或单位，然后直接重新校验；
- `route=filename`：只重新抓取日期或修正文件名，然后直接重新校验；
- `route=style`：只修正对应颜色、下划线或嵌套样式，然后直接重新校验。

校验通过后，脚本清理工作目录，只交付一个 Markdown 文件。

## 输出质量标准

每次输出必须满足：

1. 事实零新增；
2. 语义强度不升级、不弱化；
3. 保护项逐字符一致；
4. 日报信息零删除、零无依据合并；周报仅做有依据的归纳和合并；
5. 结果优先；
6. 红色、风险色、绿色和强调格式符合固定语义；
7. 矛盾只提示不修正；
8. 日报只交付 `日志_yyyy.mm.dd.md`，周报只交付 `周报_yyyy.mm.dd-yyyy.mm.dd.md`。

