Skill flagged — suspicious patterns detected

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

AStockReport

v1.0.0

A股报告生成与推送技能。支持6种报告:晨报(AI搜索+模板,每日8:00)、晚报(AI搜索+量化情绪打分,每日20:00)、收盘小结(脚本数据+量化情绪打分,交易日15:30)、盘中预警(脚本,交易时段每5分钟)、财经周末要闻(AI搜索,每周20:00)、A股IPO周报(每周六09:00,Python脚本直推,数...

0· 13·0 current·0 all-time
MIT-0
Download zip
LicenseMIT-0 · Free to use, modify, and redistribute. No attribution required.
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
high confidence
!
Purpose & Capability
The skill's stated purpose (generate and push A股 reports) matches the included Python scripts and prompts, but the registry metadata declares no required config/env yet the SKILL.md and code expect a keys_loader under /workspace/keys (wecom webhook) and the scripts import akshare/pandas. That mismatch (no declared config paths or dependencies) is incoherent and could cause silent failures or unexpected behavior.
Instruction Scope
SKILL.md instructs the agent to run web searches (batch_web_search), execute Python scripts, and immediately POST the generated reports to a corporate‑wechat webhook. That scope is consistent with the report/push purpose. However the prompts explicitly instruct immediate push (no manual confirmation) and rely on /workspace/keys for webhook retrieval; the agent is therefore enabled to send potentially large report content to an external webhook automatically.
!
Install Mechanism
There is no install spec (instruction‑only plus shipped scripts), which is low risk in principle, but the packaged scripts import third‑party libraries (akshare, pandas) and expect keys in /workspace — these dependencies are not declared in the registry. Missing dependency/install declarations are an operational and security concern (unexpected package installs or failures).
!
Credentials
Registry lists no required env/configs, yet the SKILL.md and code require a keys loader and webhook file at /workspace/keys/wecom_webhook.ini (and keys_loader.py). Worse, scripts/send_ipo_report.py contains a hardcoded webhook URL with an embedded key (https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=c4a1cd60-254e-4612-b365-c701482ae98c). Hardcoded webhook keys are effectively credentials baked into the skill and may cause data to be sent to an unexpected/third‑party endpoint. The credential handling is inconsistent and disproportionate to the stated absence of required credentials.
Persistence & Privilege
The skill is not always:true and is user‑invocable (normal). It sets up cron workflows in SKILL.md and will run autonomously when triggered by cron or user phrases. Because the skill can autonomously generate and push reports to a webhook, the presence of the hardcoded webhook increases the blast radius; this combination raises concern but the autonomy setting itself is expected for this kind of skill.
What to consider before installing
What to check before installing: - Hardcoded webhook key: inspect scripts/send_ipo_report.py — it contains a hardcoded corporate‑wechat webhook URL+key (c4a1cd60-...). That effectively sends reports to whoever controls that webhook. Confirm you own that webhook or replace it with a keys_loader pattern (and remove the embedded key). If you used that webhook elsewhere, rotate the key. - Keys loader / config path mismatch: the registry states no required env/configs, but SKILL.md and code expect /workspace/keys/keys_loader.py and /workspace/keys/wecom_webhook.ini. Ensure a secure keys_loader exists and the webhook config file is stored safely (not world‑readable). Prefer environment variables or an explicit config declaration in the skill metadata. - Undeclared dependencies: the scripts import akshare, pandas and other third‑party libs. Make sure these are installed from trusted sources (declare them in the skill manifest or install steps) and consider running in an isolated environment to limit attack surface. - Review network behavior: the skill performs web searches and fetches data from external sites (qt.gtimg.cn, AKShare sources, Sina/IPO123 etc.) and uses curl/subprocess to POST to webhooks. If you need to audit what is sent, run scripts in --dry-run modes (the close_summary script supports --dry-run) or inspect outputs before enabling cron pushes. - Cron/autonomy risk: because the SKILL.md recommends cron triggers and the agent is allowed to push automatically, ensure cron jobs and delivery.mode are configured correctly and that automatic pushes are desired. Consider disabling autonomous triggers until you verify behavior. - Fixes to request from author (or do before enabling): remove any hardcoded webhook keys; explicitly declare required config paths or env vars in the skill metadata; add an install spec or documented dependency list; and confirm keys_loader implementation and access controls. If you cannot verify the webhook ownership and keys_loader, treat the skill as potentially exfiltrating report content and do not enable automated cron pushes.

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

latestvk971rderyhsxhcd85jnvv5103h847855

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

📦 安装后配置建议

Cron 定时任务推荐设置(粘贴到 OpenClaw 添加 Cron 任务时使用):

报告定时cron 表达式推送方式
📰 晨报每日 08:000 8 * * 1-5webhook
📋 晚报每日 20:000 20 * * 1-5webhook
📊 收盘小结交易日 15:3030 15 * * 1-5webhook
🚨 盘中预警每5分钟(09:30-11:30 / 13:00-15:00)*/5 9-11,13-15 * * 1-5webhook

推送方式:必须选 webhook

  • 企业微信 Webhook 推送无文本长度限制,适合长报告
  • Webhook Key:存储于 /workspace/keys/wecom_webhook.ini,由 keys_loader 统一读取
  • 各脚本内部已封装 wx_push() 函数,直接调用即可,无需额外配置

注意:收盘小结和晚报的 cron delivery 请务必指定 channel: wecom,否则会因多通道冲突导致推送失败:

"delivery": { "mode": "announce", "channel": "wecom" }

A股报告技能

⚠️ 重要:晨报和晚报是 AI 工作流,由 Cron 触发 agentTurn,agent 调用 batch_web_search 搜索新闻,再用模板生成报告,最后用 Python 推送。收盘小结是脚本数据+AI分析双层模式(脚本抓数据 → AI生成分析 → 统一推送)。盘中预警是纯 Python 脚本。


快速索引

报告类型推送方式触发方式
📰 晨报AI工作流Cron → agentTurn → batch_web_search → pushCron 8:00
📋 晚报AI工作流 + 量化情绪(6维:涨停/涨跌停比/北向/全市场净流入/两融/沪深300)Cron → 脚本抓数据+量化打分+推送Cron 20:00
📊 收盘小结AI工作流Cron → agentTurn → 脚本获取数据 → AI生成分析 → pushCron 15:30
📋 A股IPO周报Python脚本Cron → 脚本抓数据+网络搜索 → 生成推送Cron 0 9 * * 6(周六 09:00)
📰 财经周末要闻AI工作流Cron → agentTurn → batch_web_search → pushCron 0 20 * * 0(周日 20:00)
🚨 盘中预警Python脚本Cron → 脚本直接推送Cron */5(09:30-11:30 / 13:00-15:00)

1. 📰 晨报(AI工作流)

Cron 配置

{
  "schedule": { "kind": "cron", "expr": "0 8 * * 1-5", "tz": "Asia/Shanghai" },
  "payload": { "kind": "agentTurn", "message": "<下方完整prompt>" }
}

完整 prompt

请严格按以下步骤执行,完成后直接输出报告内容,不需要任何额外说明:

第一步:用batch_web_search搜索今日A股市场晨报相关内容,搜索以下关键词:
- A股 财经要闻 市场动态 今日
- 美股收盘 VIX 恐慌指数 今日
- A股 板块 涨停 龙头 今日
- 央行 财政部 政策 利好 今日

第二步:生成格式完整、内容详尽的晨报,严格按以下格式输出每一部分,不得遗漏任何板块:

📰 【股市晨报】YYYY年M月D日(周W)

━━━ 隔夜全球市场 ━━━

【美股收盘】
▪ 道琼斯:(点位),(涨跌幅%)
▪ 标普500:(点位),(涨跌幅%)
▪ 纳斯达克:(点位),(涨跌幅%)
▪ VIX恐慌指数:(数值),恐慌等级:【X区间】(说明,包含重要背景补充,如美股季度涨跌、近期趋势等,越详细越好)

【港股及A50】
▪ 恒生指数:(表现描述,含整周趋势)
▪ A50指数期货:(表现描述)

━━━ 财经要闻 ━━━

【1】(标题)|✅/❌/⚠️ 对A股影响
点评:(2-3句话,含具体公司、板块、数据,利好/利空要明确,不可泛泛而谈)

【2】(标题)|✅/❌/⚠️ 对A股影响
点评:(同上)

【3】(标题)|✅/❌/⚠️ 对A股影响
点评:(同上)

【4】(标题)|✅/❌/⚠️ 对A股影响
点评:(同上)

【5】(标题)|✅/❌/⚠️ 对A股影响
点评:(同上)

【6】(标题)|✅/❌/⚠️ 对A股影响
点评:(同上)

【7】(标题)|✅/❌/⚠️ 对A股影响
点评:(同上)

(列出5-8条重要新闻,每条必须包含:标题、日期、✅/❌/⚠️标记、点评中要有具体公司或数据)

━━━ 今日操作建议 ━━━

【大盘研判】
(结合技术面+消息面,给出当日大盘走势判断,3-5句话,含关键支撑/压力位)

【操作建议】
① 短线(1-3天):(具体方向+逻辑,注明短线/中线)
② 中线(1-3周):(具体方向+逻辑)
③ 波段操作:(具体点位建议,如4,000点上方压力、3,900下方低吸等)

【风险提示】
⚠️ (3条,分别关注外盘变盘、节前效应、地缘风险等具体因素)

⚠️ 仅供参考,不构成投资建议。股市有风险,投资需谨慎。

第三步:用Python通过企业微信推送报告内容:

import subprocess, json
import sys
sys.path.insert(0, "/workspace/keys")
from keys_loader import get_webhook_url
report = \"\"\"[完整报告内容]\"\"\"
payload = json.dumps({"msgtype": "text", "text": {"content": report}}, ensure_ascii=False)
r = subprocess.run(["curl", "-s", "-X", "POST", get_webhook_url(), "-H", "Content-Type: application/json", "-d", "@-"], input=payload.encode("utf-8"), capture_output=True)
print(r.stdout.decode() if r.stdout else "ok")

只输出报告正文内容,不需要任何解释,完成后立即执行推送代码。

2. 📋 晚报(AI工作流)

Cron 配置

{
  "schedule": { "kind": "cron", "expr": "0 20 * * 1-5", "tz": "Asia/Shanghai" },
  "payload": { "kind": "agentTurn", "message": "<下方完整prompt>" }
}

完整 prompt

请完成以下任务,直接执行不要询问:

第一步(必须先执行):运行以下Python命令获取今日量化情绪分:

python3 /workspace/skills/astock-report/scripts/send_evening_report.py --dry-run

输出格式示例:
SENTIMENT:50/100|🟠 偏空谨慎|市场情绪转弱...
ZTC:45|DTC:12|NORTH:25.3|MKT:-120
IDX:上证指数|3880.10|-0.80

记录以上输出中的数值,后续步骤中填入报告对应位置。

第二步:用batch_web_search搜索今日收盘后A股市场重要财经要闻,搜索关键词:
- A股收盘 股指 YYYYMMDD
- 板块涨停 强势龙头 YYYYMMDD
- 财经要闻 市场动态 YYYYMMDD

第三步:生成格式完整、内容详尽的收盘晚报,严格按以下格式输出每一部分:

📋 【A股晚报】YYYY年MM月DD日

━━━ 全球市场 ━━━

▎亚太市场
• 恒生指数:(点位),(涨跌幅%)
• 恒生红筹:(点位),(涨跌幅%)
• 日经225指数:(点位),(涨跌幅%)
• 韩国KOSPI:(点位),(涨跌幅%)

▎A股今日收盘(YYYY年MM月DD日)
• 上证指数:(点位),(涨跌幅%)
• 深证成指:(点位),(涨跌幅%)
• 创业板指:(点位),(涨跌幅%)
• 沪深300:(点位),(涨跌幅%)
• 科创50:(点位),(涨跌幅%)
• 成交额:(X.XX万亿元)(量能描述,如温和放大/明显缩量)

━━━ 市场情绪 ━━━
• 涨停家数:约X家(含ST)
• 跌停家数:约X家
• 北向资金:净流入/净流出X亿
• 两融余额:约X万亿(较上一交易日X亿)
• 全市场主力资金净流入:X亿(由脚本第一步输出MKT值填入)

情绪评估(直接填入第一步脚本输出的综合评分):
量化情绪打分:综合评分 X/100 🟢极强/🟡多头偏强/⚪中性震荡/🟠偏空谨慎/🔴极弱空头

(不需要逐维明细分值,只需填入综合评分和等级即可)

━━━ 重要财经要闻 ━━━

【1】(标题)
(事件简述,50字以内)
✅ 对A股有利:(一句话)
❌ 对A股不利:(一句话)
⚠️ 风险提示:(一句话)

【2】(标题)
(事件简述,50字以内)
✅ 对A股有利:(一句话)
❌ 对A股不利:(一句话)
⚠️ 风险提示:(一句话)

【3】(标题)
(事件简述,50字以内)
✅ 对A股有利:(一句话)
❌ 对A股不利:(一句话)
⚠️ 风险提示:(一句话)

(列出3-5条重要新闻,按重要性排序)

━━━ 热点板块一览 ━━━
🚀 强势板块:(板块名)(驱动逻辑)
⚠️ 弱势板块:(板块名)(原因)

━━━ 明日操作建议 ━━━

① 【顺势而为】(具体方向+逻辑,若成交额维持X万亿以上,可适当加仓……)

② 【超跌博弈】(具体板块+止损设置)

③ 【控制仓位】(整体仓位建议+风险提示)

⚠️ 免责声明:本报告由AI自动生成,仅供参考,不构成投资建议,市场有风险,投资需谨慎。

第四步:用Python通过企业微信推送:

import subprocess, json
import sys
sys.path.insert(0, "/workspace/keys")
from keys_loader import get_webhook_url
report = \"\"\"[完整报告内容]\"\"\"
payload = json.dumps({"msgtype": "text", "text": {"content": report}}, ensure_ascii=False)
r = subprocess.run(["curl", "-s", "-X", "POST", get_webhook_url(), "-H", "Content-Type: application/json", "-d", "@-"], input=payload.encode("utf-8"), capture_output=True)
print(r.stdout.decode() if r.stdout else "ok")

只输出报告内容,不需要额外解释。报告生成后立即执行Python推送代码。

3. 📊 收盘小结(Python脚本)

Cron 配置

{
  "schedule": { "kind": "cron", "expr": "30 15 * * 1-5", "tz": "Asia/Shanghai" },
  "payload": { "kind": "agentTurn", "message": "python3 /workspace/skills/astock-report/scripts/send_close_summary.py" }
}

推送内容结构:

📊 【A股收盘小结】YYYY年MM月DD日

【一,主要股指表现】
{trend}:
• 上证指数:(点位),↑/↓(涨跌幅%)
• 深证成指:(点位),↑/↓(涨跌幅%)
• 创业板指:(点位),↑/↓(涨跌幅%)
• 沪深300:(点位),↑/↓(涨跌幅%)
• 科创50:(点位),↑/↓(涨跌幅%)
📍 (2-3句话描述整体走势,含外围背景)

【二,资金流向】
北向资金:(X亿)
行业主力净流入前三:
1. 行业名:+X亿(领涨股+涨跌幅%)
2. 行业名:+X亿(领涨股+涨跌幅%)
3. 行业名:+X亿(领涨股+涨跌幅%)
行业主力流出前三:
1. 行业名:-X亿(领跌股+涨跌幅%)
2. 行业名:-X亿(领跌股+涨跌幅%)
3. 行业名:-X亿(领跌股+涨跌幅%)

【三,板块表现】
🚀 强势板块:
  ① 板块名(X家涨停)
  ② 板块名(X家涨停)
  ③ 板块名(X家涨停)

❄️ 弱势板块:
  ① 板块名(X家跌停)
  ② 板块名(X家跌停)
  ③ 板块名(X家跌停)

【四,量化情绪打分】
• 涨停家数:约X家
• 跌停家数:约X家
• 市场情绪:(填入脚本第一步输出的量化情绪评分:X/100 🟢/🟡/⚪/🟠/🔴)

【五,热门个股聚焦】
🔴 涨停聚焦:
• 股票名(涨跌幅%)
• 股票名(涨跌幅%)

【六,机构观点与后市展望】
✅ 多头逻辑:
• (2-3条逻辑)

⚠️ 风险提示:
• (2-3条风险)

📌 后市研判:
(机构观点+关键区间)

━━━━━━━━ 数据来源:腾讯财经·东方财富AKShare ━━━━

⚠️ 仅供参考,不构成投资建议。股市有风险,投资需谨慎。

4. 📰 财经周末要闻(AI工作流)

Cron 配置

{
  "schedule": { "kind": "cron", "expr": "0 20 * * 0", "tz": "Asia/Shanghai" },
  "payload": { "kind": "agentTurn", "message": "<下方完整prompt>" }
}

完整 prompt

请立即执行以下任务:

【第一步】batch_web_search搜索过去48小时最重要的财经要闻,共8-10条,涵盖:A股政策利好利空、美股收盘、国际市场动态、VIX恐慌指数、宏观经济数据、行业重大变化。

【第二步】筛选最重要的8-10条,每条注明日期(必须是近48小时内),按以下完整格式生成报告:

📰 【财经周末要闻】过去48小时(X月X日—X日)

🔟 第X条:[新闻标题](X月X日)
  ✅对A股有利:[分析展开]
  ❌对A股不利:[分析展开]
  ⚠️风险提示:[相关风险]

(共8-10条,每条分析完整充分)

📊 整体市场情绪研判
[做多/中性/偏空,给出3-5句理由]

⚠️ 仅供参考,不构成投资建议。股市有风险,投资需谨慎。

【第三步】用Python通过Webhook发送:

import subprocess, json
import sys
sys.path.insert(0, '/workspace/keys')
from keys_loader import get_webhook_url
report = \"\"\"[完整报告内容]\"\"\"
payload = json.dumps({"msgtype": "text", "text": {"content": report}}, ensure_ascii=False)
r = subprocess.run(["curl", "-s", "-X", "POST", get_webhook_url(), "-H", "Content-Type: application/json", "-d", "@-"], input=payload.encode(), capture_output=True, text=True)
print(r.stdout)

直接执行Python发送,不额外解释。

5. 📋 A股IPO周报(Python脚本)

Cron 配置

{
  "schedule": { "kind": "cron", "expr": "0 9 * * 6", "tz": "Asia/Shanghai" },
  "payload": { "kind": "agentTurn", "message": "python3 /workspace/skills/astock-report/scripts/send_ipo_report.py" }
}

推送内容结构(微信友好版)

📋 A股IPO周报 03月28日-04月04日

━━━━━━━━━━
📊 一、排队情况(截止2026年03月29日)

全市场共248家:问询214家 | 已过会待发行20家 | 提交注册7家

【科创板】40家  已受理2 | 问询35 | 提交注册3
【创业板】34家  问询33 | 过会1
【沪主板】18家  已受理2 | 问询15 | 提交注册1
【深主板】16家  已受理3 | 问询9 | 过会1 | 提交注册3
【北交所】140家  问询122 | 过会18

━━━━━━━━━━
📋 二、上周上会(03月28日-04月04日)

✅ 通过:5家
  · 企业简称 | 板块 | 日期
❌ 否决:0家

━━━━━━━━━━
📋 三、上周拿文(03月28日-04月04日)

📄 获发行批文:7家
  · 企业简称 | 板块 | 日期

━━━━━━━━━━
📋 四、上周终止/撤回(03月28日-04月04日)

本周无终止撤回记录

━━━━━━━━━━
📋 五、本周上会计划(04/07-04/11)

本周暂无上会安排

━━━━━━━━━━
📋 六、本周新股上市(03月28日-04月04日)

  · 股票简称(代码)| 上市:日期 | 发行:X元 | 涨幅:X%

━━━━━━━━━━
📌 数据来源:新浪财经+IPO123(统计截至2026年03月29日)
⚠️ 仅供参考,不构成投资建议。

数据说明

  • 排队数据来源:新浪财经 + IPO123 每周统计(统计截至每周五)
  • 上会/拿文/终止数据来源:akshare(stock_ipo_review_em
  • 新股申购/上市数据来源:akshare(stock_new_ipo_cninfo
  • 首日涨幅:手动补充(来源:交易所公告/媒体报道)

注意事项

  • 排队数据中的"中止"列因新浪财经统计中未单独列出,默认显示为0
  • 近一周无新增终止记录时,显示"本周无终止撤回记录"
  • 脚本已内置最新排队数据(硬编码),每次运行自动从新浪/IPO123 抓取最新数据更新

6. 🚨 盘中预警(Python脚本)

Cron 配置

{
  "schedule": { "kind": "cron", "expr": "*/5 9-11,13-15 * * 1-5", "tz": "Asia/Shanghai" },
  "payload": { "kind": "agentTurn", "message": "python3 /workspace/skills/astock-report/scripts/send_intraday_alert.py" }
}

触发条件:任一主要股指(上证指数/深证成指/创业板指/科创50/沪深300)涨跌幅超 ±2%,推送该指数的预警信息

去重机制:每个指数独立去重,按0.5%分档,每天每指数每档只推送一次

推送内容(触发哪个指数推哪个,每指数独立去重):

🚨 【🔺暴涨/🔴暴跌预警】上证指数 YYYY年MM月DD日 HH:MM

• 最新点位:XXXX.XX(▲/▼X.XX%)
• 最高/最低:XXXX.XX / XXXX.XX
⚠️ 请关注后续走势,做好风险管理。

脚本清单

脚本用途直接可跑
send_intraday_alert.py沪深300盘中预警
send_close_summary.py收盘小结+推送
send_evening_report.py晚报数据+全自动推送(要闻由AI补充)
send_ipo_report.pyA股IPO周报(含排队/上会/拿文/上市)
common.py公共模块(推送/时间判断)❌(被import)

配置(必填)

Webhook Key 统一在 /workspace/keys/wecom_webhook.ini 中管理(由 keys_loader.py 统一读取):

[wecom_webhook]
key = your_webhook_key_here

Files

7 total
Select a file
Select a file to preview.

Comments

Loading comments…