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の2段階検索
  4. 04Tier 1・Tier 2のソース分類
  5. 05ドメイン別の記事抽出ルーティング
  6. 06記事の整形と表形式での出力

活用シーン

  1. 01投資先1社のニュース追跡
  2. 02複数企業のニュース一括スキャン
  3. 03中東欧諸国のマクロ情報の補足

MCP 対応

Apify MCP connectorの`call-actor`ツールでApify Actorを実行できます。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 を通じて、ポートフォリオ企業の金融ニュースを発見・抽出します。モードは 2 種類です。

  • 単一企業 — 1 社のニュースをスキャンします。
  • ポートフォリオスキャン — 同じパイプラインを複数の企業に対して実行します。

4 つのカテゴリ(グローバル/汎欧州/機関/CEE ローカル)に分類された 33 の Tier 1 ソース。Tier 2 は、未検証ドメイン向けの幅広い 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無料/ソフトペイウォール + Tier 2
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, + CEE ローカル 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 ではなく "InPost SA" を使用してください(正式名称全体を引用符で囲むと誤検出を防げます。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
アジア/MENABloomberg, Reuters, SCMP, Nikkei, Caixin, Zawya
EU 規制POLITICO EU, EUobserver, EUbusiness, EU Reporter, EC Press Corner, ECB
Google News の2段階戦略

フェーズ 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 です。

CEE の現地語での検索:CEE 企業については、region_language を CZ:cs、PL:pl、HU:hu、BG:bg、SK:sk に設定して追加のクエリを実行します。各ソースの region_language フィールドについては、data/sources.json を参照してください。

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(1回の実行につき最大10フィード。複数のバッチに分割)を使って GNews を補完できます。6つのソースでは、rodrigo_pacelli/headline-news-scraper が利用できます(CNBC、SCMP、Nikkei、Caixin、Zawya のタグページのみ、Handelsblatt)。RSS/見出しの出力はフィルタリングされていないため、タイトル/説明文に含まれる企業名でクライアント側フィルタリングを行ってください。フィードの一覧は reference/PIPELINE_DETAIL.md を参照してください。

ステップ3:重複を除去して振り分ける
  1. すべての検索実行結果から URL を収集します。
  2. ドメイン別に分類します。ホワイトリスト(Tier 1 ソース33件)は 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 を実行し、現地語でのクエリを試します。

ステップ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:出力

ユーザーに2つのテーブル(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 を使った CEE の FX/金利に関する日次情報(約11K文字)。無料でアクセスできる CEE マクロ経済情報源として最適です。
  • IMF(imf.org) — apify/rag-web-browser を使った第IV条協議の終了声明(約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" を使用してください。
  • RSS は1回の実行につき最大10フィードです。複数のバッチに分けてください。
  • Zawya の headline-scraper は記事ではなくタグページを返します。見出しの取得対象から除外してください。
  • Reuters には RESIDENTIAL プロキシが必要です。使用しない場合、386文字が返されます。
  • Reuters:rag-web-browser は約60%の URL で0文字を返します。workhard3000 のみを使用してください。
  • Morningstar の .co.uk URL は workhard3000 では失敗します。抽出には .com URL を使用してください。
  • WSJ のライブカバレッジページは失敗します。wsj.com/livecoverage/ に一致する URL はスキップしてください。
  • FT:rag-web-browser は16文字('Client Challenge')を返します。workhard3000 を使用してください。
  • Forbes:workhard3000 は0文字を返します。rag-web-browser を使用してください。
  • Barron's / MarketWatch は1ページあたり $0.25 かかります。価値の高い記事に絞って使用してください。
  • Caixin の URL は完全な状態で指定する必要があります。途中で切れた URL は抽出に失敗します。
  • EC Press Corner は Angular の SPA です。rag-web-browser は0文字を返します。REST API を使用してください。

失敗モードの全一覧:reference/PIPELINE_DETAIL.md、reference/SOURCE_CONFIGS.md。

リファレンス

コメント