n8nで「毎日IT系ツールを紹介するXbot」をノーコードで自動化する

n8nで「毎日IT系ツールを紹介するXbot」をノーコードで自動化する

2026年6月30日 (最終更新 2026年6月30日)

「毎朝、開発に役立つツールを自動で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へ投稿)

Step 1:準備と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」で認可します。このとき認可画面に「投稿する」権限が含まれているか必ず確認してください。欠けていると投稿エラーになります。

Step 2:起動とデータ取得

新規ワークフローの起点に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ヶ月の人気ツールを拾います。

Step 3:ランダム選択で重複を防ぐ

毎回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件だけが次に流れ、同じツールが連続する確率が大きく下がります。

Step 4:OpenAIで要約してXへ投稿

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で実際に投稿されれば成功です。

Step 5:自動化をオンにする

通しでテスト投稿が確認できたら、ワークフローを**Publish(有効化)**します。これで設定した時刻に毎日自動でツール紹介が投稿されます。

つまずきやすいポイント

投稿時に「Forbidden(権限エラー)」が出たら、原因は「書き込み権限の不足」か「文字数オーバー」のどちらかです。短い固定文に一時差し替えて実行し、成功すれば文字数、失敗すれば権限、と切り分けられます。

完全な重複防止にしたい場合は、投稿済みツール名をData tableやスプレッドシートに記録し、未投稿のものだけを選ぶ仕組みに発展させられます。


よくある質問

この商品について質問がありますか?コミュニティや専門家に質問してください。

担当者に相談する