x-twitter-api について
x-twitter-apiは、認証済みユーザーのOAuth 1.0a開発者認証情報でX API v2を操作するスキルです。単一のNode.jsエントリーポイントから、アカウント、投稿、ソーシャル機能、フィード、モデレーション、分析、検索のコマンドを実行できます。
主な機能
- 01投稿の検索と取得
- 02投稿の公開、返信、削除
- 03フォロー、いいね、ブックマーク、ミュートの管理
- 04タイムラインとメンションの閲覧
- 05エンゲージメントとトレンドの照会
活用シーン
- 01クエリや日付でXの投稿を検索
- 02アカウントから投稿を公開・管理
- 03メンション、タイムライン、ブックマークを確認
- 04投稿数とエンゲージメントを集計
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tato418/ x-twitter-api --skill x-twitter-apiインストール後、Claude Code で/x-twitter-apiを入力して読み込まれたか確認します。
詳細
X(Twitter)API v2 スキル。認証済みユーザー自身の開発者認証情報(OAuth 1.0a、従量課金)を使用します。すべてのコマンドは単一のエントリーポイント node x.js <command> [flags] を経由します。各コマンドには、フラグと動作の完全なリファレンスを記載した専用のドキュメントファイルがあります。
[!SETUP] 初回使用前に、./node_modules が存在するか確認してください。存在しない場合は、npm install を実行してください。次に、./dist/x.js が存在するか確認してください。存在しない場合は、npm run build を実行してください。スキルのディレクトリには絶対に cd しないでください。作業ディレクトリを変更せずに対象を指定するには、相対パスまたは --prefix を使用してください。
[!COMMANDS]
コア:
a) me — 認証済みユーザー自身のアカウントデータ(プロフィール、指標、認証状況)。@docs/me.md。
b) search — クエリで投稿を検索します(過去 7 日間または全アーカイブ)。@docs/search.md。
c) get — ID を指定して 1 件以上の投稿を取得します。@docs/get.md。
d) post — ツイート、返信、引用ツイートを作成します。@docs/post.md。
e) delete — 認証済みユーザーが所有する投稿を削除します。@docs/delete.md。
エンゲージメント:
f) like — ツイート ID を指定して投稿に「いいね」します。@docs/like.md。
g) unlike — 投稿の「いいね」を取り消します。@docs/like.md。
h) repost — 投稿をリポスト(リツイート)します。@docs/repost.md。
i) unrepost — リポストを取り消します。@docs/repost.md。
ソーシャル:
j) user — ユーザー名または ID でユーザーを検索します。@docs/user.md。
k) follow — ユーザー名または ID でユーザーをフォローします。@docs/follow.md。
l) unfollow — ユーザーのフォローを解除します。@docs/follow.md。
m) followers — ユーザーのフォロワー一覧を取得します。@docs/followers.md。
n) following — ユーザーがフォローしているアカウント一覧を取得します。@docs/followers.md。
フィード:
o) timeline — ホームタイムライン(新しい順)。@docs/timeline.md。
p) mentions — あなたに言及している投稿。@docs/mentions.md。
ブックマーク:
q) bookmark — 投稿をブックマークします。@docs/bookmark.md。
r) unbookmark — ブックマークを解除します。@docs/bookmark.md。
s) bookmarks — ブックマーク一覧を取得します。@docs/bookmark.md。
モデレーション:
t) mute — ユーザーをミュートします。@docs/mute.md。
u) unmute — ユーザーのミュートを解除します。@docs/mute.md。
v) muted — ミュート中のアカウント一覧を取得します。@docs/mute.md。
w) blocked — ブロック中のアカウント一覧を取得します。@docs/blocked.md。
x) hide-reply — あなたの投稿への返信を非表示にします。@docs/hide-reply.md。
分析:
y) likers — 投稿に「いいね」したユーザー。@docs/likers.md。
z) reposters — 投稿をリポストしたユーザー。@docs/reposters.md。
aa) quotes — 投稿への引用ツイート。@docs/quotes.md。
ab) count — クエリに一致する投稿数を期間ごとに集計します。@docs/count.md。
ac) reposts-of-me — 他のユーザーによるあなたの投稿のリポスト。@docs/reposts-of-me.md。
検索:
ad) search-users — クエリでユーザーを検索します。@docs/search-users.md。
ae) trending — トレンドトピック(全世界またはパーソナライズ)。@docs/trending.md。
[!PARAMETERS]
コア:
me:パラメーターなしsearch:query:string, [max_results?:number, since?:date, until?:date]get:id:string | ids:string[]post:text:string, [reply_to?:string, quote_id?:string]delete:id:string
エンゲージメント:
like:id:stringunlike:id:stringrepost:id:stringunrepost:id:string
ソーシャル:
user:user:string, [expansions?:string, tweet_fields?:string, user_fields?:string]follow:user:stringunfollow:user:stringfollowers:[user?:string, max_results?:number, pagination_token?:string]following:[user?:string, max_results?:number, pagination_token?:string]
フィード:
timeline:[max_results?:number, pagination_token?:string]mentions:[max_results?:number, pagination_token?:string]
ブックマーク:
bookmark:id:stringunbookmark:id:stringbookmarks:[max_results?:number, pagination_token?:string]
モデレーション:
mute:user:stringunmute:user:stringmuted:[max_results?:number, pagination_token?:string]blocked:[max_results?:number, pagination_token?:string]hide-reply:id:string アナリティクス:likers:id:string、[max_results?:number、pagination_token?:string]reposters:id:string、[max_results?:number、pagination_token?:string]quotes:id:string、[max_results?:number、pagination_token?:string]count:query:string、[granularity?:string、start_time?:date、end_time?:date]reposts-of-me:[max_results?:number、pagination_token?:string]
ディスカバリー:
search-users:query:string、[max_results?:number]trending:[woeid?:number]
[!OUTPUT]
すべてのコマンドは、標準構造の JSON を返します:
{
"success": boolean,
"data": object | array | string,
"error": string | null
}
例:
- 単一オブジェクト:
{"success": true, "data": {...}, "error": null} - 配列レスポンス:
{"success": true, "data": [...], "error": null} - エラーレスポンス:
{"success": false, "data": null, "error": "Error description"}
[!ERRORS]
標準エラーコード:
400- Bad Request:無効なパラメーターまたは不正な形式のリクエスト401- Unauthorized:認証情報が無効または期限切れです403- Forbidden:アクセスが拒否されたか、権限が不足しています404- Not Found:リソースが存在しません429- Too Many Requests:レート制限を超過しました500- Internal Server Error:X API サーバーエラー502- Bad Gateway:X API を利用できません503- Service Unavailable:X API が過負荷です
エラー処理:
- レート制限エラーには
retry-afterヘッダーが含まれます - 認証エラーでは認証情報の更新が必要です
- 検証エラーには具体的なフィールドの問題が含まれます
[!RATE-LIMITS]
X API v2 のレート制限(OAuth 1.0a):
- ユーザー認証:15 分あたり 50 リクエスト
- アプリ認証:15 分あたり 450 リクエスト(全ユーザーで共有)
- POST リクエスト(ツイート、いいねなど):3 時間あたり 300 リクエスト
ベストプラクティス:
- 429 エラー時には指数バックオフを実装します
- 可能な場合はタイムラインと検索結果をキャッシュします
- 対応している場合はリクエストをまとめて送信します
[!CREDENTIALS]
4 つの OAuth 1.0a 変数が必須です:X_API_KEY、X_API_SECRET、X_ACCESS_TOKEN、X_ACCESS_TOKEN_SECRET。これらは、最初に見つかった次のソースから取得されます:
a) cwd 内の .env.local
b) cwd 内の .env
c) プラグインディレクトリ内の .env.local
d) プラグインディレクトリ内の .env
f) 環境変数
X Developer Console(Apps > Keys and tokens)から取得してください。
セキュリティに関する注意:
- 認証情報をバージョン管理にコミットしないでください
- ローカル開発では
.envファイルを使用してください - 漏えいした場合は認証情報をローテーションしてください