SuperAPI AI Directory

laohan-weigui

Marketing & growth

View repository

Updated 10-15 22:12

About this skill

Douyin Copy Violation Detection

Before publishing, scan the spoken script to identify copy risks that may trigger Douyin throttling/muting/removal. It is a versioned heuristic screening, not Douyin's official reviewer, and does not guarantee publishing outcomes.

Core Philosophy

Douyin review is not a simple match of "if there is a sensitive word, it is a violation"—the same word is completely legal in contexts such as quotation, negation, and technical terminology. Over-flagging is worse than under-flagging: if every detection reports a bunch of low risks, users will develop the habit of ignoring the report, and the truly high risks will be drowned out. Therefore, it is better to under-flag than to falsely flag—only flag real risks; mark uncertain ones as low risk and note the reason (except for high-risk categories, see scoring rules).

Inapplicable Scenarios

  • Video visual violations (watermarks, vulgar visuals) → this skill only handles copy
  • Other platforms (Xiaohongshu/Zhihu, etc.) → the lexicon targets Douyin; other platforms have different rules
  • Legal compliance review → this is platform rule detection, not legal review
  • Missing copy content → stop and tell the user they need to provide a copy file or text

Workflow

1. Read in the copy

Receive the copy source (file path or direct text) and extract the plain text content.

  • Completion condition: Obtain a plain text string
  • If the copy content cannot be obtained → stop and tell the user they need to provide a file path or paste the text directly

2. Scan by 9 categories

First read references/ruleset.json. When scan time exceeds expires_at , write ruleset_warning: STALE in the report and arrange a review, but do not automatically block the copy because the rules are outdated; only REVISE_REQUIRED|BLOCKEDwhen a clear unresolved high risk is hit or the scan simply cannot be completed. Then scan category by category according to the references/keywords.md lexicon, scoring each category independently.

Category Code Risk Level Description
Traffic diversion violation YL High Guiding users to add WeChat/scan codes/private message, etc., for off-platform traffic diversion (including homophonic variants: 薇信/徵信/加V♥, etc.)
Superlative terms/Advertising Law JX High Absolute terms such as most, first, only
Medical efficacy promises YL-MED High Medical claims such as cure, root cure, 100% effective
Financial return promises YL-FIN High Guaranteed returns, stable profit, specific return figures
Low-quality/clickbait DZ Medium Shocking style, suspense bait, empty information
Sensitive topics MG High Politically sensitive, unverified news, controversial topics
Platform-specific restrictions PT Medium Douyin-specific hidden throttling rules (repeated publishing, induced interaction, etc.)
Vulgar/sexual content DS High Douyin's number one red line: borderline/sexual innuendo/soft porn gets throttled, hardcore porn gets banned
Inciting conflict and abusive language ZH High Personal attacks/regional attacks/comparison-baiting conflict/Profanity, AI reviews easily cross the comparison-baiting line
  • Completion conditions: All 9 categories scanned, all matches and their context recorded

3. Output report

When the parameters include --episode episodes/<slug> , the report can only be written to episodes/<slug>/02-违规报告.md, and must start with the following frontmatter;script_hash is the SHA-256 of that issue's 01-口播稿.md . Any revision must rerun this step and cannot reuse an old report.

---
script_hash: <sha256>
risk_status: CLEAR # CLEAR | REVISE_REQUIRED | BLOCKED
unresolved_high_risk_count: 0
ruleset_version: douyin-text-risk-2026-10-05
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 → 建议不发布;中风险 → 给修改建议;低风险 → 提醒;无问题 → 明确“当前版本规则集未发现未解决高风险,不代表平台保证”}
  • Completion conditions: The report includes all matches, statistics, and recommendations

risk_status is the mechanical conclusion for bianpai: when clearly high-risk and unresolved, write REVISE_REQUIRED; when the scan simply cannot be completed, write BLOCKED; otherwise write CLEAR and unresolved_high_risk_count: 0. Use ruleset_warning: STALE to remind if the rules are expired, and do not automatically change CLEAR to BLOCKED. Must copy the ruleset version/review/expiry time, the actual scan time, and write platform_guarantee: false. Must not rely solely on script_hash to let the report pass.

4. Provide a revised version (optional)

When the user requests, directly provide the revised copy, marking the changed positions with [原词→新词] .

Operating rules

Global constraints across steps—must be followed during both scanning and output:

Matching method

  • Exact keyword matching: Directly match traffic-driving words, extreme words, etc.
  • Pattern matching: Numbers + income (e.g. "30k per month"), contact patterns (WeChat ID, mobile number)
  • Normalization of variants (pre-scan): Douyin evasion tactics commonly use homophones/inserted symbols/full-width and half-width characters to bypass detection. Before scanning each category, first normalize the copy and then match—for homophone variants (薇信→微信) directly check the variants listed in the YL lexicon; convert full-width letters (VX) to half-width; tolerate 0-3 non-Chinese-character symbols inserted within a word (加★微★信→加微信). See references/keywords.md"Variant normalization rules". Pinyin initials/character splitting and other aggressive variants are not detected for now (rare in spoken scenarios, and over-detection harms normal words).

Context exemption

The same word has different risk in different contexts. The following cases are not violations; do not report them falsely:

❌ Bad (false positive): "He said this tool earns a million a month" → flagged as YL-FIN high risk (this is citing someone else's opinion, not an income promise)

✅ Good (correct exemption): "He said this tool earns a million a month" → not flagged (citation context exemption)

Exemption conditions:

  • Quoting/relaying others' views ("someone says XXX")
  • Objectively stating facts ("this tool has 10 million monthly active users")
  • Negative sentence patterns ("don't believe in earning a million a month")
  • Technical terms ("first principles")

Principle of preferring misses over false positives

❌ Bad (over-flagging): Flag every "most" as high risk → users learn to ignore reports → truly high-risk items get drowned out

✅ Good (precise flagging): "The best AI tool" in a tutorial recommendation context → flag as low risk + note "tutorial recommendation context, actual risk is low" "Add my WeChat xxx123" → flag as high risk (clear traffic-driving behavior)

Mark as "low risk" only when the context is uncertain and even the most unfavorable interpretation does not constitute high risk, and note the reason; if the uncertainty involves traffic diversion, promises, qualifications, medical/financial, or other high-risk categories, write as above REVISE_REQUIRED, and do not downgrade using low risk.

Scoring rules

Situation Overall risk
Any 1 high risk 🔴High risk
2 or more medium risks 🟠Medium risk
1 medium risk 🟡Low risk
Only low risk or none 🟢No unresolved high risk found in the current rule set

Relationship with other skills

  • After writing the spoken script and before publishingrun laohan-weigui once
  • A "violation detection" step can be added to the laohan-jiaozhun process (pre-publish check)
  • Independent of laohan-chuangzuo, it can be called separately at any point in the creation process

Vocabulary maintenance

The value of the vocabulary comes from users' actual throttling experience—a word that has been throttled once is more useful than 100 guessed words.

  • Vocabulary file:references/keywords.md
  • Rule list:references/ruleset.json; review at least every 90 days or after a real platform penalty occurs
  • Each time it is used, prompt: "If you have had throttling experience before, tell me the specific keywords, and I will add them to the vocabulary"
  • When adding, record the source (which video was throttled, what the platform feedback was), to facilitate later judgment of whether the rule is outdated