前言
最近构建了一套 skills 财经相关文档生成技能,结合 Python 脚本与 AI Agent(Gemini CLI/ Cursor / Open Claw),实现了财经公众号内容的自动化维护。本文记录系统的设计思路与实现细节。
1. Skill 拆解
为了实现模块化和可维护性,我将公众号的内容生产拆解为四个独立的 Skill:
| Skill | 功能 | 产出 |
|---|---|---|
analyze_public_company | 个股研报 | A 股上市公司价值分析、财务数据及消息汇总 |
daily_market_pulse | 每日龙虎榜 | 龙虎榜数据图解、游资席位追踪及资金流向 |
weekly_financial_report | 财经周报 | 市场回顾、宏观大事及热点板块展望 |
upload_images | 图片上传 | 将生成的本地图片上传至图床并替换 Markdown 路径 |
这种拆分使得每个 Skill 的数据源和处理逻辑独立,便于迭代和排查问题。
依赖关系:

内容 Skill 产出 Markdown 和本地图片,最后统一调用工具 Skill 替换为在线 URL,生成的 Markdown 可直接发布。
2. API 获取数据
系统设计的核心原则是:能用 API 获取的结构化数据,绝不让 AI 去搜索。
让 AI 直接搜索数据存在明显缺陷:
- Token 消耗大:AI 反复搜索、阅读网页会消耗大量 Token。
- 数据不可控:AI 可能获取到旧数据或错误来源的数据,且难以回溯验证。
因此,财务和行情等结构化数据由 Python 脚本通过 API 获取;AI 仅负责处理非结构化信息(如新闻摘要、公告解读)和最终的分析写作。
3. 数据获取方案
所有数据获取脚本均基于 argparse,输出统一的 JSON 格式供 AI 读取。
3.1 基础数据源
- 新浪财经:获取实时行情(价格、成交量)。
- 腾讯财经:获取估值数据(PE、PB、市值)。
- 东方财富:获取历史 K 线及个股所属板块/概念。
数据格式示例(AI 读取的 JSON):
{
"symbol": "000001",
"realtime": {
"name": "平安银行",
"price": 11.05,
"change_pct": -0.36
},
"valuation": {
"pe_ttm": 4.97,
"market_cap": 2144.35
},
"sector": "银行",
"concepts": ["破净股", "机构重仓", "HS300_"]
}3.2 龙虎榜数据
脚本一次性拉取当日市场概况、资金流向及龙虎榜明细。 亮点功能:内置游资别名映射表,将“XX证券营业部”自动翻译为“作手新一”等知名游资代号,提升报告的可读性。
4. 图片生成
为了解决 AI 配图不可控的问题,所有图表均由 Python 代码生成。
4.1 封面图 (Pillow)
使用 Pillow 库纯代码绘制,不依赖外部素材。统一设计语言:深色渐变背景 + 装饰光晕 + 动态文字,保证所有文章封面风格一致且专业。

4.2 数据图表 (Matplotlib + Seaborn)
基于 Matplotlib 绘制各类专业图表,包括:
- 股价走势图:K线趋势与均线。
- 财务分析图:营收/净利润双轴图、利润率趋势图。
- 业务构成:环形饼图。

核心绘图逻辑(Python):
def create_dual_axis_chart(data, title, filename):
"""生成营收(柱状)与净利润(折线)双轴图"""
fig, ax1 = plt.subplots(figsize=(12, 6))
# 左轴:营收柱状图
sns.barplot(x=years, y=revenue, ax=ax1, color='#D32F2F', alpha=0.8)
ax1.set_ylabel('营收 (亿元)')
# 右轴:净利润折线图
ax2 = ax1.twinx()
ax2.plot(years, profit, color='#1976D2', marker='o', linewidth=2)
ax2.set_ylabel('净利润 (亿元)')
# 智能处理中文字体
font_path = get_chinese_font() # 自动适配 macOS/Linux/Win
plt.title(title, fontproperties=font_path)
plt.savefig(filename, dpi=300)4.3 特色图表:龙虎榜蝴蝶图
针对龙虎榜数据,设计了中轴对称的蝴蝶图:左侧红色显示买入席位,右侧绿色显示卖出席位。一张图即可直观展示多空博弈格局及机构、游资动向。

5. 工作流
每个内容 Skill 均遵循标准的四阶段流程:

- Phase 1(脚本) :调用 API 获取数据,输出 JSON。
- Phase 2 (脚本) :根据数据生成封面和图表 (PNG)。
- Phase 3 (AI) :AI 读取 JSON,参考 Markdown 模板撰写分析报告。
- Phase 4 (脚本) :扫描 Markdown,将本地图片上传图床并替换路径。
优势:Phase 1-2 纯脚本执行,无需 AI 介入,高效且零 Token 消耗;AI 仅需专注于它擅长的分析与写作。
6. AI 操作手册
每个 Skill 目录下包含一个 SKILL.md,作为 AI 的执行指南,明确定义:
- 环境依赖:所需 Python 库。
- 执行步骤:每个阶段调用的脚本命令及参数。
- 输出规范:文件保存路径及命名规则。
- 写作要求:禁止 AI 腔,强调数据驱动和客观分析。
7. 执行流程示例
生成一篇个股研报的典型流程:

8. 踩坑记录
- 接口编码:不同源(新浪/腾讯/东财)编码格式不一(GBK/UTF-8),需统一转码处理。
- SSL 验证:macOS 环境下部分 HTTPS 请求需处理 SSL 证书验证问题。
- 中文字体:Matplotlib 需适配不同操作系统(macOS/Linux/Windows)的中文字体路径,防止乱码。
- 图床限流:批量上传时需增加延时,避免触发频率限制。
- 负值处理:绘制净利润柱状图时,需特殊处理负值标签的位置和颜色。
9. 总结
核心理念是:各司其职。
让脚本做执行(拉数据、画图、上传),让 AI 做思考(理解、分析、写作)。
通过将繁琐的数据收集和可视化工作代码化,AI 能够专注于高价值的信息整合与观点输出,从而实现高效、低成本且高质量的内容自动化生产。
Jason Yan