A股每日复盘视频自动生成。完整工作流:拉取非凸科技真实行情数据 → 抓取热点新闻 → AI 归因分析 → 生成横屏 PPT 幻灯片 → 合成视频+封面图。当用户说「生成今日A股复盘视频」「A股日报」「出今天的复盘」或触发定时任务时使用。
A股每日复盘视频生成
功能概述
A股每日复盘视频生成是一项面向实际任务的技能,主要用于python 3.7+;pillow.pip安装枕头+fonttools. + brotli.pip安装字体工具 brotli;
核心要点
- 字体格式转换(首次自动安装).ffmpeg.brew安装ffmpeg/pt安装ffmpeg;
- ftshare-market-dat。
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
使用与执行
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
结果检查与注意事项
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
A股每日复盘视频生成
快速开始
# 1. 安装依赖 bash scripts/setup.sh # 2. 告诉 AI 「帮我生成今天的A股复盘视频」
依赖
| 依赖 | 安装方式 | 说明 |
|---|---|---|
| Python 3.7+ | 系统自带 | |
| pillow | pip install pillow |
生成幻灯片 |
| fonttools + brotli | pip install fonttools brotli |
字体格式转换(首次自动安装) |
| ffmpeg | brew install ffmpeg / apt install ffmpeg |
合成视频 |
| ftshare-market-data | skillhub install ftshare-market-data |
非凸科技行情接口 |
| newsnow-reader | skillhub 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 盘中快报 |
数据为实时快照,非最终结果 |
判断方法:
- 获取当前时间(北京时间)
- 拉取任意一只股票数据,检查
symbol_status.extra字段:"CLOSED"/"NOT_OPEN"→ 非交易时段,使用最近一个交易日的收盘数据"TRADING"/"CALL_AUCTION"→ 盘中,标注为盘中快报- 其他值(如
"BREAK"午休等)→ 按盘中处理,标注当前时间
- 根据场景自动设置
--title参数:"CLOSED"/"NOT_OPEN"→--title "今日 A 股复盘""TRADING"/"CALL_AUCTION"/ 其他 →--title "A 股盘中快报 HH:MM"(HH:MM 为当前北京时间)
--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 是否已安装:
- 检测
ftshare-market-dataskill 是否存在(尝试定位其run.py) - 检测
newsnow-readerskill 是否存在(尝试定位其scripts/fetch_news.py) - 如果任一缺失,提示用户:
⚠️ 缺少必需的依赖 skill,请先运行: bash scripts/setup.sh 或手动安装: skillhub install ftshare-market-data skillhub install newsnow-reader
- 依赖齐全后,继续 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/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 /run.py stock-security-info --symbol "000001.SH" # 上证指数 python3 /run.py stock-security-info --symbol "399001.SZ" # 深证成指 python3 /run.py stock-security-info --symbol "399006.SZ" # 创业板指
指 ftshare-market-data skill 的安装目录,AI agent 会自动定位。
Step 2:抓取热点新闻
python3/scripts/fetch_news.py wallstreetcn 8
指 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 张):
- 封面(含大盘概览)
- 涨幅 TOP5 + AI归因
- 跌幅 TOP5 + AI归因
- 成交额 TOP5 + AI归因
- 今日宏观消息 + 市场关联
- Skill 安装方法(推广页:展示非凸全套 4 个 ftshare 数据包,非本 skill 的硬依赖)
- 结尾品牌页
Step 5:用户确认幻灯片(必须)
⚠️ 合成视频前必须先让用户确认幻灯片。 视频合成耗时较长,修改成本高。
流程:
- 将 Step 4 生成的
slides/目录下的 7 张图片发送给用户预览(/ 与--date参数一致) - 询问用户是否满意,重点关注:
- 数据是否正确(涨跌幅、指数点位)
- AI 归因是否合理
- 新闻关联是否准确
- 用户可能的反馈及处理:
- 「某只股票归因不对」 → 修改归因文案,重新生成对应幻灯片
- 「新闻换一条」 → 替换新闻数据,重新生成新闻页(04_今日消息)
- 「整体没问题」/ 「可以」 → 进入 Step 6 合成视频
- 「重新生成」 → 回到 Step 3 重新归因分析
- 只有用户明确确认后,才能执行 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/-复盘.mp4 封面: ~/astock-output/ -封面.jpg 规格: 1920×1080 横屏 · 30fps · 35s ( 为 --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— 发布文案生成规范
热门AI工具
相关专题
Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。
0
2026.10.28
Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。
0
2026.10.28
Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。
0
2026.10.28
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.6万人学习
共6课时 | 54.7万人学习