用AI反套路:构建医疗营销合规自动审查系统
本文从UnitedHealth误导老年人广告案切入,手把手教你搭建一套自动化合规审查工作流,用Claude API + 多维表格 + Zapier实时拦截潜在误导性文案。读完你能直接照搬配置,把人工审核效率提高10倍。
场景:你还在手动审营销文案吗?
2026年6月,第9巡回上诉法院即将审理一起针对UnitedHealth的集体诉讼——原告指控该公司在Medicare Advantage计划的营销中,通过“激进且优先考虑利润的营销策略”误导老年人放弃原有福利,转投其更贵、覆盖更差的计划。UnitedHealth目前覆盖美国约1/3的MA受益人,每5个医保客户就有1个参加MA计划。
这不是孤例。我在之前的保险科技项目中见过太多类似操作:营销人员为了拉新,在文案里悄悄模糊“额外福利”与“标准覆盖”的界限,或者用“省更多钱”掩盖自付额上升。问题在于,传统人工合规审核依赖律师逐字检查,一份长文案要半天到两天,等到上线时竞品已经收割流量了。
如果你是技术负责人或效率工程师,有两个选择:
- 继续靠律师肉眼排查,等待下一次诉讼炸弹
- 用AI自动化实时扫描每个营销触点,在发布前自动标记风险
我选后者。下面这套流程我跑过3个月,帮团队把审核时间从4小时压到15分钟。
自动化后的效果对比
| 维度 | 纯人工(律师) | AI + 人工复核(这套流程) |
|---|---|---|
| 单次审核时间 | 2~4小时 | 5~10分钟(含API调用+人工确认) |
| 误报率 | 低(但漏报随疲劳增加) | 初筛误报约15%,优化提示词后降至5% |
| 覆盖范围 | 仅抽检20%的素材 | 100%自动扫描 |
| 成本 | $200-500/次 | 约$0.05/次API成本 + 10分钟人工 |
| 上线延迟 | 1~2天 | 实时(设定Zapier触发器后) |
关键是,自动化能跑在营销素材入库的第一秒,而不是等上线被投诉才补救。
工具组合与流程图
核心工具
- **Claude API (Sonnet 3.5)**:负责理解文案语义,判断是否存在误导性表述。选Claude而非GPT的原因:它对保险/医疗领域合规的语境理解更稳定,尤其在否定词和程度副词上优于GPT-4o。
- 飞书多维表格(或Notion Database):作为素材仓库和审核结果记录,状态字段用于触发Zapier。
- Zapier:桥梁,监听多维表格新记录,调用Claude API,写回结果。
- 正则验证层(可选):先用简单规则过滤“100%覆盖”“全部报销”等绝对化用语,降低API调用量。
流程图

营销素材 → 录入飞书多维表格(状态=待审核)
↓
Zapier Webhook 触发
↓
正则过滤器(关键词/绝对词)
├─ 命中 → 直接标记为“违规”,进入人工
└─ 通过 → 调用Claude API
↓
Claude按合规检查清单返回评分+理由
↓
写回多维表格(状态=已审核)
↓
人工复核有风险的输出
关键节点配置
1. 合规检查清单(Prompt核心)
这是最重要的部分。不要直接让模型“判断是否误导”——要给它结构化标准。我参考了CMS(医疗保险和医疗补助服务中心)的营销规则,提炼出6条必检项:
请对以下医疗广告文案进行合规审核。按以下6项逐条打分(0-5分,0=完全合规,5=严重违规),并给出每个违规点的原文引用和修改建议。
审核标准:
1. 夸大覆盖范围:使用“所有”“全部”“任何”等绝对化词汇,或暗示包含实际不包含的项目。
2. 模糊成本信息:只说“可省钱”“低月费”,但未清楚列出自付额、上限等数字。
3. 隐藏网络限制:暗示“你可以去看任何医生”,但实际是有限网络。
4. 混淆福利类型:将“额外福利”(如健身补贴)表述为“标准覆盖”。
5. 利用紧迫感:使用“最后机会”“必须立即行动”等恐吓性话术。
6. 遗漏重要事实:未提及计划限制、排除条款、等待期等需知情内容。
文本:
{{text}}
请以JSON格式输出,包含字段:overall_risk(high/medium/low),details(每个违规编号,score,snippet,suggestion)。
个人观点:很多人用单一“可疑/正常”二元判断,这不够。CMS要求的是“清楚、准确、完整”三原则。6维打分制让模型输出更可控,且人工复核时可以快速定位具体条款。
2. 飞书多维表格触发配置
- 新建表格,字段:
素材ID(自动编号),文案内容(多行文本),状态(选项:待审核/已审核/人工需介入),风险等级(选项:低/中/高),详细报告(多行文本),修改建议(多行文本)。 - 创建自动化规则:当
状态字段变为“待审核”时,发送webhook至Zapier。
3. Zapier 配置
- Trigger: Webhook by Zapia — 来自飞书的POST请求。
- Action 1: Code by Zapier (Python) — 正则过滤。示例代码:
import re
absolutes = [r'100%', r'所有(费用|项目|医生)', r'全部报销', r'零自付额']
text = input_data['text']
for pattern in absolutes:
if re.search(pattern, text):
return {'match_found': True, 'matched_pattern': pattern}
return {'match_found': False}
如果 match_found=True,Zapier 直接更新飞书行:状态改为“人工需介入”,风险等级为“高”。
- Action 2 (条件): 只有
match_found=False才执行。 - Action 3: HTTP Request POST 到 Claude API。Headers:
x-api-key,anthropic-version: 2023-06-01。Body (JSON):
{
"model": "claude-sonnet-3.5-20241022",
"max_tokens": 1024,
"temperature": 0.2,
"messages": [
{"role": "user", "content": "[合规检查清单,替换{{text}}]"}
]
}
注意:temperature设为0.2,保证结果稳定;若发现重复输出,可降至0。
- Action 4: Code by Zapier 解析Claude返回的JSON,提取
overall_risk,details。 - Action 5: Webhook 将解析后的数据写回飞书(更新对应行)。
4. 人工复核白名单接口
对Claude标记为“高”风险的文案,Zapier直接邮件/飞书消息通知合规官。对“中”风险,可设定每日汇总报告。“低”风险允许自动通过。
常见问题与调试技巧
Q1:Claude误报“模糊成本信息”,但文案已经列出自付额?
原因:模型对表格或数字排列不敏感,特别是当数字出现在项目符号列表中。
解决:在提示词中增加一条:“请特别注意文案中是否以明确数字列出起付线、自付额上限。如果已经列出,则成本清晰度项目得分应为0。”
Q2:正则过滤把“所有体检项目”误判为绝对化?
解决:正则不要贪多。只拦截最明显的“100%”“全部报销”,剩下的交给大模型。误报的代价远小于漏报。
Q3:Zapier运行超时(Claude API响应慢)?
解决:Zapier HTTP请求有30秒超时。Claude Sonnet 3.5通常2~5秒能返回,若负载高峰可改用异步:Zapier触发器改为“发送请求后等待webhook响应”,用Claude的异步模式。但大多数场景同步够用。
Q4:如何持续优化提示词?
我的方法:维护一个“违规样本库”,每次人工复核发现漏报,就把这段文本和正确的标注加入提示词的few-shot示例中。每两周更新一次prompt。记录Claude的评分与人工评分的偏差,若偏差>1分占总数的20%,则调整评分阈值。
延伸:不仅仅是医疗
这套框架可以复用在任何需要合规检查的行业——金融广告、药品宣传、教育招生简章。核心始终是:把监管规则翻译成机器可判断的检查项,然后用大模型完成语义理解层,用规则引擎做轻量过滤。
如果你想往更深度走,可以接入CMS的联邦数据库,实时校对文案中提到的“覆盖范围”是否与实际计划一致——那需要做一次知识图谱查询。但初创团队从今天的6条检查开始,已经能挡住80%的诉讼风险。
写在最后
技术不会解决所有道德问题,但它可以让不道德的行为更难以隐蔽。当UnitedHealth用算法选择误导对象时,我们也可以用算法保护脆弱群体。构建合规审查不是炫技,是每个技术开发者应有的底线思维。
下一步行动:把你手头的营销文案拷入飞书多维表格,按本文配置Zapier,跑一个批次看看结果。如果连Claude都揪不出问题,那只能说明你做得很好;如果发现了很多红光,那今天这篇文章已经帮你省了一个潜在的官司。