
「毎朝、開発に役立つツールを自動でXに投稿したい」——そんな仕組みを、コードをほとんど書かずに作れます。本記事ではワークフロー自動化ツールn8nとOpenAIを組み合わせ、GitHubで話題のツールを毎日1つ選んで要約し、Xへ自動投稿するBotの作り方を、最短手順で解説します。同じツールが続かないための重複対策まで含めて、この記事だけで完成まで到達できます。
GitHubで最近スターを集めているリポジトリ(=話題のツール)を毎朝1つ取得し、OpenAIが開発者向けの紹介文に要約してXへ自動投稿するBotを作ります。完成形は次の5ノードです。
Schedule Trigger(毎朝起動)
→ HTTP Request(GitHubから話題のツールを取得)
→ Code(10件からランダムに1件選ぶ)
→ Basic LLM Chain(OpenAIで要約)
→ Create Tweet(Xへ投稿)必要なのはn8nアカウント、OpenAIのAPIキー、XのDeveloperアカウントの3つです。
X APIは2026年以降、無料枠が廃止され従量課金になっています。投稿1件はごく少額ですが、リンク(URL)を含む投稿は料金が大幅に上がるため、本記事では投稿文にURLを含めない構成でコストを抑えます。事前にX Developer Portalで支払い設定を済ませておきましょう。
認証はX Developer Portalで、アプリ権限を「Read and Write」にし、Callback URIに https://oauth.n8n.cloud/oauth2/callback を登録。OAuth 2.0のClient IDとClient Secretを取得します(Secretは生成直後しか全文表示されないので即コピー)。これをn8nのX(Create Tweet)ノードの認証に登録して「Connect to X」で認可します。このとき認可画面に「投稿する」権限が含まれているか必ず確認してください。欠けていると投稿エラーになります。
新規ワークフローの起点にSchedule Triggerを置き、起動を「毎日・朝8時」などに設定します。
続けてHTTP Requestノードを追加し、GitHubから話題のツールを取得します。Method=GET、URLは次をfxモードで入力します。
https://api.github.com/search/repositories?q=created:>{{ $now.minus({ days: 30 }).toFormat('yyyy-MM-dd') }}&sort=stars&order=desc&per_page=10「実行日から30日前以降に作られたリポジトリを、スター数順に10件取得」という意味です。日付を $now.minus(...) で動的にしているため、いつ動かしても常に直近1ヶ月の人気ツールを拾います。
毎回1位だけを選ぶと同じツールが続くため、取得した10件からランダムに1件選ぶCodeノードをHTTP Requestの後ろに挟みます。
javascript
const items = $input.first().json.items;
const random = items[Math.floor(Math.random() * items.length)];
return { json: random };これで毎回ランダムな1件だけが次に流れ、同じツールが連続する確率が大きく下がります。
Basic LLM Chainノードを追加し、OpenAI Chat Modelをぶら下げてAPIキーを登録します(軽量モデルで十分)。プロンプト入力方式は「Define below」を選び、次の指示文を入れます。
あなたはIT企業のSNS担当です。以下のGitHubリポジトリ情報をもとに、
日本語で開発者向けのツール紹介ツイートを1つ作成してください。
条件:
- 全角120文字以内で簡潔に
- ツール名・何ができるか・誰に役立つかを簡潔に
- URLは絶対に含めない
- 絵文字は控えめ、ハッシュタグは2個まで
- ツイート本文だけを出力し、前置きは書かない
ツール名: {{ $json.full_name }}
説明: {{ $json.description }}文字数は「全角120文字以内」と日本語基準で指定するのがコツです。「280字」と書くとXの上限(全角140文字相当)を超えやすく、投稿エラーの原因になります。
最後にCreate Tweetノードを追加し、Credentialに作成したX認証、Resource=Tweet、Operation=Create、Textに {{ $json.text }}(fxモード)を設定。Execute stepで実際に投稿されれば成功です。
通しでテスト投稿が確認できたら、ワークフローを**Publish(有効化)**します。これで設定した時刻に毎日自動でツール紹介が投稿されます。
投稿時に「Forbidden(権限エラー)」が出たら、原因は「書き込み権限の不足」か「文字数オーバー」のどちらかです。短い固定文に一時差し替えて実行し、成功すれば文字数、失敗すれば権限、と切り分けられます。
完全な重複防止にしたい場合は、投稿済みツール名をData tableやスプレッドシートに記録し、未投稿のものだけを選ぶ仕組みに発展させられます。
この商品について質問がありますか?コミュニティや専門家に質問してください。