从新闻提取财报:一个可复用的AI Skill模板
上周帮朋友处理Odakyu Railway的财报数据,发现90%的时间花在复制粘贴和格式化上。新闻正文里明明有表格,但每次手动整理总会漏列或对齐错位。我写了一个AI Skill专门干这事,20秒出干净的结构化数据。今天拆给你看。
这个Skill解决什么具体问题
- 从TradingView/Reuters等金融新闻中提取表格数据(如营收、利润、同比变化)
- 自动映射成统一的JSON schema,方便直接写进数据库或计算
- 处理同义词(比如“parent results” = “母公司业绩”)、单位标准化(百万日元→数值)
触发条件和适用场景
- 输入:一条新闻URL或全文文本,重点是含有财报/经营指标表格的部分
- 触发:手动粘贴 / 通过RSS或API自动推送
- 场景:
- 每天批量处理多个公司的财报
- 对比历年数据做趋势分析
- 将新闻数据喂入其他分析工具(如Excel、Notion、Python脚本)
完整Skill结构(SKILL.md示例)
# SKILL.md
name: financial_table_extractor
description: Extract financial results tables from news text and output structured JSON.
trigger:
type: manual_or_webhook
input_format: text
steps:
1. Parse input to locate table sections (keywords: results, revenue, profit, year-over-year).
2. Identify row/column headers and numeric values.
3. Normalize units (e.g., "1.5 bln" → 1500000000).
4. Output JSON following schema below.
output_schema:
type: object
properties:
company:
type: string
period:
type: string
description: "e.g., FY2025/26"
table_data:
type: array
items:
type: object
properties:
metric:
type: string
value:
type: number
unit:
type: string
change_vs_prior:
type: string
实际案例演示
假设你拿到这一段新闻原文(脱敏后):
Odakyu Railway reported parent-only results for FY2025/26:
Operating revenue: 1,235.6 mln yen (+2.1% y/y)
Operating profit: 98.3 mln yen (-1.4% y/y)
Net profit: 62.1 mln yen (+0.8% y/y)
差Prompt
提取表格数据。
输出:可能会返回一段散文描述,或只写“找到表格但未结构化”。没有统一格式,无法直接复用。
好Prompt(本文推荐)
你是一个金融数据提取器。输入是一段包含母公司业绩数字的新闻文本。请按以下规则处理:
1. 找到所有货币数值和对应的同比变化。
2. 将所有数值先转为数字(去掉逗号、单位缩写如mln = 1e6)。
3. 构建一个JSON对象,包含:company(从上下文中提取或默认“Unknown”),period(提取如“FY2025/26”),table_data(数组,每项有metric、value、unit、change_vs_prior)。
4. 如果数值没有同比变化,change_vs_prior填入null。
5. 只输出JSON,不要额外解释。
输入:
"""
[待提取文本]
"""
输出(示例):
{
"company": "Odakyu Railway",
"period": "FY2025/26",
"table_data": [
{"metric": "Operating revenue", "value": 1235600000, "unit": "yen", "change_vs_prior": "+2.1%"},
{"metric": "Operating profit", "value": 98300000, "unit": "yen", "change_vs_prior": "-1.4%"},
{"metric": "Net profit", "value": 62100000, "unit": "yen", "change_vs_prior": "+0.8%"}
]
}
为什么好Prompt有效
- 明确输出schema:AI不需要猜,知道要生成JSON。
- 值统一处理:mln→1e6这种显式转换避免了“1.2 billion”的歧义。
- 异常处理:给null而不是忽略,后期清洗更方便。
- 角色设定:“金融数据提取器”让LLM专注于格式化任务,避免闲聊。
复用和组合技巧
这个Skill可以跟其他模块组合,形成更强的自动化管线:
- 变体1:批处理 把多个新闻文本用
|||分隔,一次性输出数组。 - 变体2:图表生成 提取后用
chart_skill画同比柱状图。 - 变体3:增量对比 配合历史数据Skill,自动计算两年变化并生成报告。
- 组合方式:
```python用Tavily搜索+本Skill
from news_extractor import extract_news
from financial_table_extractor import parse
news_text = extract_news("Odakyu Railway 2026 parent results")
json_data = parse(news_text)
然后写进数据库
```
一点个人看法
很多人以为提取表格是OCR的活,但对LLM来说,语义理解比视觉定位更重要。原新闻中表格可能以段落形式出现(如上例),LLM能准确识别数值和关联关系。所以我建议优先用文本Prompt,只在真的遇到图片表格时才上OCR。另外,单位标准化是最容易翻车的地方,一定要在Prompt里显式列出常见缩写,比如k、mln、bln、tn。实测如果不指定,GPT4有时会把“1.5bln”当成1.5(单位丢失)。
总之,这个Skill我用了三个月,处理了200+条财报,平均每个新闻节省7分钟。你改一下行业术语,就能移植到电商销售数据、运营KPI甚至比赛积分表。把重复的事交给AI,你才有时间做真正有意义的分析。