apify-financial-osint について
apify-financial-osintは、投資先企業を対象にReddit、Twitter/X、Trustpilotを調べるソーシャルリスニングスキルです。シグナルの種類に応じて指定のApify Actorを選び、感情や反応の指標をまとめます。
主な機能
- 01Redditの感情・議論検索
- 02Twitter/Xのリアルタイム言及監視
- 03Trustpilotレビュー分析
- 04シグナル別のActor選択
- 05費用管理のための結果上限設定
- 06感情・エンゲージメントの集計
活用シーン
- 01企業イベントをめぐる議論の追跡
- 02リアルタイムの言及や危機シグナルの監視
- 03顧客満足度や苦情傾向の分析
MCP 対応
Apify MCP connectorの`call-actor`ツールで指定のApify Actorを実行できます。Apify CLIにも対応しています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ apify/ awesome-skills --skill apify-financial-osintインストール後、Claude Code で/apify-financial-osintを入力して読み込まれたか確認します。
同梱ファイルdata/osint-targets.jsonreference/osint-actor-schemas.md
詳細
Financial OSINT — ソーシャルリスニング
ポートフォリオ企業について、インターネット上の声を発見し、定量化します。検証済みの Apify アクターは 3 つのみです — Reddit(感情分析とスレッド形式の議論)、Twitter/X(リアルタイムの言及、危機モニタリング)、Trustpilot(顧客満足度)。すべてのアクターは、成功率 98% 以上の実際のデモデータで検証済みです。
前提条件
- Apify へのアクセス — 推奨:
apifyCLI(npm install -g apify-cli && apify login);代替手段:Apify MCP コネクター(call-actorツール)。両方を利用できる場合は、CLI のほうが高速なため推奨します。 ${CLAUDE_PLUGIN_ROOT}/data/companies.jsonに企業データがあること(読み取るフィールド:queries.reddit、queries.twitter、trustpilot_urls、identifiers.ticker)- 企業ごとのルーティングが
${CLAUDE_PLUGIN_ROOT}/skills/apify-financial-osint/data/osint-targets.jsonに事前計算されていること
${CLAUDE_PLUGIN_ROOT} はプラグインのルートディレクトリ(.claude-plugin/ がある場所)です。プラグインのインストール時は Claude Code によって自動的に解決されます。開発時は --plugin-dir のパスに設定してください。
ワークフローのチェックリスト
以下をコピーし、進捗に合わせてチェックしてください。
Task Progress:
- [ ] Step 0: Verify Apify access — 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
- [ ] Step 1: Pick actor(s) by signal type — see "Choose Actor by Signal" table
- [ ] Step 2: Build input — read data/osint-targets.json or construct from data/companies.json
- [ ] Step 3: Run actor via apify CLI
- [ ] Step 4: Output — present top results with sentiment + engagement signals
制約事項
使用可能な Apify アクター(これらに限定 — 他は使用しないでください)
| アクター | 用途 | コスト | 成功率 |
|---|---|---|---|
fatihtahta/reddit-scraper-search-fast | Reddit の感情分析、買収への反応、ブランド認知 | 結果 1,000 件あたり $1.49 | 98.4%(30 日間に 40,787 回実行) |
kaitoeasyapi/twitter-x-data-tweet-scraper-pay-per-result-cheapest | リアルタイムの言及、危機モニタリング、ディールフローの兆候 | ツイート 1,000 件あたり $0.25 | 99.7%(5 点満点中 4.3 点、58 件のレビュー) |
getwally.net/trustpilot-reviews-scraper | サービス品質、苦情の傾向(通信事業者、e コマース、銀行) | 結果 1,000 件あたり $3.00 | 動作確認済み |
他のアクターは使用しないでください。WebSearch、WebFetch、ブラウザツールは使用しないでください。
シグナルに応じたアクターの選択
| 必要な情報 | 使用するアクター | 使用しない場合 |
|---|---|---|
| 感情分析/スレッド形式の議論/企業イベントへの反応 | fatihtahta/reddit-scraper-search-fast | 企業に消費者層がない場合(B2B フィンテック、バイオテクノロジー)— 投稿は 5 件未満と予想されます |
| リアルタイムの言及/危機の兆候/ディールフローに関する話題 | kaitoeasyapi/twitter-x-data-tweet-scraper-pay-per-result-cheapest | 1 週間を超える過去データが必要な場合 — Twitter API の制限があります |
| 顧客満足度/サービス品質に関する苦情 | getwally.net/trustpilot-reviews-scraper | 企業に Trustpilot ページがない場合(B2B、持株会社)— reference/osint-actor-schemas.md のセクション 3 にある検証済み URL の一覧を参照してください |
パイプライン
ステップ 1:アクターを選ぶ
ポートフォリオ企業の場合は、data/osint-targets.json で企業を検索してください。実行するアクターとテンプレート化された入力が事前計算されています。ルーティングのルール(このファイルの作成方法を反映):
queries.redditが空でない → Reddit アクターを実行queries.twitterが空でない → Twitter アクターを実行(追跡対象企業では常に設定済み)trustpilot_urlsが空でない → Trustpilot アクターを実行
アドホックなターゲットやポートフォリオ外のターゲットでは、入力を一から作成してください(ステップ 2 を参照)。
ステップ 2:入力を作成
Reddit 入力(主要なフィールド)
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
queries | 文字列の配列 | 必須(queries / urls / subredditName のいずれか) | Reddit 全体を対象とする検索語です。 |
maxPosts | 整数 | 50000(!) | 必ず明示的に設定してください。通常のスキャンでは30~50件、詳細な調査では100~200件が目安です。 |
scrapeComments | ブール値 | false | スレッド形式のディスカッションを抽出するには、true に設定します。 |
maxComments | 整数 | 50000(!) | scrapeComments: true の場合にのみ使用されます。通常は5~10件が目安です。 |
sort | 列挙型 | "relevance" | relevance、hot、top、new、comments のいずれかです。(rising / best は使用できません。) |
timeframe | 列挙型 | "all" | all、year、month、week、day、hour のいずれかです。dateFrom~dateTo の範囲以上の期間を指定する必要があります。 |
dateFrom | 文字列 | — | YYYY-MM-DD。取得後のフィルターで、この日付以降の投稿を残します。 |
dateTo | 文字列 | — | YYYY-MM-DD。取得後のフィルターで、この日付までの投稿を残します。 |
例:
apify call fatihtahta/reddit-scraper-search-fast \
--input '{"queries":["InPost FedEx acquisition"],"maxPosts":50,"scrapeComments":true,"maxComments":10,"sort":"relevance","timeframe":"month"}' \
--user-agent apify-awesome-skills/apify-financial-osint
Twitter/X 入力(主要なフィールド)
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
twitterContent | 文字列 | — | twitterContent / tweetIDs / searchTerms のいずれかです。Twitter の高度な検索構文(OR、-、from:、since:)を使用します。 |
tweetIDs | 文字列の配列 | — | 複数形です。tweetId ではありません。 |
searchTerms | 文字列の配列 | — | 各検索語について、それぞれ maxItems 件の結果が取得されます。 |
maxItems | 整数 | 200 | 必須です。指定しないとアクターは失敗します。結果ごとに課金されます。 |
queryType | 列挙型 | "Latest" | Latest、Top、Photos、Videos のいずれかです。 |
lang | 文字列 | "en" | ISO 639-1 です。単一国を対象とした B2C では cs / pl / hu / bg / sk / tr を設定し、多言語を対象とする場合は省略します。 |
since / until | 文字列 | — | 形式:YYYY-MM-DD_HH:MM:SS_UTC(ISO 8601 形式ではありません)。 |
filter:news / filter:media / min_faves / min_retweets | 各種 | — | エンゲージメント/コンテンツのフィルターです。 |
例:
apify call kaitoeasyapi/twitter-x-data-tweet-scraper-pay-per-result-cheapest \
--input '{"twitterContent":"InPost FedEx acquisition OR INPST","maxItems":100,"queryType":"Latest","since":"2026-01-01_00:00:00_UTC","filter:news":true}' \
--user-agent apify-awesome-skills/apify-financial-osint
Trustpilot 入力(フィールドは2つのみ!)
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
startUrls | {"url": "..."} オブジェクトの配列 | はい | 単なる文字列ではありません。オブジェクトの配列です。 |
limit | 整数 | いいえ(デフォルトは1000) | コスト($3/1k)を抑えるには、より小さい値を設定します。 |
例:
apify call getwally.net/trustpilot-reviews-scraper \
--input '{"startUrls":[{"url":"https://www.trustpilot.com/review/inpost.pl"}],"limit":50}' \
--user-agent apify-awesome-skills/apify-financial-osint
古いドキュメントには maxItems、includeStatistics、includeCompanyDetails、onlyNewerThan などのフィールドが記載されていますが、これらはこのアクターには存在しません。
Step 3: 実行コストを制限する
実行前に、必ず出力上限を設定してください。デフォルト値は危険なほど高く設定されています。
| アクター | 上限フィールド | 複数対象のスキャン | 詳細な調査 |
|---|---|---|---|
maxPosts | 30~50 | 100~200 | |
| Reddit のコメント | maxComments | 5~10(scrapeComments: true の場合のみ) | 20~50 |
| Twitter/X | maxItems | 50~100 | 200~500 |
| Trustpilot | limit | 30~50 | 100~200 |
Twitter と Trustpilot は結果ごとに課金され、返された項目すべてが請求対象になります。
Step 4: 実行する
InPost を対象に Reddit のスレッドと Twitter の言及を取得する単一の例(data/osint-targets.json に基づいて実行):
apify call fatihtahta/reddit-scraper-search-fast \
--input "$(jq -c '.targets[] | select(.company_id=="inpost") | .inputs.reddit' \
${CLAUDE_PLUGIN_ROOT}/skills/apify-financial-osint/data/osint-targets.json)" \
--user-agent apify-awesome-skills/apify-financial-osint \
--output-dataset > reddit_inpost.json
各アクターの入力スキーマ全体(Twitter の全51プロパティ、Reddit のすべての列挙型、Trustpilot のあらゆる例外ケース)と30件以上の呼び出し例については、reference/osint-actor-schemas.md を参照してください。
Step 4b: Reddit の結果を事後フィルタリングする
Reddit の検索では引用符が無視され、部分一致します(「InPost」は「in post game thread」にも一致します)。取得後、クライアント側で結果をフィルタリングします。会社の検索クエリのいずれかが、title または body に単語全体として(大文字と小文字を区別せずに)含まれる投稿だけを残してください。一致判定には、data/osint-targets.json の queries 配列を使用します(これらは、その会社が実際に知られている名称です)。比較の前に、発音区別符号を正規化してください(Š↔S、ö↔o など)。
Reddit の生の検索結果の90~95%は誤検出になると想定してください。これは正常です。これを補うために、maxPosts は200に設定されています。
ステップ 5:出力
アクターごとの主な出力フィールド:
| アクター | 日付フィールド | 日付形式 | URL フィールド | エンゲージメントフィールド |
|---|---|---|---|---|
created_utc | ISO 8601 (2026-05-01T17:26:41.000Z) | canonical_url | score, num_comments | |
createdAt | 非標準 (Fri May 01 17:35:21 +0000 2026) | url | likeCount, retweetCount, replyCount | |
| Trustpilot | date | ISO 8601 (2026-01-27T21:53:45.000Z) | url(企業ページではなくレビュー ID) | ratingValue(文字列 "1"~"5") |
上位の結果には以下を含めます。
- センチメントの目安(テキストから判定できる場合は、肯定的/否定的/中立)
- エンゲージメント — 上の表を参照
- 投稿者/ハンドル
- 日付 — 表示用に YYYY-MM-DD に正規化
- パーマリンク
センチメントスキャンの出力例:
## OSINT Scan: InPost — Last 30 days
### Reddit (3 posts, 47 comments analyzed)
| Title | Subreddit | Score | Sentiment | Date | URL |
|---|---|---|---|---|---|
| InPost lockers in UK getting better? | r/unitedkingdom | 124 | positive | 2026-04-12 | … |
| Anyone else missing parcels? | r/poland | 38 | negative | 2026-04-09 | … |
### Twitter/X (87 tweets)
| Tweet (truncated) | Author | Likes | Replies | Date | URL |
|---|---|---|---|---|---|
| FedEx-InPost rollout looks promising… | @logistics_eu | 412 | 27 | 2026-04-22 | … |
### Trustpilot (50 reviews — avg 3.2 / 5)
| Rating | Title | Author | Date | URL |
|---|---|---|---|---|
| 5 | Good system, very efficient | Yeison S. | 2026-03-10 | … |
| 1 | Parcel never delivered | Anna K. | 2026-04-18 | … |
企業ごとのルーティング
data/osint-targets.json は、ポートフォリオ企業ごとに実行する OSINT アクターと、data/companies.json から生成された事前作成済みの入力テンプレートを対応付けています。v1.0 時点のカバレッジ:31 件(ポートフォリオ 30 件+グループ)、Reddit 27 件、Twitter 31 件、Trustpilot 5 件、3 アクターすべて 5 件、Twitter のみ 4 件。アクターが空のエントリーは、確認済みの該当なしを示します(例:MONETA/CETIN/SOTIO には Trustpilot ページがありません)。
重大な注意点(頻発する誤り)
- Reddit の
maxPostsのデフォルトは 50000 です — 必ず明示的に設定してください(スキャンでは通常 30~50)。 - Reddit の
maxCommentsのデフォルトは 50000 です —scrapeComments: trueの場合は必ず低く設定してください。 - Reddit の
subredditKeywordsは文字列ではなく配列です。 - Reddit の
sort列挙値に"rising"/"best"はありません — relevance、hot、top、new、comments のみです。 - Reddit の
includeNsfw— "sfw" は小文字です(includeNSFWではありません)。 - Twitter の
maxItemsは必須です — 指定しないとアクターは失敗します。結果ごとに課金されます。 - Twitter の
since/untilの形式はYYYY-MM-DD_HH:MM:SS_UTCです(ISO 8601 ではありません)。 - Twitter の
tweetIDsは複数形の配列です —tweetIdではありません。 - Twitter の
langのデフォルトは"en"です — 明示的に設定するか、全言語を対象にする場合は省略してください。 - Trustpilot の
startUrlsはurlキーを持つオブジェクトの配列である必要があります — 単なる文字列ではありません。 - Trustpilot の入力フィールドは 2 つだけです(
startUrls、limit)— 以前のドキュメントにあるmaxItems、includeStatistics、includeCompanyDetails、onlyNewerThanは存在しません。 - Trustpilot の
ratingValueは整数ではなく文字列です("1"~"5")— 集計前に解析してください。 - Trustpilot には日付フィルターがありません — アクターは
limit件まで新しい順に返すため、dateフィールドで事後フィルターしてください。 - 企業ごとの Trustpilot URL は確認済みです —
reference/osint-actor-schemas.mdのセクション 3 にある「既知の Trustpilot URL」表を参照してください。Trustpilot ページがない企業もあります(B2B 持株会社、バイオテクノロジー企業など)。アクターを実行してもレビューは 0 件です。
アクターごとの完全なスキーマと 30 件以上の呼び出し例:reference/osint-actor-schemas.md。
参考資料
- data/osint-targets.json — 企業ごとのルーティングと事前作成済みのアクター入力(31 件)
- reference/osint-actor-schemas.md — 原文そのまま:ポートフォリオの例を含む 4 つのアクタースキーマ(セクション 4 の Economic Calendar はアーカイブ済みで、このスキルの対象外です — PLAN.md を参照)
- 共有ポートフォリオデータ:
${CLAUDE_PLUGIN_ROOT}/data/companies.json