# Laohan Weigui

> 抖音文案违规检测。扫描口播稿中的引流词、极限词、医疗/金融承诺、低质标记、低俗色情、引战谩骂等9类违规风险，输出结构化报告+替换建议。Use when 用户说"检测违规""检查文案""看看有没有违规词""会不会被限流""发之前帮我看看"或给出任何要发布到抖音的文案要求检查。

- Skill: `hanzhcn/laohan-weigui` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add hanzhcn/laohan-weigui`
- Raw SKILL.md: https://api.skillmd.com/api/skills/hanzhcn/laohan-weigui/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: hanzhcn (https://skillmd.com/u/hanzhcn)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/hanzhcn/laohan-weigui

---


# 抖音文案违规检测

发布前扫描口播稿，找出可能触发抖音限流/禁言/下架的文案风险。它是版本化启发式筛查，不是抖音官方审核器，也不承诺发布结果。

## 核心理念

抖音审核不是"有敏感词就违规"的简单匹配——同一个词在引用、否定、专业术语等语境下完全合法。过度标记比漏标更糟：如果每次检测都报一堆低风险，用户会养成忽略报告的习惯，真正的高风险就被淹没了。所以宁可漏标也不误标——只标记真实风险，不确定的标低风险并注明原因（高风险类别除外，见评分规则）。

## 不适用场景

- 视频画面违规（水印、低俗画面）→ 本 skill 只管文案
- 其他平台（小红书/知乎等）→ 词库针对抖音，其他平台规则不同
- 法律合规审查 → 这是平台规则检测，不是法律审查
- 缺少文案内容 → 停下来，告诉用户需要提供文案文件或文本

## 工作流

### 1. 读入文案

接收文案来源（文件路径或直接文本），提取纯文本内容。

- **完成条件：** 拿到纯文本字符串
- **如果无法获取文案内容 → 停下来，告诉用户需要提供文件路径或直接粘贴文本**

### 2. 按9类扫描

先读取 `references/ruleset.json`。scan time 超过 `expires_at` 时在报告写 `ruleset_warning: STALE` 并安排复核，但不因规则过期自动阻断文案；只有命中明确未解决高风险或扫描根本无法完成时才 `REVISE_REQUIRED|BLOCKED`。再按 `references/keywords.md` 词库逐类扫描，每类独立评分。

| 类别 | 代码 | 风险等级 | 说明 |
|------|------|---------|------|
| 引流违规 | YL | 高 | 引导用户加微信/扫码/私信等站外引流（含谐音变形：薇信/徵信/加V♥等） |
| 极限词/广告法 | JX | 高 | 最、第一、唯一等绝对化用语 |
| 医疗效果承诺 | YL-MED | 高 | 治愈、根治、100%有效等医疗声明 |
| 金融收益承诺 | YL-FIN | 高 | 保收益、稳赚、具体收益数字 |
| 低质/标题党 | DZ | 中 | 震惊体、悬念杀、信息空洞 |
| 敏感话题 | MG | 高 | 政治敏感、未经证实消息、争议性话题 |
| 平台特有限制 | PT | 中 | 抖音独有的隐性限流规则（重复发布、诱导互动等） |
| 低俗色情 | DS | 高 | 抖音第一红线：擦边/性暗示/软色情即限流，硬色情封号 |
| 引战谩骂 | ZH | 高 | 人身攻击/地域攻击/拉踩引战/脏话，AI测评易踩拉踩线 |

- **完成条件：** 9类全部扫描完毕，记录所有匹配项及其上下文

### 3. 输出报告

当参数含 `--episode episodes/<slug>` 时，报告只能写入 `episodes/<slug>/02-违规报告.md`，并以以下 frontmatter 开头；`script_hash` 是该期 `01-口播稿.md` 的 SHA-256。任何改稿都必须重跑本步骤，不能复用旧报告。

```markdown
---
script_hash: <sha256>
risk_status: CLEAR # CLEAR | REVISE_REQUIRED | BLOCKED
unresolved_high_risk_count: 0
ruleset_version: douyin-text-risk-2026-07-11
ruleset_reviewed_at: <复制 references/ruleset.json reviewed_at>
ruleset_expires_at: <复制 references/ruleset.json expires_at>
scan_completed_at: <ISO-8601>
platform_guarantee: false
---
```

```
## 违规检测报告

**文案**: {文件名或前20字}
**整体风险**: 🟢当前规则集未发现未解决高风险 / 🟡低风险 / 🟠中风险 / 🔴高风险

### 发现问题

| # | 类别 | 风险 | 原文片段 | 建议替换 |
|---|------|------|---------|---------|

### 统计
- 高风险: X处 | 中风险: X处 | 低风险: X处
- 总扫描字数: X字

### 建议
{高风险>0 → 建议不发布；中风险 → 给修改建议；低风险 → 提醒；无问题 → 明确“当前版本规则集未发现未解决高风险，不代表平台保证”}
```

- **完成条件：** 报告包含所有匹配项、统计、建议

`risk_status` 是给 bianpai 的机械结论：明确高风险且未解决时写 `REVISE_REQUIRED`；扫描根本无法完成时写 `BLOCKED`；其余写 `CLEAR` 与 `unresolved_high_risk_count: 0`。规则过期用 `ruleset_warning: STALE` 提醒，不自动把 CLEAR 改成 BLOCKED。必须复制 ruleset 版本/复核/到期时间、实际 scan time，并写 `platform_guarantee: false`。不得只靠 `script_hash` 让报告放行。

### 4. 给出修改版（可选）

用户要求时，直接给出修改后的文案，用 `[原词→新词]` 标注改动位置。

## 操作规则

跨步骤的全局约束——在扫描和输出时都必须遵守：

### 匹配方式

- **关键词精确匹配**：引流词、极限词等直接匹配
- **模式匹配**：数字+收益（如"月入3万"）、联系方式模式（微信号、手机号）
- **变形词归一化（扫描前置）**：抖音规避手段常用谐音字/符号插入/全角半角绕过检测。扫每类前先把文案归一化再匹配——谐音变体（薇信→微信）直接查 YL 词库列出的变体；全角字母（ＶＸ）转半角；容忍词内插入 0-3 个非汉字符号（加★微★信→加微信）。详见 `references/keywords.md`「变形词归一化规则」。拼音首字母/拆字等激进变形暂不检测（口播场景罕见，过度检测误伤正常词）。

### 上下文豁免

同一个词在不同语境下风险不同。以下情况不算违规，不要误报：

❌ 差（误报）：
"他说这个工具月入百万" → 标记为 YL-FIN 高风险
（这是引用他人观点，不是收益承诺）

✅ 好（正确豁免）：
"他说这个工具月入百万" → 不标记（引用语境豁免）

豁免条件：
- 引用/转述他人观点（"有人说XXX"）
- 客观陈述事实（"这个工具月活1000万"）
- 否定句式（"不要相信月入百万"）
- 专业术语（"第一性原理"）

### 宁漏勿误原则

❌ 差（过度标记）：
每个"最"都标高风险 → 用户学会忽略报告 → 真正的高风险被淹没

✅ 好（精准标记）：
"最好的AI工具"在教程推荐语境 → 标低风险 + 注明"教程推荐语境，实际风险低"
"加我微信xxx123" → 标高风险（明确的引流行为）

仅当语境不确定且即使最不利解释也不构成高风险时，标“低风险”并注明原因；若不确定性涉及引流、承诺、资质、医疗/金融或其他高风险类别，按上文写 `REVISE_REQUIRED`，不得用低风险降级。

### 评分规则

| 情况 | 整体风险 |
|------|---------|
| 任何1个高风险 | 🔴高风险 |
| 2个以上中风险 | 🟠中风险 |
| 1个中风险 | 🟡低风险 |
| 仅低风险或无 | 🟢当前规则集未发现未解决高风险 |

## 与其他 skill 的关系

- **写完口播稿后、发布前**跑一次 laohan-weigui
- 可在 laohan-cheat 流程中加一步"违规检测"（publish前检查）
- 与 laohan-chuangzuo 独立，可在创作流程的任何节点单独调用

## 词库维护

词库的价值来自用户的实际限流经验——被限过一次的词，比猜的100个词都有用。

- 词库文件：`references/keywords.md`
- 规则清单：`references/ruleset.json`；至少每90天或出现真实平台处罚后复核
- 每次使用时提示："如果之前有被限流的经验，告诉我具体关键词，我加入词库"
- 加入时记录来源（哪个视频被限、平台反馈了什么），方便后续判断规则是否过时

