apify-financial-news について
apify-financial-newsは、投資先企業の金融ニュースを検索・抽出するスキルです。企業単位またはポートフォリオ全体を対象に、ソースを分類し、ドメインに応じて指定の抽出ツールへ振り分けます。
主な機能
- 01単一企業・ポートフォリオのスキャン
- 02地域に応じたニュースソース選択
- 03Google Newsの2段階検索
- 04Tier 1・Tier 2のソース分類
- 05ドメイン別の記事抽出ルーティング
- 06記事の整形と表形式での出力
活用シーン
- 01投資先1社のニュース追跡
- 02複数企業のニュース一括スキャン
- 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.jsonreference/EUROPEAN_COMPANIES_GUIDE.mdMACRO_SOURCES.mdMORNING_NOTE_DETAIL.mdPIPELINE_DETAIL.mdSOURCE_CONFIGS.mdreference/scripts/clean_article.pyextract_and_clean.py詳細
金融ニュースインテリジェンス
Apify Actors を通じて、ポートフォリオ企業の金融ニュースを発見・抽出します。モードは 2 種類です。
- 単一企業 — 1 社のニュースをスキャンします。
- ポートフォリオスキャン — 同じパイプラインを複数の企業に対して実行します。
4 つのカテゴリ(グローバル/汎欧州/機関/CEE ローカル)に分類された 33 の Tier 1 ソース。Tier 2 は、未検証ドメイン向けの幅広い Google News フォールバックです。
推定コスト:単一企業あたり $0.10~0.50、ポートフォリオ全体のスキャンあたり $1~5。
前提条件
- Apify へのアクセス — 推奨:
apifyCLI(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-fast | Google News の発見 |
louvre/rss-news-aggregator | RSS の発見 |
rodrigo_pacelli/headline-news-scraper | ヘッドラインの発見 |
jamie_tran/bloomberg-article-scraper | Bloomberg の抽出 |
romy/bloomberg-news-scraper | Bloomberg のフォールバック |
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-scraper | bloomberg.com |
workhard3000/news-intelligence-rag-extractor | ft.com, wsj.com, economist.com, morningstar.com, asia.nikkei.com, caixinglobal.com, zawya.com, euobserver.com, reuters.com |
apify/rag-web-browser | cnbc.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-scraper | barrons.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 |
| PL | PAP, IntelliNews, Reuters, Bloomberg, POLITICO EU, FT |
| HU | Telex.hu, HVG.hu, VG.hu, IntelliNews, Reuters, Bloomberg |
| BG | BTA, IntelliNews, Reuters, Bloomberg, Euronews |
| SK | TASR, IntelliNews, Reuters, Bloomberg, Handelsblatt |
| 西ヨーロッパ | Bloomberg, Reuters, FT, Handelsblatt, Les Echos, POLITICO EU |
| 米国/グローバル | Bloomberg, Reuters, WSJ, FT, CNBC, Forbes, Barron's |
| アジア/MENA | Bloomberg, 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:重複を除去して振り分ける
- すべての検索実行結果から URL を収集します。
- ドメイン別に分類します。ホワイトリスト(Tier 1 ソース33件)は Tier 1、それ以外は Tier 2 です。
- 記事以外の URL を除外します:
/quote/、/stock/、/sitemap、/author/、/tag/、/key-metrics/、/newsletters/、/topic/、/profile/、redirectUrl=。 - タイトルに企業名/ティッカーが含まれているかでフィルタリングします。
- 重複を除去します(URL を正規化)。
- Tier 1 の URL をルーティングテーブルに従って検証済みエクストラクターに振り分けます。
- 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.ukURL は workhard3000 では失敗します。抽出には.comURL を使用してください。 - 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。
リファレンス
- data/sources.json — 機械可読形式:33件のソース × 検出 × 抽出ツール × コスト × 注意点
- reference/SOURCE_CONFIGS.md — ソースごとの curl の例、実行 ID、出力サンプル
- reference/PIPELINE_DETAIL.md — RSS フィード、見出しソース、警告、失敗した経路、ソースのクイックリファレンステーブル
- reference/MACRO_SOURCES.md — ING Think、IMF、中央銀行
- reference/EUROPEAN_COMPANIES_GUIDE.md — 欧州企業を扱う際のヒント
- reference/MORNING_NOTE_DETAIL.md — HTML 出力仕様(アーカイブ済み。このスキルの対象外です)
- reference/scripts/extract_and_clean.py、reference/scripts/clean_article.py — readability-lxml の後処理ツール