mcpField
E
earningswhispers

earningswhispers

github.com/gauss314数据与数据库252256 次安装19 周前更新
代码仓库

关于 earningswhispers

earningswhispers 是从 EarningsWhispers 获取公司财报电话会议文字稿的技能,面向分析上市公司业绩的用户。它提供 CLI 和 Python 客户端,可读取最新文字稿的陈述与问答;API 不提供历史文字稿。

主要功能

  1. 01按股票代码获取最新文字稿
  2. 02提取公司、日期和季度信息
  3. 03读取陈述与问答内容
  4. 04通过 CLI 批量查询股票代码
  5. 05使用本地缓存并可强制刷新

适用场景

  1. 01梳理公司财报电话会议内容
  2. 02查阅管理层陈述和问答
  3. 03批量检查多个公司的最新文字稿
  4. 04将文字稿字段用于后续分析

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gauss314/skills --skill earningswhispers

安装后在 Claude Code 中输入/earningswhispers确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
REFERENCES.md
scripts/
ew_cli.py
ew_client.py

详细介绍

EarningsWhispers — Earnings Transcripts API(全球覆盖)

用于通过 EarningsWhispers 的公开 API提取完整的 earnings transcripts。

与 Seeking Alpha 不同,该网站提供开放的公开 API,无需身份验证、没有反机器人机制,也没有严格的速率限制。Transcripts 包含 earnings calls 的完整文本,包括参与者、准备好的发言和问答环节。


API 端点

GET https://www.earningswhispers.com/api/conferencecalls?t={TICKER}
参数类型描述
tstring(必填)股票代码(AAPL、MSFT、GGAL、SHEL……)
ccidintconference call 的内部 ID(可选,不支持历史记录)

响应: JSON 数组。如果该股票代码存在,数组中会包含 1 个对象,即最新的 transcript。如果不存在,则返回空数组。

Respuesta tipica (~50 KB para GGAL, ~90 KB para AAPL):
[{
  "ccid": 132,
  "ticker": "GGAL",
  "company": "Grupo Financiero Galicia S.A.",
  "ccDate": "2026-05-14T11:00:00",
  "ccYear": 2026,
  "ccQtr": 1,
  "speakers": "JSON string con array de speakers",
  "speakerMap": "JSON string con mapping de nombres y cargos",
  "summary": null,
  "aiSummary": null,
  "status": ""
}]

实际覆盖范围

EarningsWhispers 在其平台上追踪全球约 33,500 多只股票。其中有相当一部分可通过 API 获取完整的 earnings transcripts。

哪些公司有 transcripts?

任何进行earnings conference calls的上市公司都可能有 transcript。实际情况如下:

  • 大型股:几乎全面覆盖(AAPL、MSFT、JPM、SHEL、TM……)
  • 中型股:覆盖率高(大多数都有 transcripts)
  • 小型股:部分覆盖(取决于是否举行公开电话会议)
  • ADR:阿根廷、巴西、墨西哥等地的 ADR 覆盖率较高……
  • ETF、基金、债券:不覆盖(不会举行 earnings calls)
如何确认某个股票代码是否有 transcript?

只需试用 API:

# Si devuelve datos, tiene transcript
curl "https://www.earningswhispers.com/api/conferencecalls?t=AAPL"

# Si devuelve [] (array vacio), no tiene transcript
curl "https://www.earningswhispers.com/api/conferencecalls?t=XXXX"
截至 2026-05-30 各地区示例

美国 — 覆盖范围广(任何举行 earnings calls 的美国上市公司):

股票代码公司Transcript
AAPLApple Inc.✅ Q2 2026
MSFTMicrosoft Corp.✅ Q3 2026
GOOGAlphabet Inc.✅ Q1 2026
AMZNAmazon.com, Inc.✅ Q1 2026
METAMeta Platforms, Inc.✅ Q1 2026
NVDANVIDIA Corp.✅ Q1 2027
TSLATesla, Inc.✅ Q1 2026
JPMJPMorgan Chase & Co.✅
VVisa Inc.✅
WMTWalmart Inc.✅
DISWalt Disney Co.✅
NKENike Inc.✅
XOMExxon Mobil Corp.✅
UNHUnitedHealth Group✅
PFEPfizer, Inc.✅
DALDelta Air Lines✅
COINCoinbase Global✅

欧洲:

股票代码公司Transcript
SHELShell plc✅
BPBP p.l.c.✅
TTETotalEnergies SE✅
HSBCHSBC Holdings✅
BBVABBVA✅

亚洲:

股票代码公司Transcript
TMToyota Motor Corp.✅
HMCHonda Motor Co.✅
BABAAlibaba Group✅
JDJD.com, Inc.✅
TCEHYTencent Holdings✅
INFYInfosys Technologies✅

拉丁美洲:

股票代码公司Transcript
ITUBItau Unibanco✅
BBDBanco Bradesco✅
VALEVale S.A.✅
AMXAmerica Movil✅
FMXFomento Economico Mexicano✅
SBSCia de Saneamento✅
WMMVYWalmart Mexico✅

阿根廷:

股票代码公司Transcript
GGALGrupo Financiero Galicia✅ Q1 2026
YPFYPF S.A.✅ Q1 2026
TGSTransportadora de Gas✅ Q1 2026
PAMPampa Energia✅ Q4 2025
BMABanco Macro✅

无法使用的股票代码

某些股票代码可能没有 transcript,原因如下:

原因示例
不举行 earnings callsETF(SPY、QQQ、ARKK)、债券
股票代码不正确GOOGL -> GOOG、WALMEX -> WMMVY
数据库中未收录部分小型股
公司破产/合并SBNY、FRC

股票代码说明

  • GOOGL 无法使用,请改用 GOOG(Alphabet)
  • WALMEX 无法使用,请改用 WMMVY(Walmart Mexico)
  • SNE(Sony 的旧股票代码)已不再使用,SONY 也未收录
  • 数据库中不存在的股票代码会返回 [](空数组)

安装

python -c "from curl_cffi import requests; print('OK')"

依赖项:curl_cffi(已在环境中可用)。


脚本

脚本描述
ew_client.py集成 CLI 的完整客户端
ew_cli.pyCLI 封装器

快速使用

CLI
# Cualquier ticker global
python ew_cli.py get AAPL
python ew_cli.py get SHEL --json
python ew_cli.py batch MSFT,GOOG,AMZN --json
python ew_cli.py info GGAL

# Lista de tickers de ejemplo
python ew_cli.py list
在 Python 中使用
from ew_client import EarningsWhispersClient

client = EarningsWhispersClient()

# Transcript de cualquier empresa global
tr = client.get_transcript("AAPL")
print(tr.company)                    # "Apple, Inc."
print(tr.prepared_remarks[:500])

# Como dict (para JSON)
data = tr.to_dict()

# Batch
results = client.get_transcripts_batch(["MSFT", "GOOG", "AMZN"])

Transcript 的关键字段

tr = client.get_transcript("NVDA")
tr.company          # "NVIDIA Corp."
tr.date             # "2026-05-20T16:30:00"
tr.quarter_label    # "Q1"
tr.year             # 2027 (fiscal year)
tr.prepared_remarks # Texto de la presentacion
tr.qa_section       # Preguntas y respuestas
tr.summary          # Resumen ejecutivo (puede ser None)
tr.ai_summary       # Resumen AI (puede ser None)

缓存

  • 本地缓存位于 .cache/transcript_{TICKER}.json
  • 过期时间:24 小时
  • 强制刷新:--no-cache 或 force_refresh=True
  • 缓存绝不会存储 Cookie 或凭据

限制

  1. 仅有最新的 transcript:API 只返回最新的一份,没有完整的历史记录。
  2. 没有搜索端点:无法通过编程方式发现可用的股票代码。
  3. 不支持 Google/Facebook 身份验证:网页需要登录,API 不需要。
  4. 覆盖范围并不全面:跟踪了约 33,500 只股票,但并非所有股票都有 transcript(取决于它们是否公开举行财报电话会议)。
  5. 没有历史数据:参数 ccid 无法启用对往期 transcript 的访问。

参考资料

评论

支持 Markdown