Telegram で GPT-4o を使って Flux Pro と合わせて AI 画像を生成
上級
これはContent Creation, Multimodal AI分野の自動化ワークフローで、22個のノードを含みます。主にIf, Set, Telegram, Aggregate, AimlApiなどのノードを使用。 Telegram 内で GPT-4o と Flux Pro を使って AI 画像を生成
前提条件
- •Telegram Bot Token
- •ターゲットAPIの認証情報が必要な場合あり
- •Google Sheets API認証情報
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"meta": {
"instanceId": "29cf227651b207fca8739269056bd8f95a432c5e246ffae4aaf9220581f6fe53",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "339179e6-1f09-435f-9b5e-c85dc3d9ed98",
"name": "📩 Telegram メッセージ受信",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-208,
0
],
"webhookId": "3ceea664-fd53-4141-8bc6-4fdaca0a661d",
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "QcfQneMUvIojzFQz",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "38840cb5-dd2d-4e2c-87c0-e57b6064294c",
"name": "📊 使用ログ取得",
"type": "n8n-nodes-base.googleSheets",
"position": [
16,
0
],
"parameters": {
"options": {
"returnFirstMatch": false
},
"filtersUI": {
"values": [
{
"lookupValue": "={{ $json.message.from.id }}",
"lookupColumn": "user_id"
},
{
"lookupValue": "={{ new Date().toISOString().slice(0,10) }}",
"lookupColumn": "date"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 2060422727,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RHgZNdT0whop0JY3vrj83yLtmVluG73NIfLBBa8ckPg/edit#gid=2060422727",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1RHgZNdT0whop0JY3vrj83yLtmVluG73NIfLBBa8ckPg",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RHgZNdT0whop0JY3vrj83yLtmVluG73NIfLBBa8ckPg/edit?usp=drivesdk",
"cachedResultName": "Image bot usage statistic"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "FAqNqtaHmPjIXEtc",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "31ef4475-8a58-4dd8-850c-cfe2bbfc3ad7",
"name": "📈 本日のリクエスト数集計",
"type": "n8n-nodes-base.aggregate",
"position": [
240,
0
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "67f85ddc-9bcf-4c35-81a1-5a0e1f5d30a6",
"name": "🔢 日次制限設定",
"type": "n8n-nodes-base.set",
"position": [
464,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1514c5a1-1bd4-4ba2-8bb9-30c679ae4f8e",
"name": "daily_limit",
"type": "number",
"value": 5
}
]
}
},
"typeVersion": 3.4
},
{
"id": "19a8f732-f6e0-4134-84fc-dfd7e14c7812",
"name": "🚦 制限超過確認?",
"type": "n8n-nodes-base.if",
"position": [
688,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "08e8aac4-9f6a-4fc0-b1ad-7d8493ff74bf",
"operator": {
"type": "number",
"operation": "lt"
},
"leftValue": "={{$('📈 Count Today’s Requests').item.json.data.length }}",
"rightValue": "={{ $json.daily_limit }}"
}
]
}
},
"executeOnce": false,
"typeVersion": 2.2
},
{
"id": "47ff6a8c-8a13-41f1-8847-7bb50c63014e",
"name": "🚫 通知: 制限超過",
"type": "n8n-nodes-base.telegram",
"position": [
912,
112
],
"webhookId": "bb58ce7a-45e5-42d1-a780-7cc47f7402b1",
"parameters": {
"text": "=Sorry! Your *daily limit of {{ $('🔢 Set Daily Limit').item.json.daily_limit }} generations* is exceeded!",
"chatId": "={{ $('📩 Receive Telegram Message').item.json.message.chat.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "QcfQneMUvIojzFQz",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "900536f7-d366-45a9-bafb-2fae6c1c0065",
"name": "📝 生成成功ログ記録",
"type": "n8n-nodes-base.googleSheets",
"position": [
1808,
-96
],
"parameters": {
"columns": {
"value": {
"date": "={{ new Date().toISOString().slice(0,10) }}",
"query": "={{ $('📩 Receive Telegram Message').item.json.message.text }}",
"user_id": "={{ $('📩 Receive Telegram Message').item.json.message.from.id }}",
"result_url": "={{ $('🎨 Generate Image (AI/ML API | flux-pro)').item.json.images[0].url }}"
},
"schema": [
{
"id": "user_id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "user_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "date",
"type": "string",
"display": true,
"required": false,
"displayName": "date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "query",
"type": "string",
"display": true,
"required": false,
"displayName": "query",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "result_url",
"type": "string",
"display": true,
"required": false,
"displayName": "result_url",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"user_id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 2060422727,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RHgZNdT0whop0JY3vrj83yLtmVluG73NIfLBBa8ckPg/edit#gid=2060422727",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1RHgZNdT0whop0JY3vrj83yLtmVluG73NIfLBBa8ckPg",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RHgZNdT0whop0JY3vrj83yLtmVluG73NIfLBBa8ckPg/edit?usp=drivesdk",
"cachedResultName": "Image bot usage statistic"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "FAqNqtaHmPjIXEtc",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "70630f26-3817-41f6-94ee-4f479ad15afe",
"name": "🎨 画像生成 (AI/ML API | flux-pro)",
"type": "n8n-nodes-base.httpRequest",
"position": [
1136,
-96
],
"parameters": {
"url": "https://api.aimlapi.com/v1/images/generations",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "model",
"value": "flux-pro"
},
{
"name": "prompt",
"value": "={{ $json.content }}"
},
{
"name": "n",
"value": "1"
},
{
"name": "size",
"value": "1024x1024"
},
{
"name": "response_formats",
"value": "=1"
}
]
},
"nodeCredentialType": "aimlApi"
},
"credentials": {
"aimlApi": {
"id": "fzkUXwSArkMtWVYd",
"name": "AI/ML account"
}
},
"typeVersion": 4.2
},
{
"id": "a47d6a9b-9ca6-4716-9083-d43b666da2e0",
"name": "🧠 プロンプト拡張 (AI/ML API | GPT-4o)",
"type": "n8n-nodes-aimlapi.aimlApi",
"position": [
912,
-96
],
"parameters": {
"model": "openai/gpt-4o",
"prompt": "=You are a prompt enhancer for AI image generation. Your task is to take the user's input and return only an improved version of the prompt. Do not include any explanations, introductions, or formatting. Output only the final prompt, nothing else.\n\n🧠 The user’s message is taken as the foundation for visual content generation. This input is then carefully analyzed, enriched, and transformed into a more expressive, structured, and detailed prompt. The purpose of this enhancement is to guide the AI model more effectively, resulting in an image that better matches the user's intent and imagination.\n\n✏️ Original user input:\n{{ $('📩 Receive Telegram Message').item.json.message.text }}",
"options": {},
"requestOptions": {}
},
"credentials": {
"aimlApi": {
"id": "fzkUXwSArkMtWVYd",
"name": "AI/ML account"
}
},
"typeVersion": 1
},
{
"id": "dcffa91d-a4c7-4851-9bdb-85552f4420e5",
"name": "🖋 画像説明生成 (AI/ML API | GPT-4o)",
"type": "n8n-nodes-aimlapi.aimlApi",
"position": [
1360,
-96
],
"parameters": {
"model": "openai/gpt-4o",
"prompt": "=Write a vivid and visually rich description for an AI-generated image, starting with the phrase: \"Here’s your image:\". The description should reflect the result of the prompt below, as if the image already exists.\n\nPrompt:\n\"{{ $json.prompt }}\"\n\nAvoid repeating the prompt verbatim. Use expressive language and sensory detail. Keep it to 1–2 elegant sentences.\n",
"options": {},
"requestOptions": {}
},
"credentials": {
"aimlApi": {
"id": "fzkUXwSArkMtWVYd",
"name": "AI/ML account"
}
},
"typeVersion": 1
},
{
"id": "560a50a5-a96a-48b2-ab1e-1f6f0bcf2a15",
"name": "📤 ユーザーへ画像送信",
"type": "n8n-nodes-base.telegram",
"position": [
1584,
-96
],
"webhookId": "4a46da0a-9a91-4f31-802a-f0ce89516aa7",
"parameters": {
"file": "={{ $('🎨 Generate Image (AI/ML API | flux-pro)').item.json.images[0].url }}",
"chatId": "={{ $('📩 Receive Telegram Message').item.json.message.chat.id }}",
"operation": "sendPhoto",
"additionalFields": {
"caption": "={{ $json.content }}"
}
},
"credentials": {
"telegramApi": {
"id": "QcfQneMUvIojzFQz",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "1fed89b3-457f-457e-ba5d-13f209a63cd4",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
-272,
-160
],
"parameters": {
"color": 4,
"width": 224,
"height": 336,
"content": "## Incoming Message\n### Handle incoming user messages from Telegram."
},
"typeVersion": 1
},
{
"id": "3623d8a3-1933-4809-ab5b-ed54f039f116",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
-160
],
"parameters": {
"width": 864,
"height": 336,
"content": "## Usage Limit Check\n### Check how many times the user has generated today and enforce the daily limit.\n\n"
},
"typeVersion": 1
},
{
"id": "a34ed607-47b0-4966-a11f-7298c41b4223",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
848,
-256
],
"parameters": {
"color": 6,
"width": 208,
"height": 336,
"content": "## Prompt Enhancement\n### Use LLM to rewrite the user's input into a rich and detailed prompt.\n\n\n"
},
"typeVersion": 1
},
{
"id": "02a9f22d-a4d4-4deb-8ed1-4818a9ddf198",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1072,
-256
],
"parameters": {
"color": 6,
"width": 208,
"height": 336,
"content": "## Image Generation\n### Generate an image using the enhanced prompt via AIMLAPI.\n\n\n\n"
},
"typeVersion": 1
},
{
"id": "31f52e39-80dc-45d5-9ef8-7c96d55b81a0",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1296,
-256
],
"parameters": {
"color": 6,
"width": 208,
"height": 336,
"content": "## Image Description\n### Create a vivid description of the generated image using LLM.\n\n\n\n\n\n"
},
"typeVersion": 1
},
{
"id": "d923875c-b2d0-4804-8050-5b8daa2aaad8",
"name": "付箋5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1520,
-256
],
"parameters": {
"color": 4,
"width": 416,
"height": 336,
"content": "## Delivery & Logging\n### Send the final image and caption to the user, and log the result to Google Sheets.\n\n\n\n\n\n\n"
},
"typeVersion": 1
},
{
"id": "46afbb51-ec45-49b2-b6b1-c3333328edf1",
"name": "付箋6",
"type": "n8n-nodes-base.stickyNote",
"position": [
848,
96
],
"parameters": {
"color": 3,
"width": 256,
"height": 352,
"content": "\n\n---\n\n\n---\n\n\n---\n\n\n---\n\n\n---\n\n\n## Notify: Limit Exceeded\n### Notify the user that the daily generation limit has been reached\n\n\n \n\n"
},
"typeVersion": 1
},
{
"id": "53ac8095-8518-465d-bc4c-965a7110bd78",
"name": "付箋8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-336,
-1904
],
"parameters": {
"color": 5,
"width": 560,
"height": 608,
"content": "# 🧠 AI Image Generator Bot — Telegram + AIMLAPI (via n8n)\n\nThis workflow lets users generate AI images by messaging a Telegram bot. Each user has a **daily limit**, tracked using **Google Sheets**. Prompts are enhanced and images are generated using **AIMLAPI**.\n\n---\n\n## 🚀 Features\n\n* Text-to-image generation via `flux-pro` model\n* Prompt enhancement with GPT-4o\n* Descriptive captions for each image\n* Telegram delivery\n* Daily usage tracking and limiting\n* Logging all activity in Google Sheets"
},
"typeVersion": 1
},
{
"id": "56bb2e61-b024-4e87-9471-7f379e9ee6b9",
"name": "付箋9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-336,
-1280
],
"parameters": {
"color": 5,
"width": 560,
"height": 736,
"content": "## ⚙️ Customization\n\n* `Set Daily Limit` node controls the number of free generations\n* You can add:\n\n * NSFW filtering\n * Dynamic model selection\n * `/help` or `/history` commands\n\n---\n\n## 💡 Example User Flow\n\n1. User sends:\n\n ```\n a dragon flying above New York at night\n ```\n\n2. Bot replies:\n\n > **Here’s your image:**\n > A crimson dragon soars through moonlit clouds over Manhattan, its wings glowing against the skyline.\n\n> 3. Image is generated and sent\n"
},
"typeVersion": 1
},
{
"id": "352ebd4e-5f9e-44b7-8802-2fcf323ca0ad",
"name": "付箋10",
"type": "n8n-nodes-base.stickyNote",
"position": [
240,
-1808
],
"parameters": {
"color": 5,
"width": 560,
"height": 912,
"content": "\n# 🛠 Setup Guide\n\n### 1. 📲 Create a Telegram Bot\n\n* Go to [@BotFather](https://t.me/BotFather)\n* Use `/newbot`, set a name and username\n* Save the **API token**\n\n---\n\n### 2. 🔐 Connect Telegram API in n8n\n\n* Go to `Credentials > Telegram API`\n* Create new credentials using the token from BotFather\n\n---\n\n### 3. 📗 Create a Google Sheet\n\n* Add a sheet named `Sheet1`\n\n* Use these columns as headers:\n\n ```\n user_id | date | query | result_url\n ```\n\n* Share it with your Google service account or OAuth user\n (depends on how you authenticate Google Sheets in n8n)\n\n---\n\n### 4. 🔌 Set Up Credentials in n8n\n\n* **Google Sheets:** OAuth2 or service account\n* **AIMLAPI:** Use your API key in `AI/ML API` credentials\n\n * Base URL: `https://api.aimlapi.com/v1`\n * Docs: [docs.aimlapi.com](https://docs.aimlapi.com)\n"
},
"typeVersion": 1
},
{
"id": "63074211-fe01-4947-9ffd-f45baab48fbd",
"name": "付箋11",
"type": "n8n-nodes-base.stickyNote",
"position": [
240,
-880
],
"parameters": {
"color": 5,
"width": 560,
"height": 336,
"content": "## 📁 Data Logged\n\nEach generation is saved to Google Sheets:\n\n` | user_id | date | query | result_url | `\n` | ------- | ---- | ----- | ---------- | `\n\n\n## 🧪 Testing Tips\n\n* Use a test Telegram chat\n* Add `Console` or `Set` nodes to inspect payloads\n* Test the workflow using `/execute` from Telegram, **not \"Execute Node\"**, if you're using static data\n"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"67f85ddc-9bcf-4c35-81a1-5a0e1f5d30a6": {
"main": [
[
{
"node": "19a8f732-f6e0-4134-84fc-dfd7e14c7812",
"type": "main",
"index": 0
}
]
]
},
"38840cb5-dd2d-4e2c-87c0-e57b6064294c": {
"main": [
[
{
"node": "31ef4475-8a58-4dd8-850c-cfe2bbfc3ad7",
"type": "main",
"index": 0
}
]
]
},
"560a50a5-a96a-48b2-ab1e-1f6f0bcf2a15": {
"main": [
[
{
"node": "900536f7-d366-45a9-bafb-2fae6c1c0065",
"type": "main",
"index": 0
}
]
]
},
"19a8f732-f6e0-4134-84fc-dfd7e14c7812": {
"main": [
[
{
"node": "a47d6a9b-9ca6-4716-9083-d43b666da2e0",
"type": "main",
"index": 0
}
],
[
{
"node": "47ff6a8c-8a13-41f1-8847-7bb50c63014e",
"type": "main",
"index": 0
}
]
]
},
"31ef4475-8a58-4dd8-850c-cfe2bbfc3ad7": {
"main": [
[
{
"node": "67f85ddc-9bcf-4c35-81a1-5a0e1f5d30a6",
"type": "main",
"index": 0
}
]
]
},
"339179e6-1f09-435f-9b5e-c85dc3d9ed98": {
"main": [
[
{
"node": "38840cb5-dd2d-4e2c-87c0-e57b6064294c",
"type": "main",
"index": 0
}
]
]
},
"900536f7-d366-45a9-bafb-2fae6c1c0065": {
"main": [
[]
]
},
"dcffa91d-a4c7-4851-9bdb-85552f4420e5": {
"main": [
[
{
"node": "560a50a5-a96a-48b2-ab1e-1f6f0bcf2a15",
"type": "main",
"index": 0
}
]
]
},
"a47d6a9b-9ca6-4716-9083-d43b666da2e0": {
"main": [
[
{
"node": "70630f26-3817-41f6-94ee-4f479ad15afe",
"type": "main",
"index": 0
}
]
]
},
"70630f26-3817-41f6-94ee-4f479ad15afe": {
"main": [
[
{
"node": "dcffa91d-a4c7-4851-9bdb-85552f4420e5",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - コンテンツ作成, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
Telegram、AIMLAPI、Google Sheetsを使用してマルチモデルAIチャットボットを作成
Telegram、AIMLAPI、Google スプレッドシートを使って多模型AIチャットボットを作成
If
Set
Code
+
If
Set
Code
25 ノードAI/ML API | D1m7asis
個人の生産性
LinkedInおよびXウイルスのなコンテンツ自動エンジン
AIを使ってLinkedInとXにウイルスのなコンテンツを自動生成して公開する
If
Set
Wait
+
If
Set
Wait
156 ノードDiptamoy Barman
コンテンツ作成
再生リスト詳細設定ボットコピー
Suno、GPT-4、Runway、Creatomate を使って AI 生成の YouTube ミュージックプレイリストを作成
If
Set
Code
+
If
Set
Code
203 ノードJoseph
コンテンツ作成
マージ
Suno API、Claude、Telegramボットを使って完全な20曲YouTubeプレイリストを作成
If
Set
Code
+
If
Set
Code
150 ノードJoseph
コンテンツ作成
Veo3、YouTube、Googleシートを使ってAI動画制作と配布を自動化
AI動画制作と配信にはVeo3、YouTube、Google Workspaceを活用しましょう
If
Wait
Aiml Api
+
If
Wait
Aiml Api
26 ノードDmitry
コンテンツ作成
GPT-5 と Google Veo-3 を使用してテキストプロンプトから動画を生成
テキストプロンプトから動画を生成するために GPT-5 と Google Veo-3 を使用
If
Set
Wait
+
If
Set
Wait
20 ノードAI/ML API | D1m7asis
コンテンツ作成