mcpField
A
apify-financial-news

apify-financial-news

github.com/apify生产力283138 次安装5 周前更新
代码仓库

关于 apify-financial-news

apify-financial-news 是一项面向投资组合公司的金融新闻检索与提取技能,适用于按公司或组合开展新闻扫描。它通过分级来源发现新闻,并按域名将文章分配给指定提取器。

主要功能

  1. 01单公司与投资组合扫描
  2. 02按区域选择新闻来源
  3. 03Google News 两阶段发现
  4. 04Tier 1 与 Tier 2 来源分类
  5. 05按域名路由文章提取
  6. 06清理文章内容并输出表格

适用场景

  1. 01追踪单家投资组合公司的新闻
  2. 02批量扫描多个公司的新闻
  3. 03补充中东欧国家宏观背景

MCP 相关

可通过 Apify MCP connector 的 `call-actor` 工具运行 Apify Actors;技能也优先支持 Apify CLI。

安装

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

$npx skills add https://github.com/apify/awesome-skills --skill apify-financial-news

安装后在 Claude Code 中输入/apify-financial-news确认已加载。

包含的文件

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

data/
sources.json
reference/
EUROPEAN_COMPANIES_GUIDE.md
MACRO_SOURCES.md
MORNING_NOTE_DETAIL.md
PIPELINE_DETAIL.md
SOURCE_CONFIGS.md
reference/scripts/
clean_article.py
extract_and_clean.py

详细介绍

金融新闻情报

通过 Apify Actors 发现并提取投资组合公司相关的金融新闻。提供两种模式:

  • 单家公司 — 扫描一家公司的新闻。
  • 投资组合扫描 — 在多家公司上运行同一套流程。

33 个一级来源分为 4 个类别(全球/泛欧洲/机构/中东欧本地)。二级来源是覆盖面广的 Google News 回退选项,用于未经验证的域名。

预计费用:单家公司 0.10–0.50 美元,完整投资组合扫描 1–5 美元。

先决条件

  • Apify 访问权限 — 首选:apify CLI(npm install -g apify-cli && apify login);备用:Apify MCP 连接器(call-actor 工具)。两者都可用时,CLI 更快且优先使用。
  • Python 3 + pip install readability-lxml lxml(用于 extract_and_clean.py 后处理器)
  • 公司数据位于 ${CLAUDE_PLUGIN_ROOT}/data/companies.json

${CLAUDE_PLUGIN_ROOT} 是插件的根目录(即 .claude-plugin/ 所在目录)。安装插件后,Claude Code 会自动解析该路径;开发期间则将其设为 --plugin-dir 路径。

工作流检查清单

复制此清单,并在进行过程中勾选:

Task Progress:
- [ ] Step 0: Verify prerequisites — try `apify --version && apify info`; if unavailable, check for `call-actor` MCP tool; if neither, tell user to install apify CLI or Apify MCP connector. Also verify: `python3 -c "from readability import Document; print('OK')"` (install: `pip install readability-lxml lxml`)
- [ ] Step 1: Build queries (look up company in data/companies.json or construct manually)
- [ ] Step 2: Discovery — pick 8-12 sources by region, run 2-phase Google News
- [ ] Step 3: Dedup + route (Tier 1 = whitelisted domain → verified extractor; Tier 2 = broad → rag-web-browser)
- [ ] Step 4: Extract & clean (run extractor, then extract_and_clean.py)
- [ ] Step 5: Output Tier 1 + Tier 2 tables to user

限制

允许使用的 Apify Actors(完整列表——请勿使用其他 Actor)
Actor用途
data_xplorer/google-news-scraper-fastGoogle News 发现
louvre/rss-news-aggregatorRSS 发现
rodrigo_pacelli/headline-news-scraper标题发现
jamie_tran/bloomberg-article-scraperBloomberg 提取
romy/bloomberg-news-scraperBloomberg 备用方案
workhard3000/news-intelligence-rag-extractor付费墙内容提取
apify/rag-web-browser免费内容/软付费墙 + 二级来源
stanvanrooy6/universal-ai-web-scraper硬付费墙(Barron's、MarketWatch)— 每页 0.25 美元

请勿使用任何其他 Actor。请勿使用 WebSearch、WebFetch 或浏览器工具。

提取器路由(必须遵循——请勿替换)
提取器域名
jamie_tran/bloomberg-article-scraperbloomberg.com
workhard3000/news-intelligence-rag-extractorft.com、wsj.com、economist.com、morningstar.com、asia.nikkei.com、caixinglobal.com、zawya.com、euobserver.com、reuters.com
apify/rag-web-browsercnbc.com、forbes.com、investors.com、lesechos.fr、afr.com、scmp.com、euronews.com、intellinews.com、handelsblatt.com、politico.eu、eubusiness.com、eureporter.co、ecb.europa.eu,以及全部 7 个中东欧本地来源
stanvanrooy6/universal-ai-web-scraperbarrons.com、marketwatch.com
REST API (presscorner)ec.europa.eu

各来源的完整配置:reference/SOURCE_CONFIGS.md。机器可读配置:data/sources.json。

流程

步骤 1:构建查询

在 ${CLAUDE_PLUGIN_ROOT}/data/companies.json 中查找公司。queries 下的关键字段:gnews_en、gnews_cz、bloomberg。

对于非投资组合公司,请手动构建查询:加引号的完整法定名称 + 股票代码或变体 + 地理限定词。

查询规则:

  • 使用 "InPost SA",而非 InPost(完整名称加引号可避免误报——参见 reference/EUROPEAN_COMPANIES_GUIDE.md)
  • 每个来源使用 site: 运算符:site:bloomberg.com "InPost SA" OR "INPST"
  • FT 提示:使用 site:ft.com/content/(仅用 ft.com 会返回股票数据页面)
  • 有效时间范围:"1h"、"1d"、"7d"、"1y"、"all"(不要使用 "30d")
  • 股票代码少于 4 个字符时:务必搭配公司全名
  • 在 Google News 输入中务必设置 decodeUrls: true
步骤 2:发现

不要搜索全部 33 个来源。根据公司所在地区选择 8–12 个来源。

区域优先级
区域优先来源
CZČTK、IntelliNews、Reuters、Bloomberg、POLITICO EU、FT、Handelsblatt
PLPAP、IntelliNews、Reuters、Bloomberg、POLITICO EU、FT
HUTelex.hu、HVG.hu、VG.hu、IntelliNews、Reuters、Bloomberg
BGBTA、IntelliNews、Reuters、Bloomberg、Euronews
SKTASR、IntelliNews、Reuters、Bloomberg、Handelsblatt
西欧Bloomberg、Reuters、FT、Handelsblatt、Les Echos、POLITICO EU
美国 / 全球Bloomberg、Reuters、WSJ、FT、CNBC、Forbes、Barron's
亚洲 / 中东和北非Bloomberg、Reuters、SCMP、Nikkei、Caixin、Zawya
欧盟监管POLITICO EU、EUobserver、EUbusiness、EU Reporter、EC Press Corner、ECB
两阶段 Google News 策略

阶段 1 — 定向(按优先来源搜索,使用 site:):

apify call data_xplorer/google-news-scraper-fast \
  --input '{"keywords":["site:bloomberg.com \"InPost SA\" OR \"INPST\""],"maxArticles":10,"timeframe":"7d","region_language":"US:en","decodeUrls":true,"proxyConfiguration":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}}' \
  --user-agent apify-awesome-skills/apify-financial-news \
  --output-dataset > discovery_bloomberg.json

阶段 2 — 广泛(始终运行,不使用 site: 运算符)。在步骤 3 中按域名对结果分类——白名单来源 → Tier 1,其他来源 → Tier 2。

中东欧本地语言发现:对于中东欧公司,使用 region_language 设置为 CZ:cs、PL:pl、HU:hu、BG:bg、SK:sk 运行额外查询。参见 data/sources.json 中每个来源的 region_language 字段。

EC Press Corner — 直接 REST API(无需 Actor)
curl -s "https://ec.europa.eu/commission/presscorner/api/documents?reference=IP/26/614&language=en"

从 Google News 标题中解析 IP_XX_NNN 参考 ID,以构造 API 调用。

RSS / 标题发现(可选)

对于提供 RSS 的来源,可以使用 louvre/rss-news-aggregator 补充 GNews(每次运行最多 10 个 Feed;分批运行)。对于 6 个来源,可使用 rodrigo_pacelli/headline-news-scraper(CNBC、SCMP、Nikkei、Caixin、仅 Zawya 标签页、Handelsblatt)。RSS/标题输出未经筛选——在客户端按标题 / 描述中的公司名称进行筛选。完整 Feed 列表:reference/PIPELINE_DETAIL.md。

步骤 3:去重并路由
  1. 收集所有发现任务中的 URL。
  2. 按域名分类:白名单(33 个 Tier 1 来源)→ Tier 1;其他来源 → Tier 2。
  3. 筛除非文章 URL:/quote/、/stock/、/sitemap、/author/、/tag/、/key-metrics/、/newsletters/、/topic/、/profile/、redirectUrl=。
  4. 根据标题中的公司名称 / 股票代码筛选。
  5. 去重(规范化 URL)。
  6. 根据路由表将 Tier 1 URL 路由至已验证的提取器。
  7. 将 Tier 2 URL 路由至 apify/rag-web-browser。

低覆盖率回退(< 3 篇文章):将时间范围扩大至 "1y";如果跳过了阶段 2,则运行阶段 2;尝试本地语言查询。

步骤 4:提取并清理

根据路由表运行提取器。对于 rag-web-browser 调用,使用 outputFormats: ["html"]。

提取后,在数据集上运行 extract_and_clean.py,通过 readability-lxml 移除导航栏 / 菜单 / 页脚。脚本会自动检测格式:HTML 使用 readability-lxml 清理;已清理的输出(Bloomberg scraper、workhard3000)则直接通过。

DATASET_ID=$(apify call apify/rag-web-browser \
  --input '{"query":"<ARTICLE_URL>","maxResults":1,"outputFormats":["html"],"requestTimeoutSecs":40,"proxyConfiguration":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]},"removeCookieWarnings":true}' \
  --user-agent apify-awesome-skills/apify-financial-news \
  --json | jq -r '.defaultDatasetId')

python3 ${CLAUDE_PLUGIN_ROOT}/skills/apify-financial-news/reference/scripts/extract_and_clean.py "$DATASET_ID"

--json 标志会返回运行元数据,包括 defaultDatasetId。发生错误时会返回非零退出代码,使流水线快速失败。

步骤 5:输出

向用户提供两个表格——**Tier 1(已验证)**和 Tier 2(广泛)。每篇文章包含:来源、标题、作者、日期、字符数、URL。

## News Intelligence: InPost (INPST.AS) — Last 7 days

### Tier 1 — Verified Sources (2)
| Source | Title | Author | Date | Chars | URL |
|--------|-------|--------|------|-------|-----|
| bloomberg.com | InPost Readies AI Shopping Assistant | K. Krasuski | 2026-03-19 | 7,577 | … |

### Tier 2 — Broad Discovery (5)
| Source | Title | Date | Chars | URL |
|--------|-------|------|-------|-----|
| seekingalpha.com | InPost expands parcel locker network | 2026-03-18 | 1,200 | … |

*Sources: 6 verified queried | 5 broad | Cost: $0.15*

宏观背景

获取国家层面的经济背景时,可将以下来源与新闻扫描配合使用:

  • ING Think(think.ing.com)——通过 apify/rag-web-browser 获取每日中东欧外汇 / 利率信息(约 11K 字符)。最佳的免费开放访问中东欧宏观经济来源。
  • IMF(imf.org)——通过 apify/rag-web-browser 获取第四条款总结声明(约 22K 字符)。
  • ECB(ecb.europa.eu)——已列入 Tier 1。
  • 各国央行(ČNB、NBP、MNB、BNB、NBS)——直接提取 URL;参见 reference/MACRO_SOURCES.md。

关键注意事项

  • 在 Google News 中务必设置 decodeUrls: true(编码后的重定向会导致所有提取器失效)。
  • “InPost”含义模糊,会匹配“post-Maduro”。请使用 "InPost SA" 以确保精确。
  • 每次运行最多处理 10 个 RSS 源,请分批处理。
  • Zawya headline-scraper 返回的是标签页,而非文章,请从标题运行中排除。
  • Reuters 需要 RESIDENTIAL 代理,否则只会返回 386 个字符。
  • Reuters:rag-web-browser 对约 60% 的 URL 返回 0 个字符,只能使用 workhard3000。
  • Morningstar 的 .co.uk URL 使用 workhard3000 会失败,请使用 .com URL 提取。
  • WSJ 的 livecoverage 页面会失败,请跳过与 wsj.com/livecoverage/ 匹配的 URL。
  • FT:rag-web-browser 返回 16 个字符(“Client Challenge”),请使用 workhard3000。
  • Forbes:workhard3000 返回 0 个字符,请使用 rag-web-browser。
  • Barron's / MarketWatch 每页费用为 $0.25,请仅用于高价值文章。
  • Caixin URL 必须完整,截断的 URL 无法提取。
  • EC Press Corner 是 Angular SPA,rag-web-browser 会返回 0 个字符。请使用 REST API。

完整的失败模式目录:reference/PIPELINE_DETAIL.md、reference/SOURCE_CONFIGS.md。

参考资料

评论

支持 Markdown