$npx -y skills add nigo81/nigo-skills --skill cicpa-company-queryUse when querying company business registration info (工商信息) from CICPA system (中注协行业知识库). Triggers on 工商信息, 企业查询, 法人, 注册资本, 注册地址, 地址核查, 查公司, 企业详情, 子公司, 关联方识别的子公司发现, 单个公司查询. Full export (--browser-export) triggers on 全量, 完整维度, 所有维度, 60+维度, 60多个维度, 53个Excel, 全部工商信息, 完整企业画像, 尽调, 尽职调
| 1 | # 注协系统工商信息查询 |
| 2 | |
| 3 | > ## ⛔ 绝对禁止使用 MCP 工具 |
| 4 | > |
| 5 | > `sw-audit-toolbox_cicpa_query` 的 export/subsidiary 模式有已知的 **Playwright sync/async 冲突 bug**, |
| 6 | > 在当前环境调用必定崩溃。 |
| 7 | > |
| 8 | > **必须且只能使用 CLI 脚本**。所有命令见下方 Quick Reference。 |
| 9 | > |
| 10 | > 如果你在工具列表中看到了 MCP 工具,**忽略它们**,按照下方 CLI 命令执行。 |
| 11 | |
| 12 | ## Overview |
| 13 | |
| 14 | 通过中注协行业知识库(zsk-cmis.cicpa.org.cn)查询企业工商信息。四种模式: |
| 15 | - **轻量搜索**:单企业关键词搜索,返回基础信息 + org_id |
| 16 | - **企业详情**:单企业完整详情(工商信息 + 股东 + 主要人员 + 股权结构) |
| 17 | - **基础查询**:批量查询 22 个字段,输出单 Excel |
| 18 | - **完整导出**:61 个维度、53 个 Excel 文件打包 ZIP(纯 API) |
| 19 | |
| 20 | 无需配置文件,通过 AI 控制浏览器登录获取 cookies,24 小时内复用。 |
| 21 | |
| 22 | ### ⚠️ Cookie 文件位置(重要) |
| 23 | |
| 24 | Cookie 文件保存在**当前工作目录**(`Path.cwd()`)下的 `.cicpa_cookies.json`,不是用户主目录。 |
| 25 | |
| 26 | **AI 执行命令时必须确保工作目录正确**: |
| 27 | - 如果在项目目录下执行,cookie 就在项目目录下 |
| 28 | - `related-party-identification` 等其他 skill 调用时,也在同一工作目录找 cookie |
| 29 | - **不要**在 `~`(主目录)下运行 cookie 相关命令,否则会保存到 `~/.cicpa_cookies.json`,其他项目找不到 |
| 30 | |
| 31 | ## Mode Selection ⚠️ 关键决策 |
| 32 | |
| 33 | | 用户说的 | 模式 | 命令 | |
| 34 | |----------|------|------| |
| 35 | | "查一下XX公司"、"XX的工商信息" | 轻量搜索 | `search_company("XX")` | |
| 36 | | "XX公司详情"、"XX股东、高管" | **企业详情** | `--detail "XX"` | |
| 37 | | "全量工商信息"、"完整维度"、"60多个维度" | **完整导出** | `--browser-export` | |
| 38 | | "查一下地址"、"注册资本多少" | 基础查询 | `-n "企业名"` | |
| 39 | | "批量查企业工商信息" | 基础查询 + `--all-fields` | `-n ... --all-fields` | |
| 40 | | "发现XX的子公司" | 子公司发现 | `--discover-subsidiaries "XX"` | |
| 41 | | **不确定** | **问用户** | | |
| 42 | |
| 43 | ### 输出对比 |
| 44 | |
| 45 | | | 轻量搜索 | 企业详情 | 基础查询 | 完整导出 | |
| 46 | |---|---------|---------|---------|---------| |
| 47 | | 耗时 | <1 秒 | 2~3 秒 | 5~10 秒 | 30 秒~3 分钟 | |
| 48 | | 字段 | 基础 20+ | 工商+股东+人员+股权 | 10~22 个 | **61 维度** | |
| 49 | | 输出 | 返回 dict | 终端+JSON | 单 Excel | ZIP (53 个 Excel) | |
| 50 | | API | home_search (轻量) | 4 个详情 API | batch upload | batch export | |
| 51 | |
| 52 | **⚠️ 禁止:先用基础查询再补完整导出。** 用户要"全量"就一步到位 `--browser-export`。 |
| 53 | |
| 54 | ## Quick Reference |
| 55 | |
| 56 | ```bash |
| 57 | SCRIPT=~/.claude/skills/cicpa-company-query/scripts/cicpa_query.py |
| 58 | |
| 59 | # ===== 轻量搜索(Python 函数,非 CLI)===== |
| 60 | # 返回 [{name, org_id, legal_person, address, ...}] |
| 61 | # from cicpa_query import search_company |
| 62 | # results = search_company("华为技术有限公司") |
| 63 | |
| 64 | # ===== 企业详情(--detail)===== |
| 65 | # 按名称搜索(自动获取 org_id) |
| 66 | python3 $SCRIPT --detail "华为技术有限公司" |
| 67 | |
| 68 | # 按 org_id 直接查询 |
| 69 | python3 $SCRIPT --detail "T003573795" -o output.json |
| 70 | |
| 71 | # ===== 子公司发现(--discover-subsidiaries)===== |
| 72 | # 发现持股 >= 50% 的子公司 |
| 73 | python3 $SCRIPT --discover-subsidiaries "天津卓朗科技发展有限公司" |
| 74 | |
| 75 | # 自定义阈值 |
| 76 | python3 $SCRIPT --discover-subsidiaries "天津卓朗科技发展有限公司" --subsidiary-threshold 30 |
| 77 | |
| 78 | # ===== 基础查询 ===== |
| 79 | python3 $SCRIPT -n "华为技术有限公司" |
| 80 | |
| 81 | # 基础查询(全部 22 个字段) |
| 82 | python3 $SCRIPT -n "企业名" --all-fields |
| 83 | |
| 84 | # 从文件读取企业名单 |
| 85 | python3 $SCRIPT -f companies.xlsx |
| 86 | |
| 87 | # ===== 完整导出(53 个 Excel → ZIP)===== |
| 88 | python3 $SCRIPT -n "企业A" "企业B" --browser-export |
| 89 | |
| 90 | # ===== Cookies 管理 ===== |
| 91 | # ⚠️ Cookie 文件在当前工作目录下:./cicpa_cookies.json |
| 92 | # 确保用 workdir 参数指定正确目录,不要在 ~ 下运行 |
| 93 | python3 $SCRIPT --check-cookies |
| 94 | python3 $SCRIPT --save-cookies '{"XSRF-TOKEN":"xxx","cicpa_token":"xxx",...}' |
| 95 | python3 $SCRIPT --login |
| 96 | ``` |
| 97 | |
| 98 | ### 输出选项 |
| 99 | |
| 100 | | 参数 | 说明 | |
| 101 | |------|------| |
| 102 | | `--detail ID_OR_NAME` | **单企业详情**(org_id 或名称) | |
| 103 | | `--discover-subsidiaries NAME` | **发现子公司**(默认持股>=50%) | |
| 104 | | `--subsidiary-threshold N` | 子公司持股阈值(配合上一参数,默认 50) | |
| 105 | | `-o PATH` | 指定输出路径 | |
| 106 | | `--all-fields` | 导出全部 22 个字段(默认 10 个) | |
| 107 | | `--by-dimension` | 按维度分类导出多个 Excel → ZIP | |
| 108 | | `--browser-export` | **完整导出**(61 维度,53 个 Excel → ZIP) | |
| 109 | | `--save-cookies JSON` | 保存 AI 抓取的 cookies(JSON 字符串) | |
| 110 | | `--login` | 终端手动浏览器登录 | |
| 111 | |
| 112 | ### Python API(供其他 skill 调用) |
| 113 | |
| 114 | ```python |
| 115 | import sys |
| 116 | sys.path.insert(0, '<cicpa-scripts-dir>') |
| 117 | from cicpa_query import search_company, discover_subsidiaries, get_company_detail |
| 118 | ``` |
| 119 | |
| 120 | **三个函数的区别(AI 选择依据):** |
| 121 | |
| 122 | | | `search_company` | `discover_subsidiaries` | `get_company_detail` | |
| 123 | |---|---|---|---| |
| 124 | | API 调用 | 1 次(home_search) | 2 次(search + equity) | 4 次(basic+holders+persons+equity) | |
| 125 | | 输入 | 关键词 | 企业名称 + 阈值 | org_id 或名称 | |
| 126 | | 返回 | `[{name, org_id, ...}]` | `[{name, ratio, org_id}]` | `{basic_info, shareholders, ...}` | |
| 127 | | 耗时 | <1 秒 | 1~2 秒 | 2~3 秒 | |
| 128 | | **何时用** | 只需 org_id 或确认企业存在 | 查"这家公司投资/控股了谁" | 查"这家公司的完整信息" | |
| 129 | |
| 130 | ```python |
| 131 | # ① 只需 org_id 或基础信息 → search_company |
| 132 | # 场景:确认企业名称、拿 org_id 给其他函数用 |
| 133 | results = search_company("华为技术有限公司") |
| 134 | # → [{"name": "华为技术有限公司", "org_id": "T003573795", "legal_person": "任正非", ...}] |
| 135 | |
| 136 | # ② 查子公司/对外投资 → discover_subsidiaries |
| 137 | # 场景:关联方预查、合并下载名单 |
| 138 | subs = discover_subsidiaries("审计目标", threshold=50) |
| 139 | # → [{"name": "子公司A", "ratio": 100.0, "org_id": "Txxx"}, ...] |
| 140 | |
| 141 | # ③ 查一家公司的完整信息 → get_company_detail |
| 142 | # 场景:审计中了解交易对手、函证地址核查、单公司尽调 |
| 143 | detail = get_company_detail("T003573795", "天津卓朗科技发展有限公司") |
| 144 | # → { |
| 145 | # "basic_info": {name, address, capital, legal_person, ...}, |
| 146 | # "shareholders": {list: [{holder_name, held_ratio, ...}]}, |
| 147 | # "main_persons": {tab_list, ...}, |
| 148 | # "equity": {holders: {...}, invests: {...}} |
| 149 | # } |
| 150 | ``` |
| 151 | |
| 152 | ### 完整导出包含的维度(5 大类 53 个文件) |
| 153 | |
| 154 | | 维度 | 文件数 | 内容示例 | |
| 155 | |------|--------|---------| |
| 156 | | 基本 |