Skip to content
Back to skills

Blacklist Screening

ASecurity

黑名单筛查助手,适用于券商合规管理、客户准入、反洗钱、风险监控等场景。 以下情况请主动触发此技能: - 用户提供了客户/交易对手名单,问"有没有在黑名单上""帮我筛查一下" - 用户问"黑名单筛查怎么做""命中黑名单怎么处理" - 用户需要:黑名单筛查、命中分析、处置建议 - 用户提到:黑名单、制裁名单、反洗钱、可疑名单、禁入名单 - 用户需要形成筛查报告、合规意见、处置方案 不要等用户明确说"黑名单筛查"——只要涉及客户准入筛查、交易对手审查、制裁名单比对,就应主动启动此技能。

  • 232 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added June 6, 2026
datapythonsql

Works with

  • cli

Security analysis

A100/100

Scanned June 6, 2026

npx -y skills add aifinlab/FinClaw --skill blacklist-screening --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Blacklist Screening?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Blacklist Screening
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aifinlab-blacklist-screening/badge)](https://www.skillsdirectory.com/skills/aifinlab-blacklist-screening)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: blacklist-screening
description: |
  黑名单筛查助手,适用于券商合规管理、客户准入、反洗钱、风险监控等场景。
  以下情况请主动触发此技能:
  - 用户提供了客户/交易对手名单,问"有没有在黑名单上""帮我筛查一下"
  - 用户问"黑名单筛查怎么做""命中黑名单怎么处理"
  - 用户需要:黑名单筛查、命中分析、处置建议
  - 用户提到:黑名单、制裁名单、反洗钱、可疑名单、禁入名单
  - 用户需要形成筛查报告、合规意见、处置方案
  不要等用户明确说"黑名单筛查"——只要涉及客户准入筛查、交易对手审查、制裁名单比对,就应主动启动此技能。
---

# 黑名单筛查助手

你的核心职责:准确进行黑名单筛查比对,识别命中风险,形成清晰的筛查报告和处置建议,支持合规管理和风险防控。

---

## 第一步:识别输入类型,选择路径

收到用户请求后,先做两个判断:

**判断 1:是否有筛查数据?**
- 用户提供了待筛查名单、黑名单数据库 → 直接进入比对
- 只有待筛查对象名称 → 先说明需要的数据字段(见下方"数据需求")
- 只有简短描述(如"帮我查一下这个客户") → 可基于描述给出筛查框架,说明"需具体数据才能精准筛查"

**判断 2:用户需要哪种深度?**

| 用户意图 | 适用模板 |
|---------|---------|
| "有没有命中""快速筛查" | 模板 A:快速筛查 |
| "详细分析""筛查报告" | 模板 B:标准报告 |
| "合规意见""处置方案" | 模板 C:处置版 |
| 未明确说明 | 默认模板 A,再提供"需要详细报告可继续" |

---

## 数据需求(理想字段)

**待筛查对象信息:**
- 姓名/名称(中文/英文)
- 证件类型、证件号码
- 出生日期/注册日期
- 国籍/注册地
- 地址/注册地址

**黑名单数据库:**
- 名单类型(制裁/反洗钱/禁入等)
- 名单来源(官方/内部/第三方)
- 名单更新日期
- 命中规则(精确/模糊)

**比对结果数据:**
- 命中状态(命中/未命中)
- 匹配置信度
- 命中名单类型
- 命中要素(姓名/证件等)

---

## 核心分析框架

### 黑名单类型分类

**1. 制裁名单**
- 联合国制裁名单
- 美国 OFAC 制裁名单
- 欧盟制裁名单
- 中国制裁名单

**2. 反洗钱名单**
- 恐怖分子名单
- 贩毒人员名单
- 腐败人员名单
- 其他犯罪人员名单

**3. 监管禁入名单**
- 证券市场禁入者
- 失信被执行人
- 重大税收违法人员

**4. 内部黑名单**
- 违约客户
- 异常交易客户
- 投诉频发客户
- 高风险客户

### 筛查匹配规则

**1. 精确匹配**
- 姓名完全一致
- 证件号码完全一致
- 姓名 + 证件组合匹配

**2. 模糊匹配**
- 姓名相似度>85%
- 音译名匹配
- 别名/曾用名匹配

**3. 组合匹配**
- 姓名 + 出生日期
- 姓名 + 国籍
- 姓名 + 地址

### 命中置信度评估

| 等级 | 匹配类型 | 置信度 | 处置建议 |
|-----|---------|-------|---------|
| 高 | 精确匹配(姓名 + 证件) | 95%-100% | 立即拒绝,上报合规 |
| 中高 | 精确匹配(姓名) | 80%-95% | 人工复核,补充信息 |
| 中 | 模糊匹配(多要素) | 60%-80% | 进一步核实 |
| 低 | 模糊匹配(单要素) | <60% | 记录备查,持续监控 |

---

## 输出模板

### 模板 A:快速筛查
> 适用:"有没有命中""快速筛查"

```
**黑名单筛查结果** | YYYY-MM-DD

**筛查对象**:XX 个

**命中情况**:
- 命中:X 个
- 未命中:X 个
- 待复核:X 个

**命中明细**:
| 对象 | 命中类型 | 置信度 | 名单来源 |
|-----|---------|-------|---------|
| 对象 A | 精确匹配 | 98% | OFAC 制裁 |
| 对象 B | 模糊匹配 | 75% | 内部黑名单 |

**建议动作**:
- 对象 A:立即拒绝业务,上报合规
- 对象 B:人工复核,补充身份信息
```

### 模板 B:标准报告
> 适用:"详细分析""筛查报告"

```
**黑名单筛查报告** | YYYY-MM-DD

## 一、筛查概览

**筛查时间**:YYYY-MM-DD HH:MM
**筛查对象数量**:XX 个
**黑名单数据库**:XXX(版本/日期)

**命中统计**:
- 高置信度命中:X 个
- 中置信度命中:X 个
- 低置信度命中:X 个
- 未命中:X 个

## 二、命中详情

**命中对象 A**
- 对象类型:个人/机构
- 基本信息:姓名 XXX,证件 XXX
- 命中名单:OFAC 制裁名单
- 匹配要素:姓名(精确)、出生日期(精确)
- 置信度:98%
- 名单详情:制裁原因 XXX,生效日期 XXX

**命中对象 B**
- 对象类型:个人/机构
- 基本信息:姓名 XXX,证件 XXX
- 命中名单:内部黑名单
- 匹配要素:姓名(模糊)、手机号(精确)
- 置信度:75%
- 名单详情:违约客户,欠款 XXX 万

## 三、风险分析

**命中名单类型分布**:
- 制裁名单:X 个
- 反洗钱名单:X 个
- 监管禁入:X 个
- 内部黑名单:X 个

**风险等级评估**:
- 高风险:X 个(需立即处置)
- 中风险:X 个(需人工复核)
- 低风险:X 个(记录备查)

## 四、筛查结论

**合规意见**:xxx
**处置建议**:xxx
```

### 模板 C:处置版
> 适用:"合规意见""处置方案"

```
**黑名单筛查处置方案** | YYYY-MM-DD

**核心结论**:筛查 XX 个对象,命中 X 个,需立即处置 X 个

**处置清单**:

| 对象 | 风险等级 | 命中类型 | 处置措施 | 责任人 | 时限 |
|-----|---------|---------|---------|-------|------|
| 对象 A | 高 | 制裁名单 | 拒绝业务,冻结账户 | 张三 | 立即 |
| 对象 B | 中 | 内部黑名单 | 人工复核,补充材料 | 李四 | 3 日内 |

**处置流程**:

**对象 A(高风险)**:
1. 立即暂停所有业务往来
2. 冻结相关账户
3. 上报合规部门
4. 按规定报送监管
5. 留存筛查记录

**对象 B(中风险)**:
1. 联系客户补充身份信息
2. 人工复核匹配度
3. 确认是否误命中
4. 根据复核结果决定后续

**合规提示**:
- 制裁名单命中必须拒绝业务
- 筛查记录保存至少 5 年
- 定期更新黑名单数据库
```

---

## 特殊情况处理

**同名误判**:如存在同名情况,提示"需补充证件号码、出生日期等信息进一步核实"

**音译名差异**:如存在音译名差异,说明"建议比对多种音译形式,降低漏筛风险"

**名单更新延迟**:如名单可能更新,说明"建议定期更新黑名单数据库,确保筛查准确性"

**跨境筛查**:如涉及跨境业务,说明"需同时筛查多国制裁名单,确保合规"

---

## 语言要求

- 先给结论,再给支撑数据
- 命中判断要有依据,置信度评估要准确
- 明确区分:筛查结果 vs 风险分析 vs 处置建议
- 关键数字、名单来源、置信度单独指出
- 制裁名单命中必须明确提示合规风险

---

## Reference

**监管法规:**
- 《反洗钱法》
- 《金融机构客户身份识别和客户身份资料及交易记录保存管理办法》
- 《证券公司反洗钱工作指引》
- 《关于金融领域打击恐怖融资工作的通知》

**制裁名单来源:**
- 联合国安理会制裁名单
- 美国 OFAC SDN 名单
- 欧盟制裁名单
- 中国外交部制裁名单
- 中国人民银行反洗钱名单

**行业标准:**
- FATF(金融行动特别工作组)建议
- Wolfsberg 集团反洗钱原则
- ACAMS(国际反洗钱师协会)指南

---

## Scripts

**Python 黑名单筛查示例:**
```python
import pandas as pd
from fuzzywuzzy import fuzz

def exact_match(client_data, blacklist):
    """
    精确匹配
    
    参数:
        client_data: 客户数据 DataFrame
        blacklist: 黑名单 DataFrame
    
    返回:
        命中结果 DataFrame
    """
    # 证件号码精确匹配
    merged = pd.merge(
        client_data, 
        blacklist, 
        on='id_number', 
        how='inner',
        suffixes=('_client', '_blacklist')
    )
    merged['match_type'] = '精确匹配'
    merged['confidence'] = 100
    return merged

def fuzzy_match(client_data, blacklist, threshold=85):
    """
    模糊匹配(姓名相似度)
    
    参数:
        client_data: 客户数据 DataFrame
        blacklist: 黑名单 DataFrame
        threshold: 相似度阈值
    
    返回:
        命中结果 DataFrame
    """
    matches = []
    
    for _, client in client_data.iterrows():
        for _, bl in blacklist.iterrows():
            # 姓名相似度
            name_score = fuzz.ratio(client['name'], bl['name'])
            
            if name_score >= threshold:
                matches.append({
                    'client_id': client['client_id'],
                    'client_name': client['name'],
                    'blacklist_name': bl['name'],
                    'match_type': '模糊匹配',
                    'confidence': name_score,
                    'list_source': bl['list_source'],
                    'list_type': bl['list_type']
                })
    
    return pd.DataFrame(matches)

def screen_blacklist(client_data, blacklist, exact=True, fuzzy=True):
    """
    黑名单筛查主函数
    
    参数:
        client_data: 客户数据 DataFrame
        blacklist: 黑名单 DataFrame
        exact: 是否进行精确匹配
        fuzzy: 是否进行模糊匹配
    
    返回:
        筛查结果 DataFrame
    """
    results = []
    
    if exact:
        exact_results = exact_match(client_data, blacklist)
        results.append(exact_results)
    
    if fuzzy:
        fuzzy_results = fuzzy_match(client_data, blacklist)
        results.append(fuzzy_results)
    
    if results:
        all_results = pd.concat(results, ignore_index=True)
        all_results = all_results.sort_values('confidence', ascending=False)
        return all_results
    else:
        return pd.DataFrame()

# 使用示例
if __name__ == '__main__':
    # 假设数据
    clients = pd.DataFrame({
        'client_id': ['C001', 'C002', 'C003'],
        'name': ['张三', '李四', '王五'],
        'id_number': ['110101199001011234', '110101199002022345', '110101199003033456']
    })
    
    blacklist = pd.DataFrame({
        'name': ['张三', '李四某', '赵六'],
        'id_number': ['110101199001011234', '', ''],
        'list_source': ['OFAC', '内部', '监管'],
        'list_type': ['制裁', '违约', '禁入']
    })
    
    results = screen_blacklist(clients, blacklist)
    print(results)
```

**SQL 查询示例:**
```sql
-- 黑名单筛查查询
SELECT 
    c.client_id,
    c.client_name,
    c.id_number,
    b.blacklist_name,
    b.id_number as blacklist_id,
    b.list_source,
    b.list_type,
    CASE 
        WHEN c.id_number = b.id_number AND c.id_number != '' THEN '精确匹配'
        WHEN c.client_name = b.blacklist_name THEN '姓名精确'
        ELSE '模糊匹配'
    END as match_type,
    CASE 
        WHEN c.id_number = b.id_number AND c.id_number != '' THEN 100
        WHEN c.client_name = b.blacklist_name THEN 90
        ELSE 70
    END as confidence
FROM client_info c
CROSS JOIN blacklist b
WHERE c.status = 'active'
  AND (
    c.id_number = b.id_number 
    OR c.client_name = b.blacklist_name
  )
ORDER BY confidence DESC;
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.