Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

进出口许可文档智能预审系统

v1.0.0

进出口许可文档智能预审系统。支持 PDF 和图片处理:自动提取合同号、出口国、进口商、总金额、数量、重量、合格证编号、生产商、报关口岸等字段,检测公章,按审核规则执行审核,生成 MD 和 JSON 审核报告。支持 CLI 和对话交互两种方式触发。

0· 33·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for njkahn/license-pre-audit.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "进出口许可文档智能预审系统" (njkahn/license-pre-audit) from ClawHub.
Skill page: https://clawhub.ai/njkahn/license-pre-audit
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install license-pre-audit

ClawHub CLI

Package manager switcher

npx clawhub@latest install license-pre-audit
Security Scan
Capability signals
CryptoCan make purchasesRequires sensitive credentials
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
技能名称与描述(PDF/图片字段提取、盖章检测、按规则生成 MD/JSON 报告、CLI/对话触发)与大多数代码文件一致:有 OCR、压缩包解压、规则引擎、表格/报告生成等实现。需要的本地工具(poppler、tesseract、python/pdfplumber)与 OCR/ PDF 处理目的相符. 例外:代码中调用 LLM(src/utils/llm-client.js)用于字段提取,但技能元数据没有声明任何必须的 API 凭证或主凭证,这与技能对外部 LLM 的依赖不一致,值得关注。
!
Instruction Scope
SKILL.md 强烈指示“助手必须直接读取生成的 .md 文件内容并把其原样作为 Markdown 发送到聊天界面”,并提供示例 shell 命令(cat $md_file)。就功能角度,这能保证表格渲染,但从安全/隐私角度这会使代理在运行时读取并外放一个本地文件(报告)。如果报告目录或文件内容被误导(包含敏感信息或被替换),这会导致数据泄露。SKILL.md 里还有可视为提示注入的指令风格(“必须/不要/不要只返回路径”),扫描器已报告 prompt-injection 模式(base64-block)。此外,index.js 实际也将 Markdown 输出到 stdout; SKILL.md 要求助手改为读取文件并发送,这改动扩大了代理读取本地文件的指令面。
Install Mechanism
清单没有 install spec,但仓库包含 install-and-run.sh 与 check-deps.js,这些脚本会自动检测并(在用户确认或静默模式下)通过 brew/apt-get/choco 执行安装、并可能调用 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/...)" 来安装 Homebrew 等外部脚本。自动安装依赖对 OCR/处理是合理的,但增加了风险:下载执行第三方安装脚本、以 sudo 执行 apt-get、调用外部包管理器都会在宿主机上作出改动。总体安装路径与技能目的相称,但用户应当审查/同意安装步骤并在受控环境执行。
!
Credentials
元数据声明没有任何必需的环境变量或主凭证,但代码调用了 callLLM(...) (src/utils/llm-client.js) 并 settings.json 包含 llmCache.encryptedConfig 字段,这暗示存在对 LLM 服务(需要 API key/凭证)的依赖。未声明任何 OPENAI_API_KEY / API_TOKEN 一类的必需 env 是不一致的:如果 llm-client 实际需要一个外部 API 密钥,那么要求用户设置这些凭证应被显式声明。除此之外,自动安装逻辑可能需要 sudo(apt)或管理员权限(choco)——这是与技能目的成比例的,但也属于额外权限。
Persistence & Privilege
技能没有设置 always:true,默认允许被用户触发或在代理规则允许下自动调用(这是平台默认)。没有证据显示技能尝试修改其他技能配置或强制驻留系统。唯一需要注意的“权限”是自动安装依赖时可能要求 sudo/管理员权限来安装系统级包;这与 OCR 功能直接相关 but should be granted explicitly by user.
Scan Findings in Context
[base64-block] unexpected: SKILL.md 或 references/settings.json 含有被检测为可能的注入或嵌入编码块(settings.json.llmCache.encryptedConfig 为一长串),这不是实现 OCR/字段提取所必需的可见结构。它可能是对 LLM 配置/缓存的序列化(合理),但也可能包含隐秘指令或嵌入数据;应审查解密/使用方式(查看 src/utils/llm-client.js 如何处理该值)。
What to consider before installing
要点与行动建议: 1) 在运行前审查 src/utils/llm-client.js:确认它调用的远端服务、使用的 URL、是否读取 process.env.*(例如 OPENAI_API_KEY、API_TOKEN),以及是否会将本地文件或敏感文本发送到未声明的第三方。若它需要 API 密钥,应在安装前明确知晓并仅提供最小权限凭证。 2) 注意 SKILL.md 要求“必须读取并直接发送生成的 .md 文件内容”。这在常用场景合理(向聊天界面展示报告),但也会导致将本地报告文件原样外放。仅在确定上传内容安全且系统隔离(非包含敏感凭证或私人数据)时才上传生产文件。建议先用非敏感示例文件测试。 3) 自动安装与 sudo:install-and-run.sh 与 check-deps.js 会尝试通过 brew/apt/choco/curl 安装工具(包括可能运行 curl | bash 的命令)。不要在生产主机上以 root/管理员权限直接运行这些安装脚本——在受控环境或虚拟机/容器中测试并手动核对每个安装命令。 4) 检查并清理 llmCache/ encryptedConfig:references/settings.json 含加密/序列化字段。弄清楚该值如何被解密/使用;如果包含密钥或远端配置,应避免直接信任仓库自带的密文。 5) 审计文件输出位置与权限:脚本会在 config.reportPath(默认为仓库下 ./assets/reports/)写入报告。确保该目录不会包含其他敏感文件且代理只读取预期的报告文件名模式。 6) 如果你想更高保证:在沙箱或短生命周期容器中运行首次执行以观察网络/进程行为,或手动安装依赖并在脱机模式(若可能)运行以确认行为。 额外信息会提升信心:完整查看 src/utils/llm-client.js 源码、检查是否有硬编码的远端 endpoint、以及确认该模块是否会上传整个文档内容(或仅摘要/字段)到外部服务。
src/utils/check-deps.js:82
Shell command execution detected (child_process).
src/utils/extract-archive.js:53
Shell command execution detected (child_process).
src/utils/llm-client.js:316
Shell command execution detected (child_process).
src/utils/pdf-ocr.js:20
Shell command execution detected (child_process).
Patterns worth reviewing
These patterns may indicate risky behavior. Check the VirusTotal and OpenClaw results above for context-aware analysis before installing.

Like a lobster shell, security has layers — review code before you run it.

latestvk975zvqh2pytkh2ay8ynbcvkjx85q6y8
33downloads
0stars
1versions
Updated 12h ago
v1.0.0
MIT-0

License Pre-Audit - 进出口许可文档智能预审系统

进出口许可文档智能预审系统,支持:

  1. CLI 命令行:直接指定目标文件夹或压缩包路径执行命令。
  2. 对话交互:在聊天界面输入触发词(如"审核"/"审核许可证"/"许可证"),然后上传文件夹或压缩包。

系统将自动解压、提取 PDF、图片 文件目标字段,根据审核规则 执行审核、检测公章,并生成结构化 JSON 报告和 Markdown 表格。

系统结构

license-pre-audit/
├── SKILL.md                    # 技能说明
├── references/                 # 配置文件
│   ├── audit-rules.json        # 审核规则配置
│   ├── doc-types.json          # 文档类型配置
│   ├── settings.json           # 上传格式、路径、输出路径、触发指令、缓存配置
│   └── demo/                   # 示例数据
│       ├── test/               # 示例文件夹
│       └── test.zip            # 示例压缩包
├── assets/                     # 运行时数据
│   ├── files/                  # 解压文件目录
│   └── reports/                # 报告输出目录
└── src/
    ├── index.js                # 主流程(整合 CLI+ 压缩包 + 表格)
    ├── prompts/                # Prompt 文件(MD 格式)
    │   ├── extract-fields.md   # 字段提取 Prompt
    │   └── audit-rules.md      # 审核规则 Prompt
    ├── utils/                  # 工具函数
    │   ├── pdf-ocr.js          # PDF/图片文本提取
    │   ├── stamp-detect.js     # 盖章检测
    │   ├── field-normalize.js  # 字段标准化
    │   ├── extract-archive.js  # 压缩包解压
    │   ├── generate-table.js   # 表格生成
    │   └── check-deps.js       # 依赖检测与自动安装(新增)
    └── rules/                  # 11 条审核规则
        ├── index.js            # 规则总入口
        ├── rule-stamp.js       # 规则 1: 盖章检查
        ├── rule-contract-no.js # 规则 2: 合同号
        ├── rule-exporter.js    # 规则 3: 出口国
        ├── rule-importer.js    # 规则 4: 进口商
        ├── rule-amount.js      # 规则 5: 金额检查
        ├── rule-quantity.js    # 规则 6: 数量检查
        ├── rule-weight.js      # 规则 7: 重量检查
        ├── rule-mtc-no.js      # 规则 8: 合格证编号
        ├── rule-manufacturer.js # 规则 9: 生产商
        ├── rule-customs.js     # 规则 10: 报关口岸
        └── rule-summary.js     # 规则 11: 审核摘要

🚀 快速开始

首次使用 - 自动检测依赖

技能首次运行时会自动检测依赖,如果缺少依赖会提示并询问是否自动安装:

# 首次运行会自动检测并安装缺失的依赖
node <技能路径>/src/index.js <路径>

# 输出示例:
🚀 License Pre-Audit - 依赖检测
═══════════════════════════════════════════
🖥️  检测到操作系统:MACOS
────────────────────────────────────────────────────────────
✅ python          - Python 3.x 运行时 - 已安装
✅ poppler         - PDF 转图片工具 - 已安装
❌ tesseract       - OCR 引擎(支持中英文) - 未安装
❌ pdfplumber      - Python PDF 文本提取库 - 未安装
────────────────────────────────────────────────────────────
📊 结果:2 个已安装,2 个缺失

🔍 发现缺失的依赖,准备自动安装...
是否继续自动安装缺失的依赖?(y/n): y

🚀 开始自动安装缺失的依赖...
📦 正在安装 tesseract...
   命令:brew install tesseract tesseract-lang
   安装进度:
────────────────────────────────────────────────────────────
... (安装过程)
────────────────────────────────────────────────────────────
✅ tesseract 安装成功!

跨平台支持

  • macOS: 使用 brew 自动安装
  • Linux (Ubuntu/Debian): 使用 apt-get 自动安装(需要 sudo)
  • Windows: 尝试使用 choco (Chocolatey) 自动安装,失败时提供手动安装指引

方式 1: CLI 命令行(文件夹)

# 审核文件夹中的所有文档
node <技能路径>/src/index.js <许可证文件夹路径>

# 示例(使用内置 demo 文件夹)
node ./src/index.js ../references/demo/test

方式 2: CLI 命令行(压缩包)

# 审核压缩包(zip/rar/tar.gz)
node <技能路径>/src/index.js <许可证压缩包路径>

# 示例(使用内置 demo 压缩包)
node ./src/index.js ../references/demo/test.zip

方式 3: 对话交互(推荐)

使用步骤

  1. 在对话界面输入触发词,如:审核/ 审核许可证 / 许可证( 触发词可在 references/settings.json 中配置 )
  2. 上传许可证压缩包(zip/rar/tar.gz)或 许可证文件夹(也可发送压缩包或文件夹的路径)
  3. 系统自动解压、提取、审核、生成报告
  4. 返回 Markdown 表格和 JSON 报告下载链接

输出:

  • JSON 报告:audit-result-<timestamp>.json
  • Markdown 表格:audit-result-<timestamp>.md

支持的输入格式

压缩包格式

  • ZIP: .zip
  • RAR: .rar
  • TAR: .tar, .tar.gz, .tgz

文档格式

  • PDF: .pdf
  • 图片: .jpg, .jpeg, .png, .webp

支持的文档类型

  1. 合同 (contract) - 包含"Contract"、"合同"等关键词
  2. 合格证 (certificate) - 包含"Quality Certificate"、"质量合格证书"等
  3. 许可证表单 (permitform) - 包含"Import/Export"、"许可证"等

字段提取

字段说明文档类型
contractNo合同编号contract, form
exportCountry出口国家contract, form
importerEn进口商英文contract, form
importerCn进口商中文contract, form
customsPort报关口岸form
mtcNo合格证编号certificate, form
manufacturer生产厂商certificate, form
bussDetial货物详情数组contract, form
totalAmount总金额contract, form
totalQuantity总数量contract, form
totalWeight总重量contract, form
hasStamp是否盖章certificate

审核规则(11 条)

  1. 盖章检查
  2. 合同号提取验证
  3. 出口国检查
  4. 进口商检查
  5. 金额检查(±5% 容忍度)
  6. 数量检查(±5% 容忍度)
  7. 重量检查
  8. 合格证编号检查
  9. 生产商检查
  10. 报关口岸检查
  11. 整体结果

输出格式

⚠️ 重要:Markdown 表格发送方式(企业微信/飞书/所有聊天平台)

核心要求:在对话交互模式(压缩包/文件夹上传)下,必须执行以下流程:

  1. 脚本生成报告index.js 生成 JSON 和 MD 报告文件
  2. 助手读取 MD 文件:脚本执行完成后,助手必须直接读取生成的 .md 文件内容
  3. 直接发送 Markdown:助手将 MD 文件内容原样作为 Markdown 发送到聊天界面(企业微信/飞书/其他平台)
    • 不要通过 console.logconsole.error 输出表格
    • 不要只返回文件路径
    • 必须读取文件内容并作为 Markdown 消息发送
  4. 平台兼容性:此方式适用于所有聊天平台(企业微信、飞书、Telegram、Discord 等),确保 Markdown 表格正确渲染

原因

  • console.log/error 输出的内容会被当作纯文本处理,Markdown 格式丢失
  • 只返回文件路径,聊天界面无法自动渲染
  • 只有直接发送 Markdown 内容,各平台才能正确渲染为表格

实现方式

# 脚本执行后,助手执行:
md_file=$(ls -t assets/reports/audit-result-*.md | head -1)
cat "$md_file"  # 读取并发送内容

1. Markdown 表格(压缩包模式)

在聊天界面或控制台直接显示二维表格:

检查项申请表合同/合格证预审结果
合同编号AFT250890AFT250890✅ 通过
出口国中国中国✅ 通过
进口商(英文)Stock CompanyStock Company✅ 通过
总金额47060¥47,060.00✅ 通过
总数量180千克1 lot❌不通过
合格证编号2025032601,0281198772025032601✅ 通过
生产商江苏国强镀锌实业有限公司江苏国强镀锌实业有限公司✅ 通过
盖章情况已盖章已盖章✅ 通过

横向: 申请表 | 合同/合格证 | 预审结果
纵向: 9 个检查项(合同编号、出口国、进口商、总金额、总数量、合格证编号、生产商、报关口岸、盖章情况)

上面是表格,表格下面是 整体结果 和 详细审核说明。

2. JSON 报告(完整详细信息)

{
  "timestamp": "2026-04-13T06:01:19.853Z",
  "folder": "../references/demo/test",
  "totalFiles": 3,
  "processedFiles": 3,
  "auditResults": [
    {
      "filename": "SC NO.JYIE-2025-137.pdf",
      "docType": "合同",
      "extractedFields": {
        "contractNo": "JYIE-2025-137",
        "exportCountry": "中国",
        "importerEn": "RAMATEX TEXTILES INDUSTRIAL SDN,BHD",
        "importerCn": "马来西亚利玛纺织有限公司",
        "totalAmount": "CNY980,000.00",
        "totalQuantity": "1 lot",
        "totalWeight": "",
        "bussDetial": [
          {
            "commodity": "Air condition system 空调系统",
            "quantity": "1 lot",
            "weight": "",
            "unitPrice": "980000 CNY",
            "amount": "980000 CNY"
          }
        ]
      },
      "hasStamp": true
    },
    {
      "filename": "angle bar.jpg",
      "docType": "合格证",
      "extractedFields": {
        "mtcNo": "2025032601",
        "manufacturer": "江苏国强镀锌实业有限公司"
      },
      "hasStamp": true
    },
    {
      "filename": "b699b609-cfa3-4de1-bc16-65a65d6f2ab8.png",
      "docType": "申请表",
      "extractedFields": {
        "contracNo": "JYIE-2025-137",
        "exportCountry": "中国",
        "importerCn": "马来西亚利玛纺织有限公司",
        "importerEn": "RAMATEX TEXTILES INDUSTRIAL SDN BHD",
        "customsPort": "上海海关",
        "bussDetial": [
          {
            "commodity": "角钢(除名加工外未经进一步加工)",
            "quantity": "180 千克",
            "unitPrice": "55 人民币元",
            "amount": "990 人民币元"
          }
        ],
        "totalAmount": "980000 人民币元",
        "totalQuantity": "180 千克",
        "mtcNo": "2025032601,028119877",
        "manufacturer": "江苏国强镀锌实业有限公司"
      },
      "hasStamp": true
    }
  ],
  "auditSummary": {
    "reviewResult": "整体审核结果:建议不通过",
    "reviewDetail": "1. 合同编号一致:JYIE-2025-137\n2. 出口国一致:中国\n3. 进口商英文名称一致:RAMATEX TEXTILES INDUSTRIAL SDN,BHD\n5. 合格证编号一致:2025032601\n6. 生产商信息一致:江苏国强镀锌实业有限公司\n7. 货物详情不一致\n8. 价格总计高度相似:CNY980,000.00 vs 980000 人民币元\n9. 货物总量不一致\n\n不通过项共 2 项。",
    "sign": {
      "reviewResult": "通过",
      "reviewDetail": "合同已盖章。合格证已盖章"
    },
    "contracNo": {
      "reviewResult": "通过",
      "reviewDetail": {
        "formdata": "JYIE-2025-137",
        "attachdata": "JYIE-2025-137"
      }
    },
    "exporter": {
      "reviewResult": "建议通过,需人工复审",
      "reviewDetail": {
        "formdata": "中国",
        "customsPort": "上海海关",
        "attachdata": "中国"
      },
      "note": "出口国为中国,报关口岸非保税区,需复核。"
    },
    "importerEn": {
      "reviewResult": "通过",
      "reviewDetail": {
        "formdata": "RAMATEX TEXTILES INDUSTRIAL SDN BHD",
        "attachdata": "RAMATEX TEXTILES INDUSTRIAL SDN,BHD"
      },
      "note": "进口商名称高度相似(空格/后缀差异),视为一致"
    },
    "bussDetial": {
      "reviewResult": "不通过",
      "reviewDetail": {
        "formdata": "未匹配",
        "attachdata": "未匹配"
      }
    },
    "totalAmount": {
      "reviewResult": "建议通过,需人工复审",
      "reviewDetail": {
        "formdata": "980000 人民币元",
        "attachdata": "CNY980,000.00"
      },
      "note": "金额高度相似,建议通过但需人工确认"
    },
    "totalQuantity": {
      "reviewResult": "不通过",
      "reviewDetail": {
        "formdata": "180 千克",
        "attachdata": "1 lot"
      },
      "note": "数量不一致"
    },
    "mtcNo": {
      "reviewResult": "通过",
      "reviewDetail": {
        "formdata": "2025032601,028119877",
        "attachdata": "2025032601"
      },
      "note": "申请表包含多个合格证编号"
    },
    "manufacturer": {
      "reviewResult": "通过",
      "reviewDetail": {
        "formdata": "江苏国强镀锌实业有限公司",
        "attachdata": "江苏国强镀锌实业有限公司"
      }
    }
  }
}

技能特性

  • 智能依赖安装:自动检测操作系统,自动安装缺失依赖(poppler、tesseract、pdfplumber),同事无需手动安装
  • 混合模式盖章检测:LLM 优先 + OCR 关键词校准
  • 智能金额识别:自动识别 "CNY980,000.00" 与 "980000 人民币元",美元、日元等类似 金额中英文单元前后判断
  • 相似性检测增强:数据比对相似值识别,酌情判定:"建议通过,需人工复审"
  • 印章识别增强:支持圆形、半圆形、长方形、正方形、红色、蓝色印章,LLM 优先 + OCR + 正则 多重识别
  • 编号易混字符标准化:合格证编号: 易混淆字符标准化(8-B, 0-O, 1-I, 3-E, 5-S, 2-Z, 7-T)
  • 压缩包支持:自动解压 zip/rar/tar.gz,验证文件类型
  • 二维表格输出:Markdown 表格直观展示审核结果
  • 多模式触发:CLI 命令行 + 对话交互(输入触发词后上传文件)
  • 触发词可配置:在 references/settings.json 中自定义触发词(跨平台通用)
  • 安全配置:LLM 敏感信息自动从 OpenClaw 配置读取,加密存储,内存缓存

Comments

Loading comments...