DifyでXのAPIを無料で使う裏技を大公開…!
Made with

DifyでXのAPIを無料で使う裏技を大公開…!

こんにちは!そらです☁️
この記事をご覧いただきありがとうございます!!
ありがたいことにこの投稿がとても反響があったので、
こちらの記事を書かせていただきました!
ちなみに、、、今週は毎日プレゼント企画を行うので、僕のXを要チェックしてて下さい☺️
X(旧Twitter)のAPIは通常、有料プランや開発者アカウントの申請が必要ですが、
Cozeを使えば無料で利用できることをご存じでしょうか?
本記事では、Cozeを用いたX APIの無料活用方法を、
初期設定からDifyでのAPI連携までステップごとに解説します。
これを読めば、Xの投稿データを取得し、
アプリやサービスに組み込む仕組みを簡単に構築できるようになります🔥
それでは早速本編に参りましょう!!
目次

1. Cozeにアクセス

Cozeの公式サイト https://www.coze.com/ にアクセスして、右上の「Get started」をクリック。
そうするとGoogleアカウントまたは電話番号でログインする画面になるので、
お好きな方法でログインして下さい。
ちなみに、Cozeは中国の企業のため、個人情報の取り扱いには注意して下さい⚠️

2. ワークフローの作成

左メニューの「Workspace」をクリック。
すると、このような「Library」の画面になるので、「Workflow」を選択し、
右上の「+ Resources」をクリックして下さい。
次に、ワークフローの名前の概要を入力していきます。
わかりやすい名前にして下さい。詳細は必須入力ですが、適当で構いませんw
入力できたら、右下の「Confirm」をクリック。

3. ワークフローの構築

3-1. XのPluginを導入

作成したワークフローを開くと、このようなエディター画面になります。
そしたら、Startブロックの右側の+ボタンをクリックして、「Plugin」をクリックして、
プラグインのX APIのブロックを追加していきます。
「x」で検索をかけると、この一番上に出てくる「X」っていうやつが、Xの検索できるツールが使えるので、これをクリックします。
今回使うのは「Search Tweet」なのでその欄の「Add」を押して追加しましょう。
そうすると、Xの検索ブロックが追加されました!

3-2. XのPluginの機能紹介

追加されたブロックを見てみると、このような変数が表示されてると思います。
こいつらのことを「入力パラメータ」と言い、Xの投稿を取得するのに必要な”変数”となります。
今回は特に必須の項目はありませんが、1と3のどちらかは入力して下さい。
author (String)
目的: 検索対象となるツイートの投稿者を指定します。
使い方: Twitter のユーザー名(@マークは含まない場合もある)やアカウントIDなど、対象の「著者」を文字列で入力します。
count (String)
目的: 一度に取得するツイートの件数を指定します。
使い方: 数字を文字列として入力し、たとえば「10」と入力すれば、10件程度のツイートを返すような動作になります。
注意点: 数値ですが入力形式は文字列となっているので、数値の文字列("5"、"20"など)を入力します。1度に最大20件ほど取得可能です。
query (String)
目的: ツイート内容に対する検索キーワードやハッシュタグなど、さらに絞り込みを行うための条件を指定します。
使い方: 例えば「JavaScript」や「#tech」といったキーワードを入力することで、指定した語句を含むツイートに絞り込むことができます。
type (String)
目的: ツイート検索のタイプやモードを指定するために使われます。
使い方:この「type (String)」パラメータは、検索結果の種類を指定するために使われます。具体的には、以下の5種類の中から選択できます。
Top
人気やリレーションシップ(リツイートやいいねなど)などから、最も「注目度が高い」ツイートが抽出されます。
Latest
単純に最新のツイートを時系列順に取得します。
People
ユーザー(人物)に関するツイートにフォーカスし、特定のアカウントや人物に関する情報を抽出します。
Media
画像や動画など、メディアコンテンツが含まれるツイートのみを対象とします。
Lists
Twitter上のリストに紐づいたツイートを検索する際に使用します。リストで管理されているユーザーのツイートを取得したい場合に有効です。
このように、検索したい内容に応じて適切な「type」を選ぶことで、返されるツイートの性質(人気順、最新順、メディア重視など)をコントロールできます。
注意点: このパラメータの指定により、検索結果の順序やフィルタが変わるため、用途に合わせた値を設定してください。

3-3. searchTweetの変数の設定

それでは今回は
author:ユーザー入力
count:20
query:ユーザー入力
type:Latest
で作っていきます!
それではとりあえず決めうちのcountとtypeを入力して下さい。
続いて、authorqueryを入力していくのですが、ユーザーの入力にするには、
Startブロックで作成したユーザー入力できる変数を引用しなければいけません。
ということで、Startブロックの変数を以下のように設定します。
「author」「query」ともにString(文字列)を変数として作ります。
そうすると、XのsearchTweetブロックの「query」の変数を設定することができるので、
画像のような手順でStartブロックの「query」を設定します。authorも同様にお願いします。
最終的にこのようになればOKです。
そうしたらsearchTweetブロックEndブロックに繋げていきます。
そして最後にEndブロックのoutputにsearchTweetの「data<object>」を入力すると完成です!

3-4. 【ちょっと待った!】さらに精度良く、コスパ良く運用するには

このままだと、リプライの返信文も取得してしまったり、こんな長いデータを取得するフローになってしまうので、このままではしっかり運用できないと思います。
そこで、僕の実際使っているフローの設定方法を追加で設定しましょう!
※このままで言い方は次の章へ進んでください。
それではまずリプライの除外方法です。
そもそもこのsearchTweetのプラグインはXの検索そのものを使えるので、
Xの検索コマンドが使えます!
リプライを検索結果から除外するなら「-filter:replies」の検索コマンドが役に立ちます。
これを設定していきましょう🔥
まずは「Start」と「searchTweet」ブロック間に「Text Processing」を追加します。
これはDifyでいうテンプレートブロックです。
追加すると、変数の設定ができるので、
Inputの「String1」にstartブロックの「query」を設定し、
String concatenationに
Copy
{{String1}} -filter:replies
と入力します。
そして次に、searchTweetの変数にText Processingの「output」を選択します。
これでリプライの除外が可能になりました!
続いて、必要な情報のみを取得できるようにしていきます。
searchTweetブロックの後に「Code」ブロックを追加していきます。
そうするとこの画面になるので「Edit in IDE」をクリック。
そしてここの言語を「Python」に変更。
そしてエディタに下記のPythonコードをコピペ。
Pythonコードはこちら
そして入力変数「args」をsearchTweetの「post」の変数を設定し、
出力変数Outputに「posts」をArray<Object>として設定する。
⚠️変数名と型には注意して下さい。
そして最後にEndブロックのoutputに先ほど作成した「posts」を代入。
こうすることで、投稿文、メディアURL、投稿日時、URLが取得できます!
このPythonコードはお好きにいじってもらっても構いません!

3-5. テスト検証

ワークフローが完成したらデバックテストをします。
右上の「Publish」から「Test run」をクリックして下さい。
するとauthorとqueryが入力できるところがあるので、それぞれ入力して下さい。
そして「Test Run」をクリックして実行。
テスト実行後、ブロックに「Succeed」と表示されれば正常に実行されています。
このような結果が表示されたら成功です!!!
テストに成功しましたら、右上の「Pubulish」を押して公開しましょう!

4. ワークフローのAPI化

ついにここまできました🔥
お待ちかねのAPI化です。
ちなみにAPIはレートリミット(一定時間内のリクエスト制限)はありますが、そこまで叩かないのであれば無限に使えると思います!!
それではAPI化していきましょう。
公式のAPI管理画面 https://www.coze.com/open/oauth/pats にアクセスし、右上の 「Add token」 をクリックして有効化していきます。
Nameはお好きな名前を設定し、
Expiration timeは最大の30日を選択。(以前は無期限がありましたが、なくなってました。)
そして、Permissions「Workflow」にチェックを入れ、
Access team spacePersonalまたはAllに設定して下さい。
入力ができたら「Confirm」をクリック。
すると、Tokenが生成されるので大事に保管して下さい。
※1度しか表示されないので注意⚠️
下記Curlコマンドの”XXXXX”の2つの部分を入力
上の部分は先ほど取得した「pat_」から始まるToken。
下の部分はワークフローの編集画面のURLの”workflow_id=7425533982785978375”の数字の部分を設定。
Copy
curl --location --request POST 'https://api.coze.com/v1/workflow/run' \ --header 'Authorization: Bearer pat_XXXXXXXXXX' \ --header 'Content-Type: application/json' \ --header 'Accept: */*' \ --header 'Host: api.coze.com' \ --header 'Connection: keep-alive' \ --data-raw '{ "workflow_id": "XXXXXXXXXXXXXX", "parameters": { "author": "sora19ai", "query": "min_faves:100" } }'
設定できたら、これをコピーしておきます。

5. Difyで使ってみよう!

2つやり方があるのですが、AIエージェントがこれから流行ると思うので、おすすめは2つ目の方で1つ目は、こんなこともできるんだと思っておいて下さい笑

5-1. HTTPリクエストで使う方法

先ほどコピーしたcurlを、DifyのHTTPリクエストブロック「cURLからのインポート」に貼り付けると、
このように綺麗に貼り付けてくれるので、あとは、
ここの”author”と”query”にそれぞれ、ユーザーの入力なり、LLMの出力なりの変数を代入すると実行できるようになります!

5-2. カスタムツールとして使う方法

それでは本題です。カスタムツールを作っていきましょう!
「ツール」→「カスタムツールを作成する」をクリック
すると、名前とスキーマが入力できるので、下記のように入力して下さい。
OpenAPIのスキーマを入力していきます。
皆さんも他で使いたい時は、cURLと仕様書を全部LLMに投げて、指示すると作ってくれるので、試してみて下さい☺️
スキーマはこちらです↓
Copy
openapi: 3.1.0 info: title: Coze Workflow API version: "1.0.0" description: "ワークフローを実行するAPIエンドポイントです。" servers: - url: https://api.coze.com paths: /v1/workflow/run: post: summary: Run Workflow description: "指定されたworkflow_idとparametersでワークフローを実行します。" operationId: x_search_api security: - BearerAuth: [] requestBody: required: true content: application/json: schema: type: object properties: workflow_id: type: string example: "XXXXXXXXXXXXXX" parameters: type: object properties: author: type: string example: "sora19ai" query: type: string example: "min_faves:100" required: - author - query required: - workflow_id - parameters responses: '200': description: 正常に処理された場合のレスポンス content: application/json: schema: type: object description: "処理結果の詳細を含むレスポンスボディ" default: description: エラーレスポンス content: application/json: schema: type: object properties: error: type: string components: securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: JWT
これを入力すると、このような画面が下に出てくるので、認証方法を設定していきます。
認証タイプはAPIキーで、「ベアラー」を選択。
キーはAuthorizationのままで良い。
値に先ほど取得した「pat_XXXXX」のAPIキーを入力。
入力が完了したら保存しましょう。
そしたらテストで確認していきます。
ワークフローIDとパラメーター
Copy
{"author": "sora19ai", "query": "min_faves:100"}
を入力して、テストをすると、このような結果になると思います!
後は保存をして完了です!
続いて、エージェントのアプリを作り、下記のようなプロンプトを入力します。
プロンプト
Copy
あなたはXのリサーチエージェントです。 Xに関する検索はx_search_apiで workflow_idは"7472084817673666578", parametersはユーザーと検索クエリ{"author": "sora19ai", "query": "min_faves:100"}のように入力して下さい。 "author"は必須ではない。
そして、「ツール」に先ほど作った「x_search_api」を登録します。
LLMはJsonスキーマが使える、gpt-4oや、gemini-2.0-flashがおすすめです。
今回はgemini-2.0-flashで行きます!
それではデバックしてみましょう!
こんな感じでできました!
このようにして、DifyでXのAPIを組み込むことができます☺️
ちなみに、Dify v1.0.0のエージェントノードでもこんな感じで使うことができるので、
このように、ツールをどんどん作りまくれる人がAIエージェント時代を先走っていくのかなと思います!
ぜひ皆様もDifyで独自ツールを作ってみて下さい🔥

6. まとめ|Cozeで手軽にX APIを無料活用しよう

通常は料金が発生するX APIですが、
Cozeを使うことで簡単かつ無料で使える点は大きな魅力です。
ワークフローの作成・公開・API化まですべてブラウザ上で完結し、
プログラミング初心者でも取り組みやすいでしょう。
ぜひ本記事を参考に、Cozeを活用してX(旧Twitter)から欲しいデータを取得し、アプリやサービスの開発に役立ててみてください☺️