分享审核工作台(EduShareReview)
功能概述
国内中小教培机构(5–30 人)的营销物料合规审核工作台。解决三大问题:①顾问不知道"保过/提分/晒喜报/全网最低价"违法,文案整段踩《广告法》红线(单案罚款 1 万–100 万);②内容"谁想发谁就发",无审核流程;③被约谈时拿不出审核记录,无法自证。核心模式为先审后发:物料发布前经规则引擎预检(违禁词+法规依据+改写建议),审批人放行后全程台账留痕,直接对应《广告法》第三十四条"承接登记、审核、档案管理制度"的法定要求。
使用前提
- 运行环境:Python 3.8+(纯标准库,无需安装任何第三方包,无需联网)
- 连接器:无需任何连接器
- 前置数据:无。首次使用运行
init自动生成台账与词库;无需导入任何数据 - 系统:Windows / macOS / Linux 均可;数据全部保存在技能目录
data/下,机构自持,无云端上传
快速开始(首次 3 步,约 3 分钟)
- 初始化:对话说"初始化审核工作台" → 运行
python scripts/review.py init - 提交第一条文案:粘贴文案说"帮我审一下这条朋友圈文案:…" → 自动预检并返回风险清单(高危未清=待修改,清零=待审批)
- 放行:按建议修改复检通过后,说"R-1001 放行" → 台账写入放行记录(审批人/时间/风险快照)
使用手册
核心功能与操作示例
所有操作通过对话完成,AI 自动转译为对应命令。命令格式:python scripts/review.py <子命令> [参数]。
功能 1:提交物料并预检(最常用)
- 触发方式:用户说"帮我审一下这条文案 / 审核这条朋友圈 / 检查这段招生文案",并粘贴内容
- 操作示例:
> 用户:帮我审一下这条朋友圈文案:十年老店,名师亲授,签约保证提分!现在报名立减800!原价3600今日秒杀1999!
> 技能:(执行submit --text "…" --channel moments --submitter 小王后转述)
> 📋 预检完成 R-1001,共检出 7 个风险项(高危 4 · 中危 1 · 低危 2)
> [高] "包提分" —— 广告法§24(1) 保证性承诺,建议改为"帮助孩子巩固知识,按孩子节奏稳步提升"
> [高] "原价对比" —— 穗天市监处字〔2021〕279号(虚构原价被罚),原价需为30日内真实成交价,否则改"日常价"
> [中] "名师" —— 反不正当竞争法§9,需可验证资质,否则改"持证教师团队(证书可查)"
> ── 状态:待修改(高危 4 项,清除后方可提交审批) - 注意事项:物料类型
--type支持 text/poster/script/article/flyer;渠道--channel支持 moments(朋友圈)/wechat_oa(公众号)/douyin(抖音)/offline(地推);海报图请用户把文字誊成文字稿提交(V1 不做图片 OCR)
功能 2:修改后复检
- 触发方式:用户说"改好了,再检一遍 / 复检 R-1001"
- 操作示例:
> 用户:改好了,复检
> 技能:(AI 将修改稿写入data/reviews/R-1001.txt后执行check R-1001)
> 📋 预检完成 R-1001,共检出 0 个风险项 ✅ ── 状态:待审批 - 注意事项:内容无变化时自动命中缓存并标注"(命中缓存,内容未变化)"
功能 3:放行(审批人)
- 触发方式:审批人说"R-1001 放行"
- 操作示例:
> 用户:R-1001 放行
> 技能:✅ R-1001 已放行 · 审批人:校长 · 2026-08-20 13:36。放行记录已写入台账,可用于履行审核义务自证。 - 注意事项:守卫条件硬编码——高危项 >0 时放行直接被拒绝;用
--reviewer 名字记录审批人
功能 4:退回(审批人)
- 触发方式:审批人说"R-1002 退回,原因是……"
- 操作示例:
> 用户:R-1002 退回,原因是需家长书面授权且去标识,晒成绩违反广告法24(3)
> 技能:↩️ R-1002 已退回 · 原因已留痕。该物料如需重发请提交新物料(自动关联原 ID)。 - 注意事项:
--reason必填;待修改/待审批状态均可退回
功能 5:撤回(已放行物料止损)
- 触发方式:用户说"R-1003 撤回,活动取消了"
- 操作示例:
> 用户:R-1003 撤回,活动取消了
> 技能:⏸️ R-1003 已撤回 · 原因已留痕。该物料不可原 ID 再放行。 - 注意事项:仅"已放行"状态可撤回;
--reason必填
功能 6:台账查询
- 触发方式:用户说"待审还有几条 / 这周高危的有哪些 / 看看小王提交的"
- 操作示例:
> 用户:待审还有几条
> 技能:(list --status 待审批)表格输出:ID / 状态 / 等级 / 高中低计数 / 提交人 / 渠道 / 标题 - 注意事项:可组合筛选
--status(9 种状态)--risk--submitter--days N
功能 7:月度统计
- 触发方式:用户说"出 8 月审核月报 / 看看拦截率"
- 操作示例:
> 用户:出审核月报
> 技能:📊 共 23 条物料,已放行 15 · 拦截 6 · 撤回 2,拦截率 26%;高危类型 TOP5:受益者证明 8 次、绝对化用语 5 次…… - 注意事项:统计数字与台账逐行可对账
功能 8:自证报告(被约谈时用)
- 触发方式:用户说"生成审核义务履行报告 / 市监要来检查,帮我出个报告"
- 操作示例:
> 用户:生成 6-8 月的审核义务履行报告
> 技能:(report --since 2026-06-01)📄 报告已生成:data/审核义务履行报告_*.txt(含总体情况/拦截明细/放行明细,对应广告法§34) - 注意事项:报告含免责声明;生成后用文件展示能力呈现给用户
功能 9:自定义违禁词
- 触发方式:用户说"把'学而思'加进禁用词 / 加一个竞品名"
- 操作示例:
> 用户:把"学而思"加进禁用词
> 技能:✅ 已添加(high 级),下次预检即生效 - 注意事项:
addword 词 --level high|medium|low;delword 词删除;words查看全库
数据说明
data/(全部本地,机构自持)
├── words_builtin.json # 内置词库:65条(category/word/regex/level/basis/suggestion)
├── words_custom.json # 机构自定义词库(init 后生成,格式同上)
├── ledger.csv # 台账主数据,21字段全生命周期:
│ # material_id(R-xxxx) / title / content_type / channel / submitter /
│ # status(9态) / risk_level / high-medium-low计数 / content_hash /
│ # submitted-at / checked_at / reviewed_at / released_at / reviewer /
│ # return_reason / revoke_reason / evidence / ref_id / engine_version
├── share_review_ledger.xls # 台账 Excel 视图(SpreadsheetML,Excel/WPS 直接打开)
└── reviews/R-*.json|txt # 每条物料的风险快照(含每项 basis/suggestion)+ 原文存档
数据流转:submit 登记 → check 更新快照与状态 → release/return/revoke 写终态 → stats/report 从台账与快照聚合。台账每次写入自动备份上一版本(ledger.csv.bak)。
常见问题
| 问题 | 解决 |
|---|---|
| 台账/词库文件不存在 | 运行 init 重新初始化(已有数据不受影响) |
| Excel 打开 .xls 提示格式 | 该文件为 SpreadsheetML 格式,Excel/WPS 可直接打开;如需 .xlsx 用"另存为"转换 |
| 放行被拒绝 | 提示"高危 N 项未清除"——按风险清单的建议改写后 check 复检,高危清零才能放行 |
| 重复提交提示"已存在" | 内容哈希相同即判定重复,在原物料上操作(check/return/revoke)即可 |
| 海报图片怎么审 | V1 不做 OCR,把海报上的文字誊成文字稿用 --type poster 提交 |
| 检出"学科培训"类词 | 这是业务投放红线而非措辞问题:面向中小学的学科类广告任何渠道都禁止发布,建议停止宣传该类业务 |
| 想改"名师"这类中危词的判定 | 中危=需证据支撑:有证书可保留表述,并在 addword 或 org_profile 登记证据;无据按建议改写 |
| 换电脑/换目录数据迁移 | 整个 data/ 目录拷贝到新环境的技能目录即可 |
技能指令(开发者参考)
状态机与守卫
提交→[待预检]→[预检中]→高危>0→[待修改]──复检高危=0──→[待审批]──放行──→[已放行]──撤回──→[已撤回·终态]
↑____________复检仍有高危__________|──退回(必填原因)──→[已退回·终态]
- 放行守卫:
release前校验 high_count=0,违反即 exit 1 - 退回/撤回守卫:
--reason必填 - 幂等:归一化哈希(去空格/全半角变体)相同且非终态 → 拒绝重复登记
- 终态不复活:已退回/已撤回重发走新 ID,ref_id 关联原 ID
给 AI 执行者的操作规范
- 用户粘贴文案求审核:直接
submit并完整转述输出,重点讲高危项与改法;不要自行改写替代引擎结论 - 用户要改写:基于命中项
suggestion字段改写,改写稿必须再过check才能交付 - 用户问"为什么违规":引用
basis字段(法规条款+处罚案例编号),解释参考references/legal-basis.md;不确定的表述回答"建议咨询专业人员" - 命中"双减禁投"类词:明确告知这是业务红线而非文案问题,不提供规避建议
- 检测引擎边界:规则为词表+正则匹配,覆盖常见变体(全半角/空格/间隔符),无法穷尽所有谐音变体——输出中已声明"仅供参考"
- 生成台账/报告文件后,用文件展示能力呈现给用户
合规红线(本技能自身行为边界)
- 永不替用户发布任何内容到任何平台——只做审核与留痕
- 永不承诺"用了就不被罚"——每次预检输出强制附"以上为规则引擎自动判断,仅供参考,不构成法律意见"
- 不提供学科类培训规避能力——检测到即提示停止宣传
- 数据全部本地存储,无任何网络请求、无遥测
参考文件
references/legal-basis.md— 全部法规条款摘录与真实处罚案例(含用户疑问应答口径)references/sample-run.md— V1 端到端实测输出样例(各命令真实返回格式)data/words_builtin.json— 内置 65 词库(可直接查看每条依据)
版本路线
- V1(当前):文本预检 + 台账 + 状态机 + 统计 + 自证报告 + 自定义词
- V1.5:图片 OCR 预检、机构资质档案联动(org_profile.json 已预留)、渠道规则包
- V2:催办提醒、趋势分析、多校区台账合并