A股每日复盘视频生成

A股每日复盘视频自动生成。完整工作流:拉取非凸科技真实行情数据 → 抓取热点新闻 → AI 归因分析 → 生成横屏 PPT 幻灯片 → 合成视频+封面图。当用户说「生成今日A股复盘视频」「A股日报」「出今天的复盘」或触发定时任务时使用。

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 41 · 0 current installs · 0 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description、SKILL.md 和脚本在功能上自洽:脚本会调用 ftshare-market-data 获取行情、newsnow-reader 抓新闻,做归因并生成 7 张幻灯片与视频。所需外部技能(ftshare-market-data、newsnow-reader)与声明的用途一致。没有请求与任务无关的凭据或不相干二进制。
Instruction Scope
运行说明明确列出每一步要执行的脚本、数据判断逻辑和用户确认点(例如非交易时段必须让用户确认交易日)。需要注意:SKILL.md 指示 Agent 在本地查找并直接执行其他 skill 的 run.py / scripts/fetch_news.py(即执行其他技能的代码),这在功能上是合理但要求对被调用的 skill 代码有信任。幻灯片第6页包含安装/推广信息和固定话题标签(营销导向),这属于功能以外的宣传行为,应知悉。
Install Mechanism
该包为“instruction-only”但包含多份脚本及一键安装脚本(scripts/setup.sh)。setup.sh 会通过 pip 安装 pillow/fonttools/brotli,并提示安装 ffmpeg 与 skillhub。ensure_assets.py 会在运行时从外部 URL(jsdelivr、fontsource、GitHub releases、Pixabay)下载字体和 BGM。大多数下载源为常见的 CDN/GitHub,但其中也包含个人 GitHub release(eddiexux 的 release),应在不受信环境下审查这些外部资源及其许可证。总体安装流程透明、可审计,但运行时会写入 assets/ 并调用系统 pip/ffmpeg。
Credentials
Skill 不请求任何环境变量或凭据(requires.env: none)。脚本不会读取系统凭据或配置路径以外的敏感文件。唯一的外部交互是通过已声明的依赖 skill(ftshare-market-data, newsnow-reader)和 HTTP 下载静态资产,权限需求与功能相称。
Persistence & Privilege
flags 中没有 always:true,Skill 不会强制长期驻留或修改其他技能的配置。脚本会在本地创建输出目录(~/astock-output)和 assets/ 子目录用于字体/BGM,这是合理且与功能相关。允许模型自主调用为平台默认,并未与其他高风险因素叠加。
Assessment
这个 Skill 看起来是做它说的事:抓取行情与新闻、用 AI 做归因、生成幻灯片并合成视频。安装/运行前请注意: - 审查并信任被调用的依赖 skill(ftshare-market-data、newsnow-reader):SKILL.md 会直接定位并执行这些 skill 的 run.py / scripts,意味着这些被调用脚本的行为会在你的环境中执行。若你不认识或不信任这些 skill,先查看它们的源码再安装。 - 外部资产下载:ensure_assets.py 会从 jsdelivr、fontsource、以及一个个人 GitHub release(eddiexux)下载字体与 BGM。若你对这些来源有顾虑,应手动下载并放到 assets/ 目录,或先检查对应 release 的内容与许可证(BGM 提示来自 Pixabay)。 - 安装脚本会用 pip 安装包并提示安装 ffmpeg(需系统级安装)。以非特权用户运行安装脚本更安全,避免全局环境污染。 - 该 Skill 在幻灯片和文案中包含推广与固定话题标签(例如“非凸科技/ft.tech/OpenClaw”),会在产出中带有品牌/营销信息;若不希望包含这些内容,需在生成前修改模板或手动审核幻灯片/文案(SKILL.md 强制要求在生成视频前让用户确认幻灯片,这是一个安全点)。 总体无需担心凭据外泄(未请求密钥),但务必在受信环境中运行并审阅第三方依赖与下载的资产以降低风险。

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

Current versionv1.0.2
Download zip
latestvk97be4sz8sg03gw0b8wbhdtbf98308ex

License

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

SKILL.md

A股每日复盘视频生成

快速开始

# 1. 安装依赖
bash scripts/setup.sh

# 2. 告诉 AI
「帮我生成今天的A股复盘视频」

依赖

依赖安装方式说明
Python 3.7+系统自带
pillowpip install pillow生成幻灯片
fonttools + brotlipip install fonttools brotli字体格式转换(首次自动安装)
ffmpegbrew install ffmpeg / apt install ffmpeg合成视频
ftshare-market-dataskillhub install ftshare-market-data非凸科技行情接口
newsnow-readerskillhub install newsnow-reader热点新闻抓取

或一键安装:bash scripts/setup.sh

完整工作流

Step 0    依赖检查               →  确认 ftshare-market-data / newsnow-reader 已安装
Step 1    ftshare-market-data   →  拉取涨跌幅榜、成交额榜、大盘指数
Step 2    newsnow-reader         →  抓取当日财经热点(华尔街见闻)
Step 3    AI 归因分析             →  交叉比对数据与新闻,生成每只股票归因
  🔸 检查点①  展示归因摘要 → 用户确认数据和分析
Step 4    make_slides.py         →  生成 7 张 1920×1080 横屏幻灯片
Step 5    用户确认幻灯片          →  发送 7 张预览图,用户确认后才继续
Step 6    make_video.py          →  合成 MP4 视频 + 封面 JPG
Step 7    生成发布文案            →  通知用户文件位置 + 完整文案
Step 8    询问是否发送文件        →  直接发送视频和封面给用户

输出路径

文件默认路径
视频(收盘)~/astock-output/YYYY-MM-DD-复盘.mp4
视频(盘中)~/astock-output/YYYY-MM-DD-intra-HHMM-复盘.mp4
封面(收盘)~/astock-output/YYYY-MM-DD-封面.jpg
封面(盘中)~/astock-output/YYYY-MM-DD-intra-HHMM-封面.jpg
幻灯片~/astock-output/slides/YYYY-MM-DD/

执行时机与数据日期判断

执行前必须先判断当前属于哪种场景,决定数据日期和标注方式:

当前时间数据日期幻灯片标注说明
交易日 15:00 后 ~ 23:59当天YYYY-MM-DD 收盘复盘最佳执行时间
0:00 ~ 次交易日 9:30 前上一个交易日YYYY-MM-DD 收盘复盘API 数据仍为上个交易日
周末 / 节假日最近一个交易日YYYY-MM-DD 收盘复盘同上
交易日 9:30 ~ 15:00当天(盘中)YYYY-MM-DD HH:MM 盘中快报数据为实时快照,非最终结果

判断方法:

  1. 获取当前时间(北京时间)
  2. 拉取任意一只股票数据,检查 symbol_status.extra 字段:
    • "CLOSED" / "NOT_OPEN" → 非交易时段,使用最近一个交易日的收盘数据
    • "TRADING" / "CALL_AUCTION" → 盘中,标注为盘中快报
    • 其他值(如 "BREAK" 午休等)→ 按盘中处理,标注当前时间
  3. 根据场景自动设置 --title 参数:
    • "CLOSED" / "NOT_OPEN"--title "今日 A 股复盘"
    • "TRADING" / "CALL_AUCTION" / 其他 → --title "A 股盘中快报 HH:MM"(HH:MM 为当前北京时间)
  4. --date 参数:
    • 收盘场景:传交易日期,如 "2026-03-16"
    • 盘中场景:传 "YYYY-MM-DD-intra-HHMM",如 "2026-03-17-intra-1430",避免与收盘视频文件名冲突,且纯 ASCII 保证目录名兼容性

⚠️ --date 为必填参数,不能使用系统日期 date.today() 默认值。 必须由 AI agent 根据以上逻辑判断正确的交易日期后显式传入。错误的日期会导致幻灯片标注与实际数据不符。

⚠️ 盘中数据为实时快照,涨跌幅和成交额会持续变化。幻灯片和视频中必须标注数据截取时间。

执行步骤

路径约定:以下所有脚本路径均使用相对路径。SKILL_DIR 指本 skill 所在目录,运行时由 AI agent 自动解析。

Step 0:检查依赖(自动)

执行前先检查必需的依赖 skill 是否已安装:

  1. 检测 ftshare-market-data skill 是否存在(尝试定位其 run.py
  2. 检测 newsnow-reader skill 是否存在(尝试定位其 scripts/fetch_news.py
  3. 如果任一缺失,提示用户:
    ⚠️ 缺少必需的依赖 skill,请先运行:
    bash scripts/setup.sh
    或手动安装:
    skillhub install ftshare-market-data
    skillhub install newsnow-reader
    
  4. 依赖齐全后,继续 Step 1

Step 1:拉取行情数据

1a. 确定交易日期(必须与用户确认)

先拉取任意一只股票,从返回数据中判断市场状态:

  • 检查 symbol_status.extra(参考「执行时机与数据日期判断」章节)
  • 如果是 TRADING / CALL_AUCTION / 其他 → 交易日 = 今天,无需确认
  • 如果是 CLOSED / NOT_OPEN(非交易时段)→ 必须询问用户确认数据日期
    当前市场未开盘,API 返回的是最近一个交易日的收盘数据。
    请确认:这份数据对应的交易日是哪天?(例如 2026-03-16)
    
    用户回答后,将该日期用于所有 --date 参数。

⚠️ 禁止自动推算交易日期。 中国 A 股有节假日调休(如周末补班交易、春节/国庆长假),纯靠星期几推算会出错。必须让用户确认。

1b. 拉取行情

使用 ftshare-market-data skill 的 run.py

# 全量 A 股数据(一次拉取,从中提取涨幅/跌幅/成交额 TOP5 + 统计涨跌家数)
python3 <ftshare-market-data>/run.py stock-quotes-list --order_by "change_rate desc" --page_no 1 --page_size 6000 \
  --filter '(ex_id = "XSHE" OR ex_id = "XSHG") AND (latest != null)'

# 从全量数据中提取:
# - 涨幅 TOP5:按 change_rate 降序取前5(过滤 change_rate != null)
# - 跌幅 TOP5:按 change_rate 升序取前5(过滤 change_rate != null 且 < 0)
# - 成交额 TOP5:按 turnover 降序取前5
# - 统计:change_rate>0 为上涨,<0 为下跌
# - 涨停:trading_status == "LIMIT_UP"
# - 跌停:trading_status == "LIMIT_DOWN"
# - 全市场成交额:sum(turnover) / 1e8 得"亿"

# 大盘指数
# 收盘场景:用 close 字段(latest 可能为 null)
# 盘中场景:用 latest 字段(此时为实时价格,close 为昨收)
python3 <ftshare-market-data>/run.py stock-security-info --symbol "000001.SH"  # 上证指数
python3 <ftshare-market-data>/run.py stock-security-info --symbol "399001.SZ"  # 深证成指
python3 <ftshare-market-data>/run.py stock-security-info --symbol "399006.SZ"  # 创业板指

<ftshare-market-data> 指 ftshare-market-data skill 的安装目录,AI agent 会自动定位。

Step 2:抓取热点新闻

python3 <newsnow-reader>/scripts/fetch_news.py wallstreetcn 8

<newsnow-reader> 指 newsnow-reader skill 的安装目录。

Step 3:AI 归因分析

获取到数据后,对每只涨跌异动股票,结合新闻进行归因:

  • 明确有消息面的:直接引用新闻来源
  • 无明确消息面的:标注「暂无明确消息面,技术位/资金面分析」
  • 不猜测、不编造,不确定的标注「未经验证」

同时提取宏观新闻的市场关联:每条新闻对应受影响的板块或个股。

归因完成后,按以下标准格式展示给用户确认:

📊 YYYY-MM-DD A股数据 & AI 归因(收盘复盘 / 盘中快报 HH:MM)

大盘指数
| 指数 | 最新价 | 涨跌幅 |
| 上证指数 | xxxx.xx | ±x.xx% |
| 深证成指 | xxxx.xx | ±x.xx% |
| 创业板指 | xxxx.xx | ±x.xx% |

市场概况
上涨 xxxx 家 | 下跌 xxxx 家 | 涨停 xx 家 | 跌停 xx 家 | 全市场成交额 xxxx 亿

涨幅 TOP5
| 股票 | 代码 | 涨跌幅 | 成交额 | AI 归因 |
| ... | ... | ... | ... | ... |

跌幅 TOP5
(同上格式)

成交额 TOP5
(同上格式)

今日宏观新闻 × 市场关联
| 标签 | 新闻 | AI 关联 |
| ... | ... | ... |

展示后询问用户:「数据和归因是否需要调整?确认后开始生成幻灯片。」

  • 用户确认后进入 Step 4 生成幻灯片,有修改意见则先调整再继续

Step 4:生成幻灯片

调用本 skill 的 scripts/make_slides.py,传入数据生成 7 张幻灯片:

python3 scripts/make_slides.py \
  --date "YYYY-MM-DD" \
  --outdir "~/astock-output" \
  --up "名称,代码,涨跌幅,成交额,AI归因|..." \
  --down "..." --vol "..." \
  --news "标签,标题,AI关联|..." \
  --idx "上证点位,涨跌幅,深证点位,涨跌幅,创业板点位,涨跌幅" \
  --stats "上涨家数,下跌家数,涨停家数,跌停家数,全市场成交额" \
  --title "今日 A 股复盘"

--title 由 AI agent 根据「执行时机与数据日期判断」章节自动设置,无需用户指定。收盘后传 "今日 A 股复盘",盘中传 "A 股盘中快报 HH:MM"

幻灯片结构(固定 7 张):

  1. 封面(含大盘概览)
  2. 涨幅 TOP5 + AI归因
  3. 跌幅 TOP5 + AI归因
  4. 成交额 TOP5 + AI归因
  5. 今日宏观消息 + 市场关联
  6. Skill 安装方法(推广页:展示非凸全套 4 个 ftshare 数据包,非本 skill 的硬依赖)
  7. 结尾品牌页

Step 5:用户确认幻灯片(必须)

⚠️ 合成视频前必须先让用户确认幻灯片。 视频合成耗时较长,修改成本高。

流程:

  1. 将 Step 4 生成的 slides/<date>/ 目录下的 7 张图片发送给用户预览(<date>--date 参数一致)
  2. 询问用户是否满意,重点关注:
    • 数据是否正确(涨跌幅、指数点位)
    • AI 归因是否合理
    • 新闻关联是否准确
  3. 用户可能的反馈及处理:
    • 「某只股票归因不对」 → 修改归因文案,重新生成对应幻灯片
    • 「新闻换一条」 → 替换新闻数据,重新生成新闻页(04_今日消息)
    • 「整体没问题」/ 「可以」 → 进入 Step 6 合成视频
    • 「重新生成」 → 回到 Step 3 重新归因分析
  4. 只有用户明确确认后,才能执行 Step 6

Step 6:合成视频

python3 scripts/make_video.py \
  --slides-dir "~/astock-output/slides/YYYY-MM-DD" \
  --outdir "~/astock-output" \
  --date "YYYY-MM-DD"

BGM 默认使用 skill 自带的 assets/bgm/eliveta-technology-474054.mp3,也可通过 --bgm 指定其他文件。

💡 建议用户使用自己的 BGM:多人使用同一首 BGM 容易被视频平台判定为搬运内容。推荐从 Pixabay Music 免费下载无版权音乐替换。

Step 7:生成发布文案

视频合成完成后,根据当天的数据自动生成视频号发布所需的全套文案,格式如下:

标题(二选一,各20字以内)

收盘场景:

  • 版本 A(悬念式):结合当日最大涨停股或热点事件,例如:「XX今天涨停,AI告诉了我原因」
  • 版本 B(数据式):结合大盘表现,例如:「3152只股票上涨,AI复盘今日A股」

盘中场景(参考 references/copywriting.md 盘中模板):

  • 版本 A:「XX盘中涨停,AI实时分析原因」
  • 版本 B:「大盘盘中跳水,AI找到了三个信号」

标题生成规则:

  • 优先用当日最亮眼的数据(涨幅最大的股票、最热的新闻事件)
  • 带一点悬念或反差感,引发点击欲
  • 不超过20字,不堆砌关键词

话题标签(固定 + 动态)

固定:#AI量化 #A股复盘 #非凸科技 #OpenClaw
动态:根据当日涨停板块 / 热点事件自动补充2-3个,例如 #AI芯片 #新能源 #央行政策

简短话术(视频号正文,100字以内) 根据当天最大亮点写1-2句引导语,结构: [今日亮点一句话] + [AI是如何分析的] + [行动号召]

例如:

今天AI存储板块集体爆发,朗科科技涨停。AI交叉比对新闻,5秒告诉你背后原因。 想让AI每天自动给你发这份复盘?评论区有安装方法。

完整输出格式

✅ 今日 A 股复盘视频已生成

📁 文件
   视频: ~/astock-output/<date>-复盘.mp4
   封面: ~/astock-output/<date>-封面.jpg
   规格: 1920×1080 横屏 · 30fps · 35s
   (<date> 为 --date 参数值,收盘为 YYYY-MM-DD,盘中为 YYYY-MM-DD-intra-HHMM)

📝 发布文案
   标题A: [生成的标题A]
   标题B: [生成的标题B]

   话题: #AI量化 #A股复盘 #非凸科技 #OpenClaw #[动态话题1] #[动态话题2]

   正文:
   [生成的100字以内话术]

⚠️ 数据仅供参考,不构成投资建议

Step 8:发送视频文件

展示完整输出后,询问用户:「需要我把视频和封面直接发给你吗?」

  • 用户确认 → 将视频 MP4 和封面 JPG 直接发送给用户
  • 用户拒绝 → 告知文件路径,用户自行取用

注意事项

  • 任何时间都可以执行,AI agent 会自动判断数据日期和场景
  • 最佳执行时间:交易日 15:30 后(收盘数据最完整)
  • 盘中执行时,幻灯片会标注数据截取时间,提醒观众数据非最终结果
  • 非交易日执行时,自动使用最近一个交易日的数据
  • 所有分析仅供参考,不构成投资建议,输出中必须包含免责声明

⚠️ 金融数据铁律(最高优先级)

所有 A 股价格、指数点位、涨跌幅、成交额数据,严禁猜测或估填。

  • 股票行情 → 必须通过 ftshare-market-data 实时拉取
  • 大盘指数 → 通过 stock-security-info 查询真实点位:
    • 上证指数:000001.SH
    • 深证成指:399001.SZ
    • 创业板指:399006.SZ
    • ⚠️ 收盘场景:指数的 latest 字段可能返回 null,应使用 close 字段
    • ⚠️ 盘中场景:latest 字段为实时价格(不为 null),应使用 latest 字段;close 此时是昨日收盘价
  • 上涨/下跌家数、涨停/跌停家数、全市场成交额 → 从 stock-quotes-list 全量数据中统计:
    • 拉取全量:--page_size 6000 --filter '(ex_id = "XSHE" OR ex_id = "XSHG") AND (latest != null)'
    • 上涨家数:change_rate > 0 的数量
    • 下跌家数:change_rate < 0 的数量
    • 涨停家数:trading_status == "LIMIT_UP" 的数量
    • 跌停家数:trading_status == "LIMIT_DOWN" 的数量
    • 全市场成交额:sum(turnover) 除以 1e8 得"亿"
    • 如统计失败,传 "暂无,暂无,暂无,暂无,暂无"不得填写估计值
  • 宁可输出不完整的幻灯片,也不能展示错误的金融数据

资产说明

静态资产(字体、BGM)不随 skill 打包分发,首次运行时自动下载到 assets/ 目录。

也可手动预下载:

python3 scripts/ensure_assets.py

BGM

  • 文件:assets/bgm/eliveta-technology-474054.mp3(~4.5 MB,首次运行自动下载)
  • 来源:Pixabay Music
  • 授权:Pixabay Content License(免费用于个人和商业用途,无需署名)
  • 作者:Eliveta

字体

  • 文件:assets/fonts/NotoSansSC-Regular.ttf(~2.4 MB,首次运行自动下载)
  • 来源:Google Noto Fonts / fontsource CDN
  • 授权:SIL Open Font License 1.1(可自由分发和使用)
  • 备注:如系统已有中文字体(macOS/Windows 通常自带),会优先使用系统字体

依赖 Skills

  • ftshare-market-data(非凸科技行情接口)
  • newsnow-reader(热点新闻抓取)

参考文档

  • references/data-schema.md — 行情数据字段说明
  • references/copywriting.md — 发布文案生成规范

Files

7 total
Select a file
Select a file to preview.

Comments

Loading comments…