scraping-tweets-from-account について
Twitter/X の公開アカウントから、返信やメディアを含むツイート履歴を収集するデータ向けスキルです。Apify の tweet-scraper を使い、アカウントや日付などでデータを絞り込めます。
主な機能
- 01公開アカウントのツイート収集
- 02返信とメディアの取得
- 03日付や反応数での絞り込み
- 04データセットとしての出力
活用シーン
- 01アカウントのツイート履歴の確認
- 02投稿とあわせた返信・メディアの分析
- 03指定期間内のツイート収集
MCP 対応
Apify MCP サーバーが利用可能な場合、Apify tweet-scraper を実行できます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ apidojo-io/ apidojo-skills --skill scraping-tweets-from-accountインストール後、Claude Code で/scraping-tweets-from-accountを入力して読み込まれたか確認します。
詳細
アカウントのツイートをスクレイピングする
公開されている任意の Twitter/X アカウントの全ツイート履歴をエクスポートします。返信とメディアを含むタイムラインの生データセットを返します。
前提条件
APIFY_TOKEN環境変数が設定されていること- 任意:Apify MCP サーバーがインストールされていること
入力
| パラメーター | 型 | 必須 | デフォルト | 備考 |
|---|---|---|---|---|
searchTerms | array | ✅ | [] | Twitter の高度な検索クエリ(例:["#AI lang:en", "from:NASA"]) |
sort | string | 任意 | Top | 並べ替え順:Latest、Top、または Latest+Top |
tweetLanguage | string | 任意 | — | ISO 639-1 言語コード(例:en) |
maxItems | number | 任意 | 無制限 | 返すツイートの最大数 |
onlyVerifiedUsers | boolean | 任意 | false | 認証済みユーザーのツイートのみ |
onlyTwitterBlue | boolean | 任意 | false | Twitter Blue 登録者のツイートのみ |
onlyImage | boolean | 任意 | false | 画像付きツイートのみ |
onlyVideo | boolean | 任意 | false | 動画付きツイートのみ |
onlyQuote | boolean | 任意 | false | 引用ツイートのみ |
author | string | 任意 | — | 特定の投稿者ハンドルに絞り込む |
inReplyTo | string | 任意 | — | 特定のハンドルへの返信ツイート |
mentioning | string | 任意 | — | 特定のハンドルに言及するツイート |
geotaggedNear | string | 任意 | — | 指定した場所の近くのツイート |
withinRadius | string | 任意 | — | geotaggedNear の周囲の半径 |
geocode | string | 任意 | — | 緯度・経度と半径を指定する文字列 |
placeObjectId | string | 任意 | — | 場所がタグ付けされたツイート |
minimumRetweets | number | 任意 | — | リツイート数の最小値 |
minimumFavorites | number | 任意 | — | いいね数の最小値 |
minimumReplies | number | 任意 | — | 返信数の最小値 |
start | string | 任意 | — | この日付より後のツイート(YYYY-MM-DD) |
end | string | 任意 | — | この日付より前のツイート(YYYY-MM-DD) |
includeSearchTerms | boolean | 任意 | false | 一致した検索語を各ツイートに追加する |
customMapFunction | string | 任意 | — | 各出力オブジェクトを変換する JavaScript 関数 |
ワークフロー
Progress:
- [ ] Step 1: Confirm account is public
- [ ] Step 2: Run tweet-scraper
- [ ] Step 3: Poll for SUCCEEDED
- [ ] Step 4: Fetch and deliver dataset
ステップ 1:入力を検証する
ユーザー名に @ が含まれている場合は取り除きます。非公開アカウントのスクレイピングは試みないでください。アクターは 0 件の結果を返します。
ステップ 2:アクターを実行する
推奨 — run_actor.js(待機、出力、ファイル保存を自動で処理します):
# Quick answer (prints table to chat)
node scripts/run_actor.js \
--actor "apidojo~tweet-scraper" \
--input '{"param": "value"}'
# Save as CSV
node scripts/run_actor.js \
--actor "apidojo~tweet-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.csv --format csv
# Save as JSON
node scripts/run_actor.js \
--actor "apidojo~tweet-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.json --format json
APIFY_TOKENは環境変数または.envファイルに設定する必要があります。
Apify MCP を利用できる場合:
Tool: apify:run-actor
Actor: "apidojo~tweet-scraper"
Input:
{
"twitterHandles": ["<handle>"],
"maxItems": 200,
"sort": "Latest"
}
REST API の代替手段:
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"twitterHandles": ["<handle>"], "maxItems": 200, "sort": "Latest"}'
id を RUN_ID として保存します。status = SUCCEEDED になるまでポーリングします:
curl "https://api.apify.com/v2/actor-runs/$RUN_ID?token=$APIFY_TOKEN" | grep '"status"'
結果を取得します:
curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN&format=json"
ステップ 3:エッジケースに対応する
- 結果が 0 件:アカウントが非公開、停止中、またはハンドルのスペルが間違っている可能性があります。ユーザーに報告します。
- 予想より結果が少ない:アカウントの公開ツイート数が要求数より少ない可能性があります。取得できた分を返します。
- 非公開アカウント:アクターは空の結果を返します。アカウントが非公開であることをユーザーに伝えます。
出力形式
# Tweet Timeline: @<username>
Tweets collected: N | Includes replies: YES/NO | Includes retweets: YES/NO
| Tweet ID | Text (truncated) | Likes | Retweets | Replies | Media | Timestamp |
|----------|-----------------|-------|----------|---------|-------|-----------|
| ... | ... | ... | ... | ... | ... | ... |
Full dataset: N rows × 12 fields
Available fields: id, text, likeCount, retweetCount, replyCount, quoteCount,
isReply, isRetweet, media, tweetUrl, lang, createdAt
トラブルシューティング
公開アカウントが確認済みなのに結果が 0 件の場合: もう一度試してください。Twitter によるレート制限が一時的に発生している可能性があります。
古いツイートが見つからない場合: Twitter API では履歴へのアクセスに制限があり、非常に古いツイートは取得できない場合があります。
タイムアウト: maxItems を 1 回の実行あたり最大 500 件に減らしてください。