L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

sanctions-screening

sanctions-screening

全球制裁筛查智能引擎。对公司/个人进行全球制裁匹配、出口管制检查,覆盖 100+ 名单,生成含证据截图合规报告。默认执行变体确认;若用户明确给出一个或多个名称并要求只按这些名称搜索,则必须严格使用该名称集合,禁止自动扩展变体。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: sanctions-screening description: 全球制裁筛查智能引擎。对公司/个人进行全球制裁匹配、出口管制检查,覆盖 100+ 名单,生成含证据截图合规报告。默认执行变体确认;若用户明确给出一个或多个名称并要求只按这些名称搜索,则必须严格使用该名称集合,禁止自动扩展变体。

全球制裁筛查智能引擎

架构概览

三层筛查 + 法律影响分析 + 专业 PDF 报告

用户输入实体名
      │
      ▼
┌─────────────────┐
│ 第一层:初筛      │ ← OpenSanctions API (/match 端点)
│ (第三方聚合)      │    覆盖 100+ 全球制裁名单
└────────┬────────┘
         │ 命中?
    ┌────┴────┐
    │ 否      │ 是
    ▼         ▼
  清除    ┌────────────────┐
          │ 第二层:官方校验  │ ← 浏览器直连 10+ 官方网站
          │ (政府官网)       │    截图取证 + 时间戳
          └────────┬───────┘
                   ▼
          ┌────────────────┐
          │ 第三层:情报搜索  │ ← Tavily API (28 个受信源)
          └────────┬───────┘
                   ▼
          ┌────────────────┐
          │ 法律影响分析     │ ← 参见 references/legal_implications.md
          └────────┬───────┘
                   ▼
          ┌────────────────┐
          │ PDF 专业报告     │ ← scripts/generate_report.py (Edge Headless)
          └────────────────┘

关键原则: OpenSanctions 是第三方聚合数据,仅用于初筛。即使初筛未命中,也会生成官方校验计划(防止 API 故障导致漏报)。

🔴🔴🔴 强制执行工作流(含路径确认) 🔴🔴🔴

最高优先级指令: 当用户要求对某实体进行制裁筛查时,必须先完成「阶段 0:路径确认」,获得用户明确回复后,才能执行任何脚本。禁止跳过路径确认直接运行命令。 路径确认完毕后,阶段 1-4 必须全部自动执行,不得中途停下来询问用户。

阶段 0:意图识别 + 搜索模式确认 ⛔ 必须先完成,禁止跳过

这是整个工作流中唯一一次交互暂停点。在用户回复之前,禁止执行任何 python 命令。

收到筛查请求后,你自己先做两件事:

(1)判断实体类型:根据用户输入的名称,用你的知识判断是公司还是个人。

(2)先判断搜索模式,再决定是否生成变体:

模式 A:全量变体模式(默认)

如果用户只是说“筛查华为 / Huawei / 大疆 / DJI”,没有明确限制只搜一个字符串,则进入默认模式:自动生成搜索变体。🔴 你必须覆盖以下所有类别,通常至少生成 8-10 个变体。禁止只生成 2-3 个就交差。(部分网站对大小写敏感,所以大小写变体必不可少):

  • 英文简称,含大小写变体(如 "DJI"、"dji"、"Dji")
  • 英文全名(如 "SZ DJI Technology Co., Ltd.")
  • 英文通用名(如 "DJI Technology")
  • 中文全名(如 "深圳市大疆创新科技有限公司")
  • 中文简称(如 "大疆"、"大疆创新")
  • 拼音/音译变体(如 "dajiang")
  • 常见缩写(如 "HW" 代表华为)
  • 已知重要子公司(如 "DJI Europe B.V."、"HiSilicon")

然后向用户展示变体列表 + 自然语言说明,请求确认:

🏢 我判断 「<用户输入>」 是 公司/法人实体(如果判断错了请纠正)。

🔍 我拟使用以下变体对 10 个全球制裁源进行全量筛查。每个变体都会分别在各网站搜索框搜索并截图取证,因为部分制裁网站对大小写敏感,所以会覆盖大写、小写、首字母大写等多种形式。

#搜索变体说明
1DJI英文简称-大写(主搜索词)
2dji英文简称-小写
3SZ DJI Technology Co., Ltd.英文注册全名
4DJI Technology英文通用名
5大疆中文简称
6大疆创新中文常用名
7深圳市大疆创新科技有限公司中文注册全名
8dajiang拼音变体
9DJI Europe B.V.已知子公司

📂 报告默认输出:

  • PDF(最终交付):<Skill根目录>/<实体名>_sanctions_report.pdf
  • HTML(在线浏览):<Skill根目录>/<实体名>_sanctions_report.html

请确认:回复**「确认」开始筛查。你也可以告诉我需要增加或删除**哪些变体(增加的变体同样会走完整筛查流程)。

模式 B:用户指定名称集合模式(用户明确要求时)

如果用户明确表达以下意思之一,必须进入“用户指定名称集合模式”,禁止自动生成变体,禁止再展示 8-10 个变体表:

  • “只筛这个名字”
  • “只筛这几个名字”
  • “单个名称 / 两个名称 / 三个名称 / 四个名称 / 多个名称”
  • “exact name / exact string / exact names”
  • “不要变体”
  • “仅搜索 huawei”
  • “只查 DJI 和 dji,不要扩展”
  • “只查这 4 个名字,不要自动补全”

此时你只能使用用户明确给定的名称集合进行搜索,不能自动补全全名、中文名、拼音、大小写变体、子公司。用户给 1 个就搜 1 个,给 2 个就搜 2 个,给 N 个就搜 N 个。

此时请改为发送下面这种确认文案:

🏢 我判断 「<用户输入>」 是 公司/法人实体(如果判断错了请纠正)。

🔍 你要求执行用户指定名称集合筛查。我将只使用你明确给出的这些名称在全部制裁源中搜索,不会自动扩展任何变体(不补全全名、别名、中文名、拼音、子公司或大小写变体)。

本次将使用的名称集合(1-N 个,严格按你提供的列表执行):

#名称
1<名称1>
2<名称2>
3<名称3>
4<名称4>

📂 报告默认输出:

  • PDF(最终交付):<Skill根目录>/<实体名>_sanctions_report.pdf
  • HTML(在线浏览):<Skill根目录>/<实体名>_sanctions_report.html

请确认:回复**「确认」开始按上述名称集合**执行筛查;如果你希望改回全量变体模式,请直接说明。

等待用户回复后,你需要做以下准备(对全流程生效):

实体类型  → 公司 → screen_entity 用 --type LegalEntity,browser_verify 用 --type Entity
         → 个人 → screen_entity 用 --type Person,browser_verify 用 --type Individual

搜索策略  → 全量变体模式:变体列表中第一个英文简称作为主搜索词(--entity 参数)
         → 全量变体模式:其余所有变体通过 --extra-variants 传入
         → 全量变体模式:🔄 脚本会在每个源上,用每个变体分别搜索+截图+取证(全量覆盖)
         → 用户指定名称集合模式:若只有 1 个名称,给 screen_entity.py 和 browser_verify.py 都加 --exact-name-only
         → 用户指定名称集合模式:若有 2-N 个名称,主名称作为 entity,其余名称通过 --extra-variants 传入
         → 用户指定名称集合模式:只搜索用户明确给出的名称集合,不自动生成任何变体
         → 每源结果自动合并:最严重状态优先,截图和匹配记录汇总

报告路径  → 默认路径,或用户指定的路径

🔴 严格执行用户确认的变体列表:如果用户回复中修改了变体列表(删除某些、只保留某些、或新增某些),你必须严格按用户确认后的最终列表执行,不要自行补充被用户删掉的变体(如全名)。用户说"只看 DJI 和 dji",那就只传 DJI 和 dji,不要偷偷加回全名。


阶段 1:API 初筛(自动)

从 Skill 根目录运行:

# screen_entity.py 用官方全名 + LegalEntity/Person
python scripts/screen_entity.py "<官方全名>" --type <LegalEntity|Person> -o <report>.md

# 用户只给 1 个名称
python scripts/screen_entity.py "huawei" --type LegalEntity --exact-name-only -o <report>.md

# 用户明确只给 2 个名称
python scripts/screen_entity.py "Huawei" --type LegalEntity --extra-variants "huawei" -o <report>.md

# 用户明确给 4 个名称
python scripts/screen_entity.py "Huawei" --type LegalEntity --extra-variants "huawei" "HUAWEI" "Huawei Technologies" -o <report>.md

此步骤自动执行:OpenSanctions 初筛 + Tavily 情报搜索 + 生成浏览器校验计划。 🔴 禁止使用 --no-intel 参数 — Tavily 情报搜索是第三层核心环节,必须执行。 完成后立即进入阶段 2,不要停下来向用户报告中间结果。

阶段 2:官方网站浏览器校验(自动)

🚫 禁止自己写浏览器脚本。 直接运行已封装好的 scripts/browser_verify.py。 🚫 禁止裁减源列表。 不要加 --sources 参数,必须一次性跑完全部 10 个官方源。

命令模板(❗ 注意:主搜索词是最短常用名,不是全名):

# 公司示例(用户输入"大疆"或"dji")
# ❗ --entity 用最短常用名 "DJI"(会在每个网站搜索框搜索)
# ❗ --extra-variants 只放用户确认的变体
# ❗ --api-report 传入阶段 1 的报告路径(嵌入 OpenSanctions 交叉验证)
python scripts/browser_verify.py "DJI" \
  --type Entity \
  --extra-variants "dji" \
  -o screenshots/ \
  --report DJI_sanctions_report.html \
  --api-report DJI_api_report.md

# 用户只给 1 个名称
python scripts/browser_verify.py "huawei" \
  --type Entity \
  --exact-name-only \
  -o screenshots/ \
  --report huawei_sanctions_report.html \
  --api-report huawei_api_report.md

# 用户明确只给 2 个名称
python scripts/browser_verify.py "Huawei" \
  --type Entity \
  --extra-variants "huawei" \
  -o screenshots/ \
  --report Huawei_sanctions_report.html \
  --api-report Huawei_api_report.md

# 用户明确给 4 个名称
python scripts/browser_verify.py "Huawei" \
  --type Entity \
  --extra-variants "huawei" "HUAWEI" "Huawei Technologies" \
  -o screenshots/ \
  --report Huawei_sanctions_report.html \
  --api-report Huawei_api_report.md

# 个人示例(用户输入"张三")
python scripts/browser_verify.py "Zhang San" \
  --type Individual \
  --extra-variants "张三" "ZHANG SAN" "zhang san" \
  -o screenshots/ \
  --report ZhangSan_sanctions_report.html \
  --api-report ZhangSan_api_report.md

关键说明:

  • 第一个参数(entity)用最短常用英文名(如 "DJI"、"Huawei")
  • 默认模式下,--extra-variants — 官方全名/中文名/其他别名。🔄 每个变体都会在每个源上全量搜索+截图+取证
  • 用户指定名称集合模式下,--extra-variants — 用户明确给出的其余名称(可传 1-N 个);只搜索用户给出的列表,不自动扩展
  • --exact-name-only — 只搜索输入的单个名称,禁止自动扩展任何变体
  • --type Entity|Individual — 对应阶段 0 用户回答
  • --report <路径> — 直接输出 HTML 报告

⚠️ 重要:不要加 --sources 参数! 默认会自动校验全部 10 个官方源(OFAC、BIS CSL、DoD 1260H、SAM.gov、FCC、UK、UN、EU、AU、CA)。

此脚本自动完成:

  • 访问全部 10 个官方制裁搜索网站;默认模式下用全名 + 所有变体逐一搜索
  • 若启用“用户指定名称集合模式”,则只搜索用户明确给出的 1-N 个名称,无论是 1 个、2 个、4 个还是更多
  • 分页截图:如果搜索结果有多页,逐页翻页截图
  • PDF 逐页截图 + 精确高亮:DoD 1260H 等 PDF 名单,逐页 PageDown + PyMuPDF 黄色高亮
  • XLSX 下载分析:澳大利亚 DFAT 名单下载 XLSX,pandas 分析后渲染截图
  • 截图取证并保存到指定目录
  • 输出汇总结果表(命中/清除/需人工确认)

首次使用需安装依赖:

pip install playwright
python -m playwright install chromium

完成后立即进入阶段 2.5,不要停下来向用户报告中间结果。

阶段 2.5:误中审查(自动,禁止跳过)

🔴🔴🔴 此步骤必须在撰写报告之前完成,绝对禁止跳过。 跳过此步骤将导致报告包含大量虚假命中,质量不可接受。

你必须按顺序执行以下操作:

步骤 1:读取审查指南(完整的判断规则在这里):

read_file: references/false_positive_check.md

步骤 2:无需手动操作 — FP 分析已在 browser_verify.py 报告生成阶段自动完成:

  1. 报告生成时自动调用 OpenSanctions API 获取交叉验证数据
  2. 核心清单(ofac, bis_csl, dod_1260h, sam, uk, un)的 HIT → 一律标记为确认命中
  3. 泛化清单(eu, au, ca)的 HIT 自动检查:
    • ISO 国家代码碰撞 → 疑似误中
    • OpenSanctions 无该清单佐证 → 🟡 疑似误中
    • EU regime 列表泛化 → 疑似误中
  4. 报告 HTML 中的侧栏图标、汇总表、源 section 标题、Evidence List badge、Executive Summary 数字全部自动更新

⚠️ 禁止:不要手动写脚本修改报告 HTML 中的 badge/icon/数字。所有 FP 标记已在生成阶段完成。 如需调整判断规则,修改 browser_verify.py 中的 SOURCE_TO_OS_DATASETS、CORE_HIT_SOURCES、FP_CANDIDATE_SOURCES 配置。

步骤 3:检查报告中的判断结果,如有异议直接反馈给用户。

完成后立即进入阶段 3。

阶段 3:撰写完整证据报告(自动)

将阶段 1、阶段 2、阶段 2.5 的误中判断全部整合为一份完整的 Markdown 证据报告。报告必须包含:

  1. 报告头部:筛查编号、时间、实体信息、风险评级
  2. 法律影响分析:读取 references/legal_implications.md 模板,针对每个确认命中的清单给出法律影响
  3. OpenSanctions 初筛结果:匹配实体、命中名单、匹配分数
  4. 官方校验证据:每个源的校验结果 + 截图内嵌 + 🟡 误中标注(如有)
  5. 情报摘要:Tavily 新闻搜索结果
  6. 管理层底线结论:参考 references/legal_implications.md 中的 Executive Action Plan 模板
  7. 证据清单:所有截图和数据文件的汇总表

完成后立即进入阶段 4,不要停下来向用户报告中间结果。

阶段 4:交付最终报告(自动)

browser_verify.py 已自动生成专业 HTML 报告和 PDF 报告(PDF 默认始终生成,可用 --no-pdf 跳过)。

报告交付时,你必须在回复中附上以下内容(不可省略):

  1. PDF 报告文件路径(最终交付物,自动通过 Playwright 从 HTML 渲染,含页眉页脚页码)

  2. HTML 报告文件路径(在线浏览版,含侧栏目录、截图、交叉验证、误中标注)

  3. 🧠 误中分析结论(阶段 2.5 结果)——逐个 HIT 列出判断和理由:

## 🧠 AI 合规分析师误中判断

| 源 | 判断 | 理由 |
|----|------|------|
| [源名] | 🔴 确认命中 | [命中记录全名与搜索实体一致的证据] |
| [源名] | 🟡 疑似误中 | [具体误中模式:如 ISO 碰撞/类型不匹配/部分匹配] |
  1. 综合风险等级(排除疑似误中后的判断)
  2. 建议

环境与依赖

依赖安装

脚本仅使用 Python 标准库 + 1 个第三方包。如缺少则安装:

# 核心依赖(仅 markdown 是第三方包)
pip install markdown

# 可选:澳大利亚 DFAT XLSX 分析需要
pip install pandas openpyxl

工作目录

所有脚本必须从 Skill 根目录执行(scripts/ 之间有相互导入依赖)。

API Key

在 Skill 根目录创建 .env(可参考 .env.example),脚本启动时由 env_loader 自动加载。

  • OPENSANCTIONS_API_KEY:OpenSanctions 聚合初筛(必填,用于 match / 交叉验证)
  • TAVILY_API_KEYS:逗号分隔的多个 Tavily key,配额耗尽时自动轮换(推荐)
  • TAVILY_API_KEY:单 key 备选

法律影响分析

对每个命中清单,报告中必须包含法律影响分析和咨询建议。模板参见 references/legal_implications.md。

结构:

  1. 法律影响 (Legal Impact): 引用具体法规/行政令号
  2. 审批政策 (Licensing Policy): 推定拒绝/逐案审查等
  3. 咨询建议 (Advisory): 面向客户的具体行动建议
  4. 管理层底线结论 (Executive Action Plan): 总结性决策建议

中文实体名处理

中文实体名在默认模式下须自动转换为多种搜索变体:

  • 中文原名 → 拼音变体 → 英文商号 → 常用别名
  • 例:大疆 → dji, SZ DJI Technology, Da Jiang Innovations

变体生成逻辑在 scripts/fuzzy_match.py 中实现。若用户明确要求只按给定名称集合筛查,则不要调用这套自动扩展逻辑。

报告解读

风险等级

评分等级含义行动建议
56-80🛑 CRITICAL极高风险立即停止交易
36-55🔴 HIGH高风险升级审批 + 法律意见
20-35🟠 MEDIUM中风险增强尽职调查
8-19🟡 LOW低风险持续监控
0-7🟢 CLEAR清除正常推进

参考文档

详细信息参见 references/ 目录:

  • us_lists_coverage.md — 美国 5 大核心清单 + 13 个 CSL 子清单完整覆盖指南
  • legal_implications.md — 各清单法律影响分析模板和咨询意见模板
  • country_risk_tiers.md — 国家/地区风险分级表
  • red_flags_checklist.md — BIS "Know Your Customer" 红旗检查清单

脚本索引

脚本用途
screen_entity.py核心筛查引擎(三层架构)
official_verify.py官方政府网站直连校验(生成浏览器操作指令)
generate_report.py专业 PDF 报告生成(封面页 + 证据内嵌 + Chrome/Edge Headless)
opensanctions_search.pyOpenSanctions API 查询
tavily_search.pyTavily 情报搜索
batch_screen.py批量筛查
fuzzy_match.py模糊匹配和中文名变体生成
risk_scorer.py8 维度风险评分引擎

免责声明

  • 本工具仅供参考,不构成法律意见
  • OpenSanctions 为第三方聚合数据,命中结果需通过官方源校验
  • 制裁名单持续更新,筛查报告建议有效期不超过 7 天
  • 最终合规决策应咨询具有执业资格的律师或合规专家
Skills enregistrées