Pipedream
TwexAPI 経由で Pipedream ワークフロー自動化を構築し、ツイート検索、プロフィール、トレンドツイート、HTTP トリガー、承認済み投稿を実現する。
検索、プロフィール、トレンドツイート、承認済み投稿向け Pipedream Twitter 連携を構築します。TwexAPI はすべてのワークフローに1つの REST API と1つの API キーを提供します。
エージェントハンドオフには webhook トリガー、定期検索にはスケジュールトリガー、カスタム正規化にはインラインコードステップを選択してください。
Pipedream 自動化パターンを選択
HTTP trigger + code step
MCP エージェントから厳密な JSON を受信し、行を正規化して Slack または Sheets にルーティング。
スケジュールされた REST 読み取り
ツイート検索またはトレンドレポート用に TwexAPI を定期呼び出し。
プライベートコンポーネントパッケージ
チーム全体が同じアクションを必要とする場合、繰り返し認証済みリクエストをパッケージ化。
検索、webhook ハンドオフ、フォロワーエクスポート、承認済み書き込みを別ワークフローに分割してください。小さなワークフローの方がエラーとレート制限が明確になります。
前提条件
- TwexAPI API キー
- Pipedream アカウント
- オプション: Slack、Google Sheets、Airtable、データベース接続アカウント
- オプション:
https://api.twexapi.io/mcpに接続された MCP 対応エージェント
サーバーレス API 連携
すべての TwexAPI リクエストは https://api.twexapi.io から開始します。Authorization: Bearer ヘッダーで API キーを送信します。キーはステップエクスポートやログではなく Pipedream 環境変数に保持してください。
export TWEXAPI_API_KEY="YOUR_API_KEY"
GET /balance を最初の認証チェックとして使用してください。X アカウントを変更せず API キーを検証します。
共有リクエストヘルパー
export default defineComponent({
props: {
twexapi: {
type: "string",
label: "TwexAPI API Key",
secret: true,
},
},
methods: {
async twexapiRequest($, { method, path, body, params }) {
const url = new URL(`https://api.twexapi.io${path}`);
if (params) {
Object.entries(params).forEach(([key, value]) => {
if (value !== undefined && value !== null) {
url.searchParams.set(key, String(value));
}
});
}
const response = await fetch(url, {
method,
headers: {
Authorization: `Bearer ${this.twexapi}`,
"Content-Type": "application/json",
},
body: body ? JSON.stringify(body) : undefined,
});
if (!response.ok) {
throw new Error(`TwexAPI request failed with HTTP ${response.status}`);
}
return response.json();
},
},
});
スターターアクション
| Action | TwexAPI route |
|---|---|
| ツイート検索 | POST /twitter/advanced_search/page |
| ユーザープロフィール取得 | GET /twitter/{screen_name}/about |
| ユーザー検索 | GET /twitter/search-user/{keyword}/{target_count} |
| トレンド取得 | GET /twitter/global-trending/tweets |
| フォロワー一覧 | POST /v3/twitter/users/followers |
| ツイート作成 | POST /twitter/tweets/create |
ツイート検索コードステップ
export default defineComponent({
async run({ steps, $ }) {
const response = await fetch("https://api.twexapi.io/twitter/advanced_search/page", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TWEXAPI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
searchTerms: ["AI agents lang:en"],
sortBy: "Latest",
nextCursor: "",
}),
});
if (!response.ok) {
throw new Error(`TwexAPI request failed with HTTP ${response.status}`);
}
return response.json();
},
});
Webhook ファーストフロー
- Pipedream で HTTP トリガーを作成。
- MCP 対応エージェントに TwexAPI 行を収集し厳密な JSON を返させる。
- JSON を Pipedream エンドポイントに POST。
- コードステップで行を正規化・重複排除。
JavaScript 正規化ステップ
export default defineComponent({
async run({ steps }) {
const payload = steps.trigger.event.body;
return (payload.tweets || []).map((tweet) => ({
id: tweet.tweet_id || tweet.id,
url: tweet.public_url ?? `https://x.com/i/web/status/${tweet.tweet_id || tweet.id}`,
author: tweet.author_username,
text: tweet.text || tweet.full_text,
created_at: tweet.created_at,
route_used: payload.route_used,
next_cursor: payload.next_cursor,
}));
},
});
推奨 MCP エージェントプロンプト:
Use Twexapi MCP to get quote tweets for tweet ID 1803006263529541838.
Return only JSON with route_used, source_tweet_id, has_more, next_cursor, and tweets.
Each tweet must include tweet_id, author_username, text, created_at, and public_url.
Do not call write endpoints.
結果ハンドオフ
ツイートページ
tweet_count, has_more, next_cursor をエクスポート。tweet_id, text, author_username, created_at 付き行を返す。
プロフィールデータ
user_id, username, name, フォロワー数、認証フィールドをエクスポート。
トレンドバッチ
国、トピック、コンテンツタグ、ワークフローメタデータ付きツイート行をエクスポート。
書き込みアクション
CLI --dry-run でプレビュー。書き込みアクションには cookie または auth_token が必要。
エラー処理
下流行をエクスポートする前に各ステータスをルーティングしてください。
| ステータス | 対処法 |
|---|---|
400 |
リクエストフィールドを修正。変更なしでリトライしない。 |
401 |
API キーを差し替え。 |
403 |
アカウントアクセスまたはクレジットを解決。 |
429 |
バックオフし、カーソルを保持。 |
5xx |
安全な読み取りに上限付きバックオフでリトライ。 |
下流処理が成功した後にのみページカーソルを永続化してください。
レシピ
ツイート検索から Slack
- レポート頻度でワークフローをスケジュール。
POST /twitter/advanced_search/pageを呼び出し。- エンゲージメント閾値でツイートをフィルター。
- 選択ツイートの本文、著者、リンクを Slack に送信。
エージェントハンドオフから Google Sheets
- HTTP トリガーが MCP ハンドオフ JSON を受信。
- ツイート行を正規化。
tweet_idで Sheets に upsert。
フォロワーページから CRM
- HTTP またはスケジュールステップが
POST /v3/twitter/users/followersを呼び出し。 - フォロワー行を正規化。
- CRM が
user_idで upsert。 - データストアが
next_cursorを保持。
テストチェックリスト
- トリガーボディが有効な JSON であることを確認。
tweet_idまたはuser_idを重複排除キーとして使用。- スケジュール継続用に Pipedream データストアに
next_cursorを保存。 TWEXAPI_API_KEYは環境変数のみに保持。- ステップ出力に Bearer トークンをログしない。