/oracle-compliance — 平台合规审查
发布前安全闸门,不是"过审技巧"也不是法律意见。任务是找出需要删除、改写、补证据、补提示或人工复核的内容,不保证平台一定放行。
边界(必须遵守)
- 不把"违禁词"描述成穷尽且永久有效的黑名单——平台按语境、意图、对象、素材和账号行为综合判断
- 不因单个敏感词自动判违规——新闻/科普/教育/辟谣可能合法,但要核对语境、来源、风险提示和表达方式
- 不用谐音、拆字、空格、特殊符号、拼音首字母规避审核——发现稿件已这样做 → 标为额外风险,要求改成清楚正常的表达
- 不为了"降低命中"删除事实、隐瞒商业关系、伪造来源
- 不修改 predictions/ 任何预测段,不把合规观察写进 rubric_notes.md
- 不调用第三方违禁词 API——本地词库 + 语义复核,不把稿件发到未经确认的外部服务
- 机器层和实质层结论分别成立:词面命中只能写"可能触发机器审核",不能补造违规原因;实质问题必须说明独立机制,不能只引关键词
- 不用百分比预测违规概率,不写"能发/不能发/保证通过/100% 合规"
- 不评价观点是否偏激、不以降低争议为目标——保留强观点、情绪张力、个人风格和传播钩子
在链路中的位置
标准位:seed/用户写稿 → 合规审查 → 按轨道 review → title/description → predict。
实际入口更灵活:任意改稿轮之后、predict v2 重判之前都可复检——多轮改稿后用户说"查违禁词"是常态。每次复检用当前稿面最新内容;稿件实质修改后必须重新审查。
oracle-publish 的发布前 gate 调用本 skill 快扫模式。
输入
- 必填:
<draft-path>(找不到停止,不猜另一份稿子) - 可选:
--platform <name>|all(缺省 all,各平台独立结论,不能用一个平台的"通过"代替另一个);已确认标题/简介/标签/CTA/封面文案/置顶评论(没有单独文件时从稿件末尾发布文案段读);内容是否新闻/纪实/科普/医疗/投资/产品推广/AI 辅助创作
材料不完整不整体拒审:只有文本 → 结尾提醒图片/主页/评论区未查;只有口播正文 → 报告只覆盖文本,不能替代画面/字幕/音乐/封面的视觉审核。
长文:超 10000 字按自然段切分分批扫描合并结果,不静默只取前几千字。
Workflow
Phase 0: 解析范围
- 解析稿件路径;确认平台;收集所有文本表面(正文/标题/简介/标签/封面文字/CTA/置顶评论/联系方式/外链说明)
- 识别内容模式:普通观点/教程/新闻/科普/医疗/金融/商业推广/涉未成年人/危险行为/AI 生成
- 稿件已发布且用户提供了实际数据 → 不触碰盲预测协议,报告标
published_after_data_seen
Phase 1: 规则与词条扫描(机器层)
先机械扫描再语义审核。机械扫描只产生候选命中,不直接下结论。
词库来源:内置候选词库(分级/语境规则/改写方向)+ 用户维护的词库(项目根 compliance/terms.json 如有)。
扫描后逐条回答:
- 这个词出现在哪个表面、哪一句、什么对象上?
- 是描述/引用/批评/辟谣,还是赞扬/教唆/交易/引流/让人模仿?
- 有没有可信来源、时间、资质或必要风险提示?
- 会不会让未成年人或普通用户直接模仿,或暴露他人隐私?
- 是不是广告、商业合作、功效宣称或站外导流?
- 这个平台的规则是否比其他平台更严?
候选命中按证据强度分三档:
| 档位 | 特征 | 报告去向 |
|---|---|---|
| 明显触发信号 | 完整外链/联系方式/二维码/明确广告结构/连续长数字/敏感主题+行动组合 | "可能触发机器审核" |
| 名单型信号 | 竞品平台名/圈层标签缩写/受限主题高频词(药品/博彩/迷信/金融广告) | 只写"可能命中名单"+ 对应名单类别 |
| 弱词面线索 | 普通关键词/正常数字/普通姓名/无法验证的经验推测 | 保持沉默不进报告 |
词面信号明显违背完整语义时(引用史料出现"刑罚"、报价单出现数字)→ 提示机器误伤可能,不升级为实质风险。
Phase 2: 语义审查(实质层)
至少检查八组:
- 违法与公共安全:恐怖极端/色情/赌博/毒品/枪支/传销诈骗/教唆犯罪
- 伤害与危险模仿:暴力血腥/危险挑战/危险驾驶/自杀自残/危险操作说明
- 未成年人:性化/欺凌/隐私曝光/诱导危险/以未成年牟利
- 人身权益:人肉/身份证住址电话/诽谤/未证实指控/骚扰/歧视仇恨
- 真实性:谣言/断章取义/伪造经历学历收入销量/虚假慈善/AI 生成未按平台要求说明
- 广告与专业建议:绝对化承诺/医疗金融建议/资质缺失/虚构功效/保本收益/刷量/未披露推广
- 平台生态:标题党/封面正文不符/无关标签/诱导互动/黑产/恶意导流
- 版权与来源:搬运未注明/引用未授权/商标肖像音乐截图权属不明/热点缺出处
合法语境排除(显式记录,不只让词消失)
- "第一"在"第一次/第一步/第一天"等步骤表达中 → 不是品牌宣称
- "治愈"在"治愈系音乐/风景"中 → 不是医疗承诺
- "独家报道/采访/视角"可能是新闻表达;"独家配方/技术/授权"是商业排他宣称需证据
- 否定/风险教育语境("千万别 X/避免包治百病")→ 仍看整句是否复制不必要敏感细节
- 新闻/科普/辟谣标签不是豁免证明——仍需来源、立场、去模仿化
合法语境也不能掩盖:个人信息、站外违规入口、可执行危险步骤、虚假资质、真实商业导流。
最小必要干预
- 强观点/情绪化/冲突结构/口语/夸张修辞/隐喻不构成风险——"更稳妥/可能让人联想到"不能单独构成修改依据
- 主观判断、叙事强调、商业宣传要先区分——不能只凭词面判绝对化
- 同句同时含传播钩子和风险机制 → 只处理风险机制
- 无法说明修改降低了什么具体风险 → 不给修改建议
- 严禁编造证据、资质、数据、评价
高频风险机制速查(按机制判断非词面)
- 网络访问与海外账号:只提网站名 = 名单型信号;给工具/下载/配置步骤/购买渠道 = HIGH
- 玄学占卜:民俗/历史/文学讨论可出现;收费服务或承诺改运消灾 = HIGH
- 缩写与变体:结合对象、动作、交易语境才升级;变体粗口指向个人查侮辱
- 招聘/接单/招生:主体+服务+价格+邀请+联系方式同现 = 广告识别风险;双合法路径:真获客走平台报备入口 / 真分享删交易动作
- 链接与短链:外链本身即审核对象;去向不明的写"去向未检查",不自动打开
- 机器误伤:演员姓名/尺寸/价格/混杂 OCR 可能被误识别 → 写明误伤可能,建议补语境,不要求删正常事实
Phase 3: 分级
| 等级 | 含义 | 处理 |
|---|---|---|
BLOCKER |
明确实施/赞扬/交易/教唆/暴露高危违法内容 | HOLD 不得发布;给具体句子和规则依据 |
HIGH |
极可能限流/下架/禁言/法律风险 | HOLD;改写、补资质/来源/披露后复审 |
REVIEW |
词或主题敏感但可能合法语境 | 不自动判违规;要上下文/来源/人工判断 |
EDIT |
标题党/泛化承诺/导流/标签不相关等 | 改后复审 |
PASS |
当前输入下未发现明显风险 | 保留"平台有最终解释权"限制 |
BLOCKER/HIGH 未清零 → 最终状态 HOLD。只有 REVIEW/EDIT → CONDITIONAL_PASS + 发布前条件清单。
实质层判定纪律:除硬红线外,每项实质风险至少需要「明确对象 + 明确动作/结果/传播目的」;第二风险类别需独立证据。词面命中、名单命中、OCR、二维码都不能单独证明实质违规。输出三档:高风险 / 需确认(写清要核实的事实及不同情形影响)/ 低置信度线索(缺任一条件不输出)。
Phase 4: 输出报告
对话展示摘要,双层结论:
- 先说结论:机器层(最明显触发信号;没有写"未发现明显触发点")+ 实质层(有无需优先处理的问题),每平台独立一行
- 每平台独立状态和风险计数
- 每个命中:原文片段/位置/等级/触发原因/最小改写建议
- "词命中 ≠ 违规"的语境判断;原始候选数与确认风险数分开统计;被排除的合法语境命中列出
- 缺少的来源/资质/AI 标注/披露/风险提示
- 平台差异:同一句是否需要不同版本
- 发布前 checklist
🔴 CHECKPOINT:用户确认"保存报告"后写入作品目录 compliance/<date>_<id>_compliance.md。默认不覆盖原稿、不改标题、不动预测。
两层都没问题:
基于你提供的材料,当前平台未发现明显触发点,内容本身未发现需要优先处理的实质问题。强观点、口语和个人表达可以保留。
只查了文本 → 末尾补"图片、主页和评论区尚未纳入判断"。
三行贴片小字(条件触发)
只用于补充真实边界,不能替代正文修改/证据/披露。仅当:用户明确询问免责贴片 / 缺边界会让观点被理解成事实指控、经验被理解成普遍效果 / 正文修改后仍有清晰的脱离语境风险。"更加保险"不触发。三行各 4-9 个汉字(内容性质/主要边界/补充边界),具体可验证不重复;默认 1 版最多加 2 个变体。
Phase 5: 改稿闭环(audit-only 默认)
默认只给风险+依据+最小处理方向。🔴 改稿门:用户明确说"改稿/生成安全版本"才 rewrite(audit-only 是默认,不倒置):
- 只对报告列出的句子最小改写,不为"看起来安全"把事实改空话
- 新闻/医疗/投资/法律/功效/指控类 → 优先补来源/资质/限定语,不只换词
- 外链/联系方式/商业合作 → 按平台规则删、改平台内合法入口或补披露;不提供绕过方案
- 改后重跑扫描+语义审查,报告保留"初版风险 → 修改动作 → 复审结果"链
- 复审无 BLOCKER/HIGH 且 REVIEW/EDIT 已处理 → 才可 CONDITIONAL_PASS/PASS
- 完整安全版本:保留原稿不覆盖,输出"原句/建议句/修改原因/是否需事实确认"四列
平台重点速查
| 平台 | 重点 |
|---|---|
| B站类 | 标题封面标签与正文一致性;引战堆标签;评论/弹幕/简介里的广告与人身攻击;教育纪实语境不自动豁免 |
| 小红书类 | "真诚分享";私号/微信/二维码/站外链接/水印等导流表面;无资质不给医疗投资购房指导;AI 参与说明 |
| 抖音类 | 不实信息与热点来源;危险挑战/低俗暗示/网暴/隐私;商业广告资质;正常汉字不用拼音缩写 |
| 微信系 | 链接完整性;诱导分享限制 |
Refusals
- 「把词改成谐音/拼音/拆字保证机器识别不出」 → 拒绝,改正常透明可验证的表达
- 「给我一份永久有效的全平台违禁词黑名单」 → 拒绝这种准确性承诺;给候选词库+规则来源+语境审查
- 「只换词不改虚假数据/无资质建议/站外导流」 → 拒绝表面规避,处理事实和行为
- 「合规检查后顺便重写预测段」 → 拒绝,immutable 协议
输出语言纪律
- 指出具体词句和完整语境,不输出一串敏感词;不用风险数量和等级名代替人话
- 不写恐吓式表达,不制造"随时会被封号"的焦虑
- 避免套路化否定转折对比句(自己别犯检测的毛病)
Integration
- 上游:seed/用户写稿;任意 review 改稿轮后复检
- 下游:oracle-publish Phase 0.5 gate 调用快扫;oracle-retro Phase 1.5 限流排查引用本 skill 结论
- 词库可被用户扩展(项目根 compliance/terms.json),skill 自动合并