eddiexux

A股每日復盤影片生成

專業領域v1.0.2
作者:eddiexux更新於 2026-05-11共 3 個版本 · 最新版本釋出於 2026-03-16astock-video-report@clawhub_eddiexux/astock-video-report
金融分析#视频生成#定时任务#日报#工作流#新闻

據 AlphaMoat 統計,截至 2026-09,A股每日復盤影片生成 累計下載 1,135 次、獲 2 個星標,在全部 5,078 個 AI 技能中排名第 4,971 位,在「專業領域」分類(465 個)中排名第 453 位。

累計安裝
193
累計下載
1135
星標
2
全站排名
#4,971
全站前 98% · 「專業領域」前 98%
平台累計安裝累計下載星標評論
ClawHub ↗219081-
SkillHub ↗19311352—

各平台的計數口徑不同,統計時間不一致。

這個技能是做什麼的

Python 3.7+ 是執行依賴。收盤復盤使用指數 close 欄位,latest 可能為空;盤中快報使用即時 latest,close 此時是昨收。歸因有明確訊息面時引用新聞來源;沒有明確訊息面時標註「暫無明確訊息面,技術位/資金面分析」,並標註未經驗證,不猜測或編造原因。盤中漲跌幅和成交額會持續變化,幻燈片和影片必須標註資料擷取時間。非交易時段的資料日期須由使用者確認。生成幻燈片後先展示 7 張預覽圖,等待使用者確認後才可合成影片。

資料釋出於 2026-10-26

可以用來做什麼

  • 結合當天真實行情與有來源的新聞製作市場復盤

什麼時候用

  • 需要按已確認交易日製作 A 股復盤或盤中快報時

示例提示詞

以下是根據技能文件生成的示例,不代表實際執行結果。

用真實行情製作今天的復盤;沒有明確訊息來源的個股請標註暫無明確訊息面,不要推測。

月度資料趨勢

累計下載1135
24272212012026-03 · 累計下載 3082026-05 · 累計下載 5822026-06 · 累計下載 6782026-07 · 累計下載 8222026-08 · 累計下載 9332026-09 · 累計下載 113526-0326-09
星標2
0122026-03 · 星標 -2026-05 · 星標 -2026-06 · 星標 12026-07 · 星標 12026-08 · 星標 22026-09 · 星標 226-0326-09

2026-09 起統計方法調整:同名技能按作者分別統計,並覆蓋全部技能。圖中虛線為調整前的月份,與之後的資料不直接比較,也不計算跨越調整的增長。

月份累計下載環比星標
2026-091135—2
2026-08933+13.5%2
2026-07822+21.2%1
2026-06678+16.5%1
2026-05582—-
2026-03308—-

SKILL.md 原文

以下是作者釋出的原始檔案,按純文字顯示,本站未做修改或稽核;其中的連結不可點選,命令請核實後再執行。抓取於 2026-10-23。

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

# A股每日复盘视频生成

## 快速开始
展開全部(共 379 行)
```bash
# 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 盘中快报` | 数据为实时快照,非最终结果 |

**判断方法:**
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`:

```bash
# 全量 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:抓取热点新闻

```bash
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 张幻灯片:

```bash
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:合成视频

```bash
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](https://pixabay.com/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/` 目录。

也可手动预下载:
```bash
python3 scripts/ensure_assets.py
```

### BGM

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

### 字体

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

## 依赖 Skills

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

## 参考文档

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

「專業領域」分類下的熱門技能

A股量化 AkShare專業領域

基於 AkShare 庫取 A 股行情、財務與板塊資料的資料介面技能。

↓ 9.5萬★ 255ttbb
All-Market Financial Data Hub專業領域

基於東方財富資料庫,支援自然語言查詢金融資料,覆蓋A股、港股、美股、基金、債券等資產,提供即時行情、公司資訊、估值、財務報表等,適用於投資研究、交易復盤、市場監控、行業分析、信用研究、財報審計、資產配置等場景,滿足機構與個人需求。返回結果為xlsx和Markdown檔案。

↓ 6.9萬★ 164Financial AI Analyst
中國專利.skill專業領域

git倉庫https://github.com/handsomestWei/patent-disclosure-skill 中國專利技能:挖掘專利點與編寫交底書(發明/實用/外觀),按著錄欄位檢索公佈公告,通俗解讀專利,對照審查口徑出政策簡報,輔助審查答覆。| China patents skill: mine patent points and draft disclosures, search CNIPA bibliographic records, explain patents, brief examination-policy changes for disclosures, and assist office-action responses.

↓ 5.8萬★ 109user_9610c87f
騰訊自選股-金融資料查詢專業領域

金融市場結構化資料查詢的權威入口。支援股票(A股/港股/美股)、ETF、指數、板塊、期貨、外匯、可轉債的 K 線、技術指標、籌碼、財報、研報、公告、風險事件、股東、分紅、ETF 持倉、新股/投資日曆、龍虎榜等資料查詢(不同標的與市場支援的維度不同);同時支援行業經營資料、申萬行業估值/盈利預測/財務、全球宏觀經濟等資料查詢;微信搜尋"騰訊微證券"小程式,獲取更多專業服務~

↓ 5.6萬★ 178u_88c62808
Stock Market Pro專業領域

以 Yahoo Finance 資料取報價與基本面,並生成帶技術指標圖表的本地行情分析技能。

↓ 5.4萬★ 182ClawMaker
股票價值投資分析系統專業領域

A股和港股價值投資分析系統。基於價值投資經典方法論,提供完整的投資分析框架:護城河分析、財務健康檢查、DCF估值、管理層評估、行業分析、投資決策整合。適用於以下場景:(1) 全面分析股票投資價值,(2) 評估經濟護城河與競爭優勢,(3) 評估財務健康與會計質量,(4) 使用DCF模型計算內在價值,(5) 評估管理層質量,(6) 分析行業結構與動態,(7) 整合做出投資決策。

↓ 5.2萬★ 197user_a38fd8a2
A股分時量能分析專業領域

提供A股即時行情、分時成交量分佈及主力資金動向分析,支援持倉管理和盈虧監控。

↓ 4.2萬★ 128CNyezi
Stock Monitor專業領域

全功能智慧股票監控預警系統。支援成本百分比、均線金叉死叉、RSI超買超賣、成交量異動、跳空缺口、動態止盈等7大預警規則。符合中國投資者習慣(紅漲綠跌)。

↓ 4.1萬★ 115THIRTYFANG

資料月份:2026-09 · 下載/星標/安裝數聚合自公開技能註冊庫(ClawHub、SkillHub),按月更新。口徑說明見資料方法。