从新闻提取财报:一个可复用的AI Skill模板

上周帮朋友处理Odakyu Railway的财报数据,发现90%的时间花在复制粘贴和格式化上。新闻正文里明明有表格,但每次手动整理总会漏列或对齐错位。我写了一个AI Skill专门干这事,20秒出干净的结构化数据。今天拆给你看。

这个Skill解决什么具体问题

  • 从TradingView/Reuters等金融新闻中提取表格数据(如营收、利润、同比变化)
  • 自动映射成统一的JSON schema,方便直接写进数据库或计算
  • 处理同义词(比如“parent results” = “母公司业绩”)、单位标准化(百万日元→数值)

触发条件和适用场景

  • 输入:一条新闻URL或全文文本,重点是含有财报/经营指标表格的部分
  • 触发:手动粘贴 / 通过RSS或API自动推送
  • 场景
    • 每天批量处理多个公司的财报
    • 对比历年数据做趋势分析
    • 将新闻数据喂入其他分析工具(如Excel、Notion、Python脚本)

完整Skill结构(SKILL.md示例)

markdown
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
# 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

text
1
提取表格数据。

输出:可能会返回一段散文描述,或只写“找到表格但未结构化”。没有统一格式,无法直接复用。

好Prompt(本文推荐)

text
1 2 3 4 5 6 7 8 9 10 11
你是一个金融数据提取器。输入是一段包含母公司业绩数字的新闻文本。请按以下规则处理:
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,不要额外解释。

输入:
"""
[待提取文本]
"""

输出(示例):

json
1 2 3 4 5 6 7 8 9
{
  "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有效

  1. 明确输出schema:AI不需要猜,知道要生成JSON。
  2. 值统一处理:mln→1e6这种显式转换避免了“1.2 billion”的歧义。
  3. 异常处理:给null而不是忽略,后期清洗更方便。
  4. 角色设定:“金融数据提取器”让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,你才有时间做真正有意义的分析。