こんにちは!そらです
この記事をご覧いただきありがとうございます!!
ありがたいことにこの投稿がとても反響があったので、
こちらの記事を書かせていただきました!
ちなみに、、、今週は毎日プレゼント企画を行うので、僕の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を入力して下さい。
続いて、authorとqueryを入力していくのですが、ユーザーの入力にするには、
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に
Plain Text
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 spaceはPersonalまたはAllに設定して下さい。
入力ができたら「Confirm」をクリック。
すると、Tokenが生成されるので大事に保管して下さい。
※1度しか表示されないので注意
下記Curlコマンドの”XXXXX”の2つの部分を入力
上の部分は先ほど取得した「pat_」から始まるToken。
下の部分はワークフローの編集画面のURLの”workflow_id=7425533982785978375”の数字の部分を設定。
Bash
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に投げて、指示すると作ってくれるので、試してみて下さい
スキーマはこちらです↓
Bash
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とパラメーター
Bash
Copy
{"author": "sora19ai", "query": "min_faves:100"}
を入力して、テストをすると、このような結果になると思います!
後は保存をして完了です!
続いて、エージェントのアプリを作り、下記のようなプロンプトを入力します。
プロンプト
Plain Text
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)から欲しいデータを取得し、アプリやサービスの開発に役立ててみてください