Skill flagged — suspicious patterns detected

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

Global Financial Downloader

v2.3.0

全球财报智能下载器 v2.2。自动识别市场(A 股/港股/美股),自动选择爬虫。港股使用东方财富+同花顺 API,无需认证。美股外国公司(ADR)自动使用 20-F/6-K 替代 10-K/10-Q。subprocess 替代 os.system,错误检查+输出捕获。支持 --dry-run 预览、下载后自动验证。

0· 86·1 current·1 all-time
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The name/description suggest a self-contained downloader. The code only declares python3 as a requirement, but downloader.py hardcodes and calls other scripts located outside the skill directory (e.g. /root/.openclaw/workspace/skills/hk-financial-downloader/scripts/hk_downloader.py and /root/.openclaw/workspace/scripts/sec_edgar_scraper.py). That means the skill is not actually standalone and implicitly depends on other tools/assets that are not declared. This mismatch is unexpected and could be fragile or abused.
!
Instruction Scope
SKILL.md instructs running the script with absolute paths under /root/.openclaw and to edit files under the skill workspace. The Python code uses a run_command implementation that calls subprocess.run(..., shell=True) and prints/forwards stdout/stderr. If user inputs (stock codes/names/flags) are interpolated into shell commands later in the script (likely, given the external-script invocation pattern), this creates command-injection risk. The instructions also encourage creating global wrappers and running as root paths, which increases blast radius if something goes wrong.
Install Mechanism
No install spec (instruction-only + included code) — lower install risk. However, the skill expects other scripts in other workspace locations instead of shipping them or declaring them as dependencies; relying on external files from hardcoded locations is an installation/integration risk (missing files can cause runtime fallback behavior or attempts to call unrelated system scripts).
Credentials
The skill requests no environment variables or credentials, which is proportionate to its described purpose. However, it reads/writes files under /root/.openclaw/workspace and /root/.openclaw/workspace/exports and expects other scripts under /root/.openclaw/workspace/scripts and other skill directories — this implicit filesystem access should be considered when assessing where it will run and what data it can touch.
Persistence & Privilege
always is false and the skill does not request elevated persistent privileges. It writes outputs under the workspace export paths by design. There is no evidence it modifies other skills' configurations or requests permanent inclusion.
What to consider before installing
This skill appears to implement the described functionality, but there are important caveats to consider before running it: 1) External script dependency: downloader.py calls other scripts using hardcoded absolute paths under /root/.openclaw (e.g. hk_downloader, sec_edgar_scraper, cninfo_api_scraper). Those files are not part of this skill bundle. Confirm those scripts exist and review them — the downloader will likely invoke them and they determine a lot of runtime behavior. 2) Shell command / injection risk: the script uses subprocess.run(..., shell=True) to execute commands. If any user-supplied values (stock codes, names, flags) are concatenated into shell command strings, an attacker could perform command injection. Inspect the rest of downloader.py for where command strings are built and ensure arguments are passed as argument lists (no shell) or properly escaped/sanitized. 3) Hardcoded paths and root workspace: examples and code use /root/.openclaw and suggest creating /usr/local/bin wrappers. Avoid running these as root or on production hosts. Prefer executing in an isolated environment (container/VM) and run with least privilege. 4) Data scope and side effects: the tool reads/writes files under the workspace and exports directory. If you have sensitive files in those directories, run the skill isolated. The SKILL.md encourages editing mapping JSONs inside the skill — ensure those edits are intentional. 5) Sloppy/data issues: mapping file contains duplicate entries (e.g., 600519 appears more than once with different English names). This is a sign of limited QA — review behavior when mapping duplicates occur. Recommendations before installing/running: - Inspect the full downloader.py and any invoked external scripts for command construction, network endpoints, credential handling, and file I/O. - If you plan to run it, do so in an isolated environment (container) and start with --dry-run and --no-pdf to observe behavior without downloading artifacts. - Do not run as root; run under an unprivileged user and limit filesystem/network access if possible. - If you cannot review the external scripts the downloader calls, treat this as higher risk and avoid running it on sensitive systems. What would change this assessment: if the skill bundle included all required scrapers (no external hardcoded script paths) and the code constructed subprocess calls safely (using argument lists or strict sanitization), I would downgrade to benign. Conversely, finding direct use of unsanitized user input in shell command strings or hidden remote upload endpoints would raise the severity.

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

Runtime requirements

🌍 Clawdis
OSLinux · macOS · Windows
Binspython3
latestvk972rtagqzf47ea4ggf6zyyfe184q46d
86downloads
0stars
7versions
Updated 6d ago
v2.3.0
MIT-0
Linux, macOS, Windows

When to Use

  • Download financial reports from global markets (A-shares, HK, US)
  • Automatically identify market from stock code
  • Batch download annual/interim/quarterly reports
  • Support both stock codes and company names

Quick Start

Download Single Company

# Use stock code (recommended - supports all companies)
python3 /root/.openclaw/workspace/skills/global-financial-downloader/downloader.py \
  600519 --from=2020 --to=2026 --type=年报 --pdf

# Use company name (predefined companies only)
python3 /root/.openclaw/workspace/skills/global-financial-downloader/downloader.py \
  贵州茅台 --from=2020 --to=2026 --pdf

Batch Download

# Create a script for batch download
cat > download_all.sh << 'EOF'
#!/bin/bash
stocks=("600519 贵州茅台" "00700 腾讯" "AAPL 苹果")
for stock in "${stocks[@]}"; do
    code=$(echo $stock | cut -d' ' -f1)
    python3 /root/.openclaw/workspace/skills/global-financial-downloader/downloader.py \
      $code --from=2020 --to=2024 --pdf
done
EOF
chmod +x download_all.sh
./download_all.sh

Parameters

ParameterDescriptionDefaultExample
stockStock code or company nameRequired600519, 贵州茅台, AAPL
--fromStart year2020--from=2020
--toEnd year2025--to=2026
--typeReport type年报年报, 中报, 10-K, 10-Q
--pdfDownload PDF filesNo--pdf
--no-pdfSkip PDF downloadNo--no-pdf

Supported Markets

A-Shares (China)

CodeName (CN)Name (EN)
600519贵州茅台kweichow_moutai
000858五粮液wuliangye
601318中国平安ping_an_insurance
600036招商银行china_merchants_bank
.........

Use stock code for ANY A-share company!

Hong Kong

CodeName (CN)Name (EN)
00700腾讯tencent
09988阿里巴巴alibaba
03690美团meituan
01810小米xiaomi
.........

港股数据源 (v2.0 更新):

数据源API说明
东方财富np-anotice-stock.eastmoney.com完整报告最多,22 份年报 (2005-2025)
同花顺basic.10jqka.com.cn/basicapi/notice/pub补充东方财富缺失年份
披露易www1.hkexnews.hk兜底

港股代码自动转换: 700/0700/00700/HK0700 自动适配各平台格式。

US Stocks

CodeName (CN)Name (EN)
AAPL苹果apple
MSFT微软microsoft
GOOGL谷歌alphabet
AMZN亚马逊amazon
NVDA英伟达nvidia
.........

Use stock code for ANY US company!

Report Types

A-Shares / HK

TypeParameterDescription
年报年报, annualAnnual Report
中报中报, interimInterim Report
季报季报, quarterlyQuarterly Report
全部全部, allAll Reports

US Stocks

TypeParameterDescription
年报10-K, 年报Annual Report (10-K)
季报10-Q, 季报Quarterly Report (10-Q)
全部all, 全部All Reports

Output Files

/root/.openclaw/workspace/exports/
├── cninfo_{name}/          # A-shares
│   ├── cninfo_{code}.json
│   ├── cninfo_{code}.csv
│   └── pdfs/
├── hkex_{name}/            # HK
│   ├── hkex_{name}_financial.json
│   ├── hkex_{name}_financial.csv
│   └── financial_pdfs/
└── sec_{name}/             # US
    ├── sec_{code}_{type}.json
    ├── sec_{code}_{type}.csv
    └── pdfs/

Examples

Example 1: Download Moutai Annual Reports

python3 /root/.openclaw/workspace/skills/global-financial-downloader/downloader.py \
  600519 --from=2020 --to=2026 --type=年报 --pdf

Example 2: Download Tencent Reports

python3 /root/.openclaw/workspace/skills/global-financial-downloader/downloader.py \
  00700 --from=2020 --to=2026 --pdf

Example 3: Download Apple 10-K

python3 /root/.openclaw/workspace/skills/global-financial-downloader/downloader.py \
  AAPL --from=2020 --to=2026 --type=10-K --pdf

Example 4: Download All Reports (No PDF)

python3 /root/.openclaw/workspace/skills/global-financial-downloader/downloader.py \
  贵州茅台 --type=全部 --no-pdf

Technical Details

Market Identification

  1. 6-digit code starting with 6/0: A-shares
  2. 5-digit code starting with 0: HK stocks
  3. Letter code: US stocks
  4. Company name: Lookup in mapping table

Report Type Mapping

InputA-SharesHKUS
年报/annualannualfinancial10-K
中报/interiminterimfinancial10-Q
季报/quarterlyregularquarterly10-Q
全部/allregularfinancialall

Configuration

Add New Companies

Edit /root/.openclaw/workspace/skills/global-financial-downloader/stock_mapping.json:

{
  "cn_stocks": {
    "stocks": [
      ["股票代码", "中文名称", "英文名称"],
      ["601318", "中国平安", "ping_an_insurance"]
    ]
  }
}

Supported Companies

Predefined: 204 companies (50 A-shares, 51 HK, 100 US)

All companies: Use stock code for ANY company!

Troubleshooting

Issue: Company Not Recognized

Solution: Use stock code instead of company name

# ❌ May not work for undefined companies
python3 downloader.py 某公司 --pdf

# ✅ Always works
python3 downloader.py 600XXX --pdf

Issue: PDF Download Failed

Solution: Check network and disk space

Issue: No Reports Found

Solution: Expand year range or check report type

Related Files

  • Main Script: /root/.openclaw/workspace/skills/global-financial-downloader/downloader.py
  • Stock Mapping: /root/.openclaw/workspace/skills/global-financial-downloader/stock_mapping.json
  • HK Downloader: /root/.openclaw/workspace/skills/hk-financial-downloader/scripts/hk_downloader.py
  • Output: /root/.openclaw/workspace/archive/

Update Log

VersionDateChanges
2.2.02026-04-12美股 ADR 支持 ⭐⭐
- 美股外国公司自动使用 20-F/6-K(~50 家公司)
- 本土公司继续用 10-K/10-Q
- 外国公司列表:中概股+加拿大+欧洲+日本+拉美
- SEC 爬虫 v2.0:CIK 缓存扩展 + 自动搜索
2.1.02026-04-126 项修复
- subprocess 替代 os.system(错误检查 + 输出捕获)
- 报告类型大小写保护(10-k → 10-K)
- market key 大小写修复(HK→hk)
- 港股 report type 映射修复(financial → 年报/中报/季报)
- --dry-run 预览模式
- 下载后自动验证结果
2.0.02026-04-12港股重构 ⭐⭐⭐
- 替换 hkex_auto_scraper_v3.pyhk_financial_downloader
- 数据源:东方财富 + 同花顺 API(无需认证)
- 自动代码格式转换 (700/0700/00700/HK0700)
- 完整报告优先于业绩公告
- 移除 playwright 依赖
1.0.02026-04-03初始版本

Author

Created by 玄武 🐢 Version: 2.2.0 Last Updated: 2026-04-12

Comments

Loading comments...