ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

影刀RPA新手教程:内容合规审核自动化实战——违禁词检测与风险预警

影刀RPA新手教程:内容合规审核自动化实战——违禁词检测与风险预警 影刀RPA新手教程内容合规审核自动化实战——违禁词检测与风险预警合规审核为什么必须自动化一个中等规模的电商或内容团队每天发布商品描述、短视频文案、活动页、推送通知加起来有几百条。人工一条条看违禁词不仅效率低而且容易漏——晚上11点发的紧急推送审核员可能已经下班了。平台规则每季度更新一次新增的违禁词种类五花八门极限词“最好”“第一”“顶级”、医疗词“治愈”“疗效”、金融词“稳赚”“保本”、诱导词“点击领取”限量秒杀可能被判定为虚假宣传。这段流程能在5分钟内检查完1000条内容比人工快20倍而且不会漏掉任何一条。先装好影刀RPA安装指引在 home.linyan.cloud。整体思路本地词库 API兜底违禁词检测有两种技术路线方案A本地词库匹配。把违禁词清单存在Excel或TXT文件里用字符串匹配算法在待审核内容中查找——速度快、离线可用、不依赖外部服务但覆盖范围取决于词库完整度。方案B调用第三方内容审核API阿里云内容安全、网易易盾、百度内容审核。返回的结果更智能能识别语义级别的违规比如用委婉说法绕过关键词但有调用成本和网络延迟。这篇用方案A方案B混合先用本地词库做第一轮快速过滤命中的直接标记高危未命中的再调API做语义审核。这套组合拳兼顾了速度和准确性。元素定位这个项目没有太多网页操作合规审核自动化是纯数据驱动的流程不像前几篇有大量的网页元素捕获。但有一个小环节涉及元素定位如果需要自动进入后台系统把拦截的内容标记为已驳回或下架就需要操作后台页面的按钮。后台按钮定位和之前类似捕获时用文本匹配而非class。比如审核后台的驳回按钮用文本包含(驳回)捕获。如果驳回有确认弹窗弹窗里的确认按钮同理。唯一需要注意的是审核后台页面的结构可能因角色权限不同而变化比如普通审核员的页面没有一键全驳回按钮主管才有。流程里操作界面前先判断元素是否存在不存在时走备选逻辑或跳过。变量设计审核流水线数据结构词库变量list_违禁词库[{关键词:最好,类别:极限词,风险等级:高危},{关键词:第一,类别:极限词,风险等级:高危},{关键词:国家级,类别:极限词,风险等级:高危},{关键词:治愈,类别:医疗夸大,风险等级:警告},{关键词:根治,类别:医疗夸大,风险等级:高危},{关键词:稳赚,类别:金融误导,风险等级:高危},{关键词:保本,类别:金融误导,风险等级:高危},{关键词:点击领取,类别:诱导文案,风险等级:警告},]词库的数据结构每条记录包含关键词、类别、风险等级。类别用于分类统计方便生报告时写本月极限词违规占比45%风险等级决定了处置策略。审核结果变量dict_审核结果{内容ID:20250701001,内容来源:商品描述,原始内容:这款产品是最好的选择治愈你的皮肤问题,审核状态:高危,命中词列表:[{关键词:最好,位置:7,类别:极限词,风险等级:高危},{关键词:治愈,位置:14,类别:医疗夸大,风险等级:警告}],最终风险等级:高危,# 取列表中最高等级审核时间:2025-07-01 14:30:00,处置建议:自动拦截,审核员:RPA自动审核}关键逻辑最终风险等级的判定取最高级。如果一条内容同时命中了高危和警告关键词最终等级是高危。处置建议也相应取最高级别的处置策略。风险等级对应处置策略高危自动拦截不允许发布通知人工复审警告标记待人工复审不自动拦截但提示注意通过自动放行流程控制词库匹配的核心算法主流程读取词库文件 → list_违禁词库 读取待审核内容 → list_待审核列表 初始化 list_审核结果 新建列表 初始化 list_高危列表 新建列表 初始化 list_警告列表 新建列表 For dict_内容 in list_待审核列表: list_命中词 新建列表 For dict_词 in list_违禁词库: If dict_词.关键词 in dict_内容.原始内容: 记录命中位置 dict_内容.原始内容.find(dict_词.关键词) 追加 {关键词, 位置, 类别, 风险等级} 到 list_命中词 If len(list_命中词) 0: 最高风险等级 max(命中词的风险等级) dict_审核结果 {内容ID, 原始内容, 最高风险等级, list_命中词, 处置建议} 追加 dict_审核结果 到 list_审核结果 If 最高风险等级 高危: 追加到 list_高危列表 Else If 最高风险等级 警告: 追加到 list_警告列表 Else: 调用API二次审核(dict_内容) If API返回违规: 追加到 list_审核结果 写入审核报告Excel(list_审核结果) If len(list_高危列表) 0: 拦截操作(list_高危列表) 飞书通知(list_高危列表) If len(list_警告列表) 0: 飞书通知(list_警告列表)有几个细节需要注意一、字符串匹配用Python的in操作符在影刀里等价于If 变量A 包含 变量B。注意这个匹配是大小写敏感的。违禁词最高级匹配不了最高級繁体。词库里建议同时维护简繁两种写法或者匹配前先做简繁转换。二、匹配位置记录原始内容.find(关键词)返回关键词第一次出现的位置索引。这个位置用于在报告中高亮标注方便审核员定位。三、性能优化如果内容有1000条、词库有500个词双重循环就是500000次字符串匹配——影刀直接跑会很慢。优化方案先把词库按类别分组先匹配高危害类别极限词、医疗词命中就直接判高危并跳到下一条内容不再匹配低危害类别。这样可以减少大量无效比较。四、API调用的限流第三方审核API一般有QPS限制每秒请求数。如果待审核内容很多调用API前加延迟1/QPS限制秒。比如阿里云内容安全API限制QPS50每条内容调用前延迟0.02秒。数据处理读取与写入读取词库词库维护在Excel里三列关键词、类别、风险等级。用影刀的Excel_读取区域读取全部数据行存入列表。读取时用按表头匹配方式确保列顺序变化不影响。读取待审核内容内容来源可能是Excel运营排期表导出的、数据库CMS系统的content表、或从飞书消息/企业微信里自动抓取。用对应的影刀指令集读取。从Excel读的示例Excel_打开文件(C:\审核\待审核内容.xlsx) list_待审核 Excel_读取区域(Sheet1, A1:E1000, 按表头匹配) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3b0d755309c74c77a0d6fb241c9b8550.png#pic_center)从MySQL读的示例需要安装影刀的MySQL扩展指令集MySQL_连接(host, port, user, password, database) list_待审核 MySQL_查询(SELECT id, content, source FROM content WHERE status待审核)写入审核报告报告Excel包含两个Sheet。Sheet1是审核明细一行一条内容含原始内容、命中词、风险等级、处置建议Sheet2是统计汇总按类别统计命中数量、按风险等级统计占比。统计汇总Python代码fromcollectionsimportCounter class_statsCounter()level_statsCounter()forresultinreview_results:forhitinresult[命中词列表]:class_stats[hit[类别]]1level_stats[hit[风险等级]]1网页/API自动化对接第三方审核服务以阿里云内容安全API为例。调用方式用影刀的HTTP请求指令POST https://green.cn-shanghai.aliyuncs.com/green/text/scan Headers: Content-Type: application/json Authorization: {签名} Body: { scenes: [antispam], tasks: [ { dataId: {内容ID}, content: {原始内容} } ] }返回结果里suggestion字段pass/block/review对应通过/拦截/复审。签名计算比较复杂建议用影刀执行Python脚本封装签名逻辑importhmac,hashlib,base64,time,uuiddefsign(access_key_id,access_key_secret,method,body):# 阿里云签名V3版本计算逻辑# 具体实现略returnsignature调用流程If 本地词库未命中: HTTP请求(API URL, POST, Body, Headers) 解析返回的JSON If 返回.suggestion block: 标记最终风险等级 高危 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/03acde4e1cd44fcf9f7413ecede85594.png#pic_center) Else IF 返回.suggestion review: 标记最终风险等级 警告API调用失败处理如果API超时或返回5xx错误默认标记为警告宁可误拦不错放备注里写明API超时人工复审。进阶正则匹配与变体识别简单的关键词匹配有盲区——商家会用变体绕过把最好写成最-好或最 好或最hao。正则表达式处理变体importre# 匹配最好及其变体中间可插入-或空格或换行patternr最[\s\-]*好ifre.search(pattern,content):# 命中词库里支持正则格式在关键词列中以regex:前缀标记为正则模式。匹配时判断是否以regex:开头如果是就用re.search否则用普通字符串in。变体匹配的一个微妙问题误伤。比如最低价包含了最低如果最低在违禁词库中很多平台把最低归为极限词那最低价也会命中。需要加白名单机制维护一个白名单列表即使命中了违禁词如果整体在白名单中则放行。白名单示例list_白名单[最低价保证具体见活动规则,本产品非药品不承诺治愈效果]白名单匹配策略命中了违禁词 → 检查内容是否包含任意白名单完整短语 → 包含则降级为通过或警告。白名单建议用完整短语匹配而非关键词匹配避免被滥用。自动拦截与通知审批流闭环高危内容的处置流程1. 标记状态 → 内容表中status字段更新为已拦截 2. 记录拦截原因 → 内容表中添加备注命中违禁词最好(极限词)、治愈(医疗夸大) 3. 通知审核员 → 飞书通知附带内容链接和命中词明细 4. 通知内容发布者 → 发送企业微信/钉钉消息告知其内容被拦截及原因 5. ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0fff2976fced4cabaecb8807b55d8d6c.png#pic_center) 6. 记录拦截日志 → 写入审核日志表用于后续统计分析飞书通知消息模板高危 内容合规预警 - 高危 时间2025-07-01 14:30:00 ------------------------ 内容ID20250701001 来源商品描述 内容摘要这款产品是最好的选择治愈你的皮肤问题... 命中词【最好】极限词(高危) 【治愈】医疗夸大(警告) 审核状态已自动拦截 处置禁止发布请人工复审 ------------------------ 今日高危内容3条 点击查看审核报告注意飞书消息里只展示内容摘要前50字完整内容在审核报告Excel里。消息不要带完整内容的原因是防止通知群里的人看到违规内容产生二次传播。通知审核员维护审核员分组信息表按内容来源分发通知——商品描述的违规通知给商品审核组营销文案的违规通知给市场审核组。内容发布者的通知如果违规是因为措辞不当比如用了最好可以附带修改建议——把命中的违禁词替换为合规表达后一起推送让发布者直接修改。修改建议生成替换建议{最好:优秀/出色/理想,第一:领先/卓越,国家级:高品质/专业级,治愈:改善/缓解,根治:有效改善,稳赚:稳健,保本:低风险}系统联动审核数据联动内容管理系统审核结果需要回写到内容管理系统CMS形成一个完整闭环。如果CMS有API用影刀的HTTP请求把审核结果POST回去PUT /api/content/{内容ID}/review Body: { status: blocked | warning | approved, reviewer: RPA, reason: 命中违禁词最好(极限词), reviewTime: 2025-07-01 14:30:00 }如果CMS没有API只有数据库用影刀的数据库指令直接UPDATEUPDATEcontentSETstatus已拦截,review_comment命中违禁词最好(极限词),reviewerRPA,![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f44d7c8180f9420f8ff31dc35e990ffc.png#pic_center)review_timeNOW()WHEREid20250701001;注意UPDATE操作比SELECT更危险。执行前务必确认WHERE条件精确到id不要出现WHERE status待审核这种范围条件误更新。建议先SELECT验证目标行数和数据正确性再执行UPDATE。统计报告定时发送每周一早上9点自动生成上周的审核统计报告发送到管理层群。报告包含审核总量、通过率、拦截率、各类违规分布、环比变化、高频违禁词TOP10。生成报告的Python代码importpandasaspd dfpd.DataFrame(review_results)# 按类别统计class_statsdf.groupby(类别).size().reset_index(name数量)# 按日期统计趋势daily_statsdf.groupby(审核日期).size().reset_index(name数量)报告用Excel生成带图表。影刀可以直接输出Excel的数据透视表到指定Sheet。工程化词库持续更新机制违禁词库不是一成不变的。平台规则会变新的违规话术层出不穷。词库需要一个持续更新机制更新源平台官方公告的违禁词新增API审核结果中的人工确认为违规但词库未覆盖的词人工审核员标记的新增违禁词更新流程每周自动检查平台规则页面是否有更新用影刀爬取规则公告页对比新旧词库新增部分标记新增写入API审核结果的反馈对API判定为block但本地词库未命中的内容提取其中的关键词提交到词库评审队列评审队列每周人工确认一次通过后自动追加到词库词库版本管理每次更新加版本号和变更日志{version:2025-07-01-v2,changes:{新增:[纯天然,无添加],删除:[],修改:{第一:降级为警告}![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9e179dbd1f41441d84a68cee1b15bed4.png#pic_center)},update_time:2025-07-01 10:00:00}版本历史保留在词库文件的第二个Sheet里出问题时可以回滚。速查表/常见报错报错/问题场景解决违禁词漏检关键词在内容中但未命中检查内容是否包含变体加了空格/符号加正则变体匹配误伤合规内容白名单未覆盖维护白名单定期补充合规短语API超时第三方服务不可用降级为警告标记人工复审不定为高危避免误拦MemoryError词库太大10000词分组匹配先匹配高危再匹配其他用Python的in操作代替影刀循环内容编码问题从数据库读出的内容是乱码确认数据库连接的charset设为utf8mb4正则匹配报错词库中的正则格式有误正则匹配前用try-except包裹格式错误时降级为普通字符串匹配UPDATE误操作条件不精确导致批量更新UPDATE前先SELECT验证行数确认无误再执行飞书通知过长高危内容列表超过消息长度限制消息内只放内容ID摘要命中词完整列表以Excel附件发送词库版本混乱多人同时修改词库词库文件锁定机制写操作前检查是否有其他流程在读审核速度慢每条内容调API等待时间长批量调用API一次送多条内容减少HTTP往返次数补充两个实战经验一、分类词库优于一个大词库。把违禁词按极限词“医疗词”“金融词”“诱导词”色情词分类存放匹配时按内容类型选择对应的词库子集——商品描述主要检查极限词和医疗词营销文案额外检查诱导词。分层匹配既能提速也能降低误伤。二、审核结果的可追溯性很重要。每条审核结果都要存谁审核的RPA还是人工、什么时候审核的、命中了什么词、最终处置是什么。万一被平台处罚可以拿出审核记录证明我们做了合规检查该项目是审核流程中的疏漏而非主观故意。内容标签内容合规审核、违禁词检测RPA、风险预警自动化、内容安全、审核报告作者林焱
返回列表