URLベースでAI、Telegram、マルチプラットフォームで自動のにソーシャルメディア投稿を生成
上級
これはContent Creation, Multimodal AI分野の自動化ワークフローで、42個のノードを含みます。主にIf, Set, Code, Merge, Functionなどのノードを使用。 URLを基にAI、Telegram、複数のプラットフォームで自動のにソーシャルメディア投稿を作成
前提条件
- •LinkedIn API認証情報
- •Telegram Bot Token
- •ターゲットAPIの認証情報が必要な場合あり
- •Google Sheets API認証情報
- •OpenAI API Key
- •Google Gemini API Key
使用ノード (42)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"nodes": [
{
"name": "Telegram Bot Trigger",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
0,
544
],
"webhookId": "9ea69b50-b6ca-4968-918a-8ca35b8ad7d7",
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "",
"name": "YOUR_TELEGRAM_API_CREDENTIAL"
}
},
"typeVersion": 1,
"id": "Telegram-Bot-Trigger-0"
},
{
"name": "ワークフロー概要",
"type": "n8n-nodes-base.stickyNote",
"position": [
-576,
336
],
"parameters": {
"width": 389,
"height": 384,
"content": "# 📱 Telegram URL Processor\n\nThis workflow receives URLs from Telegram and processes them into social media content:\n\n- ✅ Extracts URL from message\n- 📊 Saves to Google Sheets\n- 📄 Fetches content\n- 🤖 AI summarization\n- 🎨 Image generation\n- 📱 Multi-platform posting\n- ✅ Returns post URLs"
},
"typeVersion": 1,
"id": "--1"
},
{
"name": "URL抽出",
"type": "n8n-nodes-base.function",
"position": [
448,
448
],
"parameters": {
"functionCode": "// Extract URL from Telegram message\nconst message = $json.message.text;\nconst urlRegex = /(https?:\\/\\/[^\\s]+)/g;\nconst urls = message.match(urlRegex);\n\nif (!urls || urls.length === 0) {\n throw new Error('No URL found in the message');\n}\n\nconst extractedUrl = urls[0];\nconst chatId = $json.message.chat.id;\nconst messageId = $json.message.message_id;\nconst timestamp = new Date().toISOString();\n\nreturn {\n json: {\n url: extractedUrl,\n chatId: chatId,\n messageId: messageId,\n timestamp: timestamp,\n originalMessage: message\n }\n};"
},
"typeVersion": 1,
"id": "URL--2"
},
{
"name": "URLコンテンツの取得",
"type": "n8n-nodes-base.httpRequest",
"position": [
896,
448
],
"parameters": {
"url": "={{ $node['Extract URL'].json.url }}",
"options": {
"redirect": {
"redirect": {}
},
"response": {
"response": {
"fullResponse": true
}
}
}
},
"typeVersion": 4.2,
"id": "URL--3"
},
{
"name": "テキストコンテンツの抽出",
"type": "n8n-nodes-base.function",
"position": [
1120,
448
],
"parameters": {
"functionCode": "// Extract text content from HTML\nconst html = $json.data;\nconst url = $node['Extract URL'].json.url;\n\n// Simple HTML to text conversion\nlet textContent = html\n .replace(/<script[^>]*>.*?<\\/script>/gi, '')\n .replace(/<style[^>]*>.*?<\\/style>/gi, '')\n .replace(/<[^>]*>/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim();\n\n// Extract title (simple approach)\nconst titleMatch = html.match(/<title[^>]*>([^<]+)<\\/title>/i);\nconst title = titleMatch ? titleMatch[1].trim() : 'Article';\n\n// Limit content length for AI processing\nif (textContent.length > 8000) {\n textContent = textContent.substring(0, 8000) + '...';\n}\n\nif (textContent.length < 100) {\n throw new Error('Could not extract meaningful content from the URL');\n}\n\nreturn {\n json: {\n url: url,\n title: title,\n content: textContent,\n wordCount: textContent.split(' ').length\n }\n};"
},
"typeVersion": 1,
"id": "--4"
},
{
"name": "AI処理",
"type": "n8n-nodes-base.stickyNote",
"position": [
1328,
64
],
"parameters": {
"width": 280,
"height": 864,
"content": "# 🤖 AI Content Generation\n\nThis section handles:\n- Content summarization\n- Social media post creation\n- Image description generation\n- Platform-specific optimization"
},
"typeVersion": 1,
"id": "AI--5"
},
{
"name": "Facebookに投稿",
"type": "n8n-nodes-base.httpRequest",
"position": [
3520,
276
],
"parameters": {
"url": "=https://graph.facebook.com/v19.0/[INSERT_YOUR_SITE_ID]/photos",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "form-urlencoded",
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "caption",
"value": "={{ $input.first().json.message.content }}"
},
{
"name": "=url",
"value": "={{ $item(0).$node[\"Supabase Public URL\"].json[\"public_url\"] }}"
},
{
"value": "="
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/x-www-form-urlencoded"
}
]
},
"nodeCredentialType": "facebookGraphApi"
},
"credentials": {
"facebookGraphApi": {
"id": "",
"name": "YOUR_FACEBOOK_GRAPH_API_CREDENTIAL"
}
},
"typeVersion": 4.2,
"id": "Facebook--6"
},
{
"name": "Instagramに投稿",
"type": "n8n-nodes-base.httpRequest",
"position": [
3520,
468
],
"parameters": {
"url": "=https://graph.facebook.com/v23.0/[INSERT_YOUR_SITE_ID]/media",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "form-urlencoded",
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "image_url",
"value": "={{ $item(0).$node[\"Supabase Public URL\"].json[\"public_url\"] }}"
},
{
"name": "caption",
"value": "={{ $input.first().json.message.content }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/x-www-form-urlencoded"
}
]
},
"nodeCredentialType": "facebookGraphApi"
},
"credentials": {
"facebookGraphApi": {
"id": "",
"name": "YOUR_FACEBOOK_GRAPH_API_CREDENTIAL"
}
},
"typeVersion": 4.2,
"id": "Instagram--7"
},
{
"name": "最終ステータス更新",
"type": "n8n-nodes-base.googleSheets",
"position": [
4864,
448
],
"parameters": {
"columns": {
"value": {
"Image URL": "={{ $item(0).$node[\"Supabase Public URL\"].json[\"public_url\"] }}",
"Source URL": "={{ $node[\"Telegram Bot Trigger\"].json.message.text }}",
"Facebook URL": "={{ $json.facebook_post_url }}",
"LinkedIn URL": "={{ $json.linkedin_post_url }}",
"Instagram URL": "={{ $json.instagram_post_url }}",
"Facebook Content": "={{ $node[\"Facebook Post\"].json.message.content }}",
"Instagram Content": "={{ $node[\"Instagram Post\"].json.message.content }}",
"LinkedIn Content ": "={{ $node[\"LinkedIn Post\"].json.message.content }}"
},
"schema": [
{
"id": "Source URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Source URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Facebook Content",
"type": "string",
"display": true,
"required": false,
"displayName": "Facebook Content",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Facebook URL",
"type": "string",
"display": true,
"required": false,
"displayName": "Facebook URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Instagram Content",
"type": "string",
"display": true,
"required": false,
"displayName": "Instagram Content",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Instagram URL",
"type": "string",
"display": true,
"required": false,
"displayName": "Instagram URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "LinkedIn Content ",
"type": "string",
"display": true,
"required": false,
"displayName": "LinkedIn Content ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "LinkedIn URL",
"type": "string",
"display": true,
"required": false,
"displayName": "LinkedIn URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Image URL",
"type": "string",
"display": true,
"required": false,
"displayName": "Image URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Source URL"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1b7k0A06DY_oI3Ex6fR48FN0PXK6g59U4714wBYUCezw/edit#gid=0",
"cachedResultName": "Arkusz1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1b7k0A06DY_oI3Ex6fR48FN0PXK6g59U4714wBYUCezw",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1b7k0A06DY_oI3Ex6fR48FN0PXK6g59U4714wBYUCezw/edit?usp=drivesdk",
"cachedResultName": "n8n - Telegram Social Media Content Automation"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "",
"name": "YOUR_GOOGLE_SHEETS_OAUTH2_API_CREDENTIAL"
}
},
"typeVersion": 4,
"alwaysOutputData": true,
"id": "--8"
},
{
"name": "投稿フェーズ",
"type": "n8n-nodes-base.stickyNote",
"position": [
4568,
-44
],
"parameters": {
"height": 652,
"content": "# 📱 Social Media Publishing\n\nPosts content to:\n- Facebook Pages via Graph API\n- Instagram Business via Graph API\n- LinkedIn via REST API"
},
"typeVersion": 1,
"id": "--9"
},
{
"name": "Instagram1に投稿",
"type": "n8n-nodes-base.httpRequest",
"position": [
3744,
468
],
"parameters": {
"url": "=https://graph.facebook.com/v23.0/[INSERT_YOUR_SITE_ID]/media_publish",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "form-urlencoded",
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "creation_id",
"value": "={{ $json.id }}"
},
{
"name": "access_token",
"value": "={{ $credentials.facebookGraph.accessToken }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/x-www-form-urlencoded"
}
]
},
"nodeCredentialType": "facebookGraphApi"
},
"credentials": {
"facebookGraphApi": {
"id": "",
"name": "YOUR_FACEBOOK_GRAPH_API_CREDENTIAL"
}
},
"typeVersion": 4.2,
"id": "Instagram1--10"
},
{
"name": "Facebook投稿",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1344,
368
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-nano",
"cachedResultName": "GPT-4.1-NANO"
},
"options": {},
"messages": {
"values": [
{
"content": "=Based on the provided article content, create a Facebook post that is professional yet approachable, ranging from 100-200 words. The tone should be informative and engaging, with occasional light humor when appropriate to the topic. Focus on the key takeaway or most interesting insight from the article. Include a clear call-to-action that encourages meaningful discussion in the comments. The post should feel conversational and relatable while maintaining credibility. If the topic allows, incorporate a subtle touch of humor or a relatable analogy that your professional network would appreciate. Keep the language of the original text. End with a thoughtful question to spark engagement.: {{ $('Extract Text Content').item.json.content }}"
}
]
}
},
"credentials": {
"openAiApi": {
"id": "",
"name": "YOUR_OPEN_AI_API_CREDENTIAL"
}
},
"typeVersion": 1.8,
"id": "Facebook--11"
},
{
"name": "Instagram投稿",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1344,
560
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-nano",
"cachedResultName": "GPT-4.1-NANO"
},
"options": {},
"messages": {
"values": [
{
"content": "=Transform the article content into a punchy Instagram post of 50-80 words maximum. Use a casual, energetic tone with 2-3 relevant emojis strategically placed. Include wordplay, puns, or clever turns of phrase when they fit naturally. Focus on one compelling hook or surprising fact from the article. Write in short, impactful sentences that work well with Instagram's visual-first format. Include 3-5 relevant hashtags at the end. The post should feel fresh, scrollable, and shareable while still delivering value from the original content. Keep the languafe of the original: {{ $('Extract Text Content').item.json.content }}"
}
]
}
},
"credentials": {
"openAiApi": {
"id": "",
"name": "YOUR_OPEN_AI_API_CREDENTIAL"
}
},
"typeVersion": 1.8,
"id": "Instagram--12"
},
{
"name": "LinkedIn投稿",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1344,
744
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-nano",
"cachedResultName": "GPT-4.1-NANO"
},
"options": {},
"messages": {
"values": [
{
"content": "=Create an engaging, professional LinkedIn post (max 400 characters) based on this article: {{ $('Extract Text Content').item.json.content }}"
}
]
}
},
"credentials": {
"openAiApi": {
"id": "",
"name": "YOUR_OPEN_AI_API_CREDENTIAL"
}
},
"typeVersion": 1.8,
"id": "LinkedIn--13"
},
{
"name": "マージ",
"type": "n8n-nodes-base.merge",
"position": [
3296,
276
],
"parameters": {},
"typeVersion": 3.2,
"id": "--14"
},
{
"name": "マージ1",
"type": "n8n-nodes-base.merge",
"position": [
3296,
468
],
"parameters": {},
"typeVersion": 3.2,
"id": "-1-15"
},
{
"name": "マージ2",
"type": "n8n-nodes-base.merge",
"position": [
3296,
888
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.2,
"id": "-2-16"
},
{
"name": "メッセージにURLが含まれる場合",
"type": "n8n-nodes-base.if",
"position": [
224,
544
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "dc0117b8-213b-4c6f-934e-583fe2ec7d45",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "=={{ ($json.message.text || '').match(/https?:\\/\\/\\S+/) !== null }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2,
"id": "-URL--17"
},
{
"name": "Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
448,
640
],
"webhookId": "7e3d2ccb-9161-43d5-99c6-a2286541886a",
"parameters": {
"text": "You can't do this here. You need to upload a URL with an article.",
"chatId": "={{ $json.message.chat.id }}",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "",
"name": "YOUR_TELEGRAM_API_CREDENTIAL"
}
},
"typeVersion": 1.2,
"id": "Telegram-18"
},
{
"name": "コード",
"type": "n8n-nodes-base.code",
"position": [
3968,
272
],
"parameters": {
"jsCode": "const id = $json.post_id || $json.id || '';\nconst parts = id.split('_');\nconst postId = parts.length > 1 ? parts[1] : '';\nconst facebookUsername = '<YOUR_FACEBOOK_PAGE_USERNAME>';\nconst facebookPostUrl = postId\n ? `https://facebook.com/${facebookUsername}/posts/${postId}`\n : '';\n\nreturn {\n json: {\n facebook_post_id: postId,\n facebook_post_url: facebookPostUrl,\n facebook_published: !!postId\n }\n};\n"
},
"typeVersion": 2,
"id": "--19"
},
{
"name": "コード1",
"type": "n8n-nodes-base.code",
"position": [
4192,
468
],
"parameters": {
"jsCode": "const mediaId = $json.id || '';\nreturn {\n json: {\n instagram_post_id: mediaId,\n instagram_post_url: $input.first().json.permalink, // nie mamy shortcode :(\n instagram_published: !!mediaId\n }\n};\n"
},
"typeVersion": 2,
"id": "-1-20"
},
{
"name": "LinkedIn",
"type": "n8n-nodes-base.linkedIn",
"position": [
3744,
888
],
"parameters": {
"text": "={{ $('LinkedIn Post').item.json.message.content }}",
"person": "wZFKPz_aPr",
"additionalFields": {},
"shareMediaCategory": "IMAGE"
},
"credentials": {
"linkedInOAuth2Api": {
"id": "",
"name": "YOUR_LINKED_IN_OAUTH2_API_CREDENTIAL"
}
},
"typeVersion": 1,
"id": "LinkedIn-21"
},
{
"name": "バイナリファイル",
"type": "n8n-nodes-base.httpRequest",
"position": [
3520,
888
],
"parameters": {
"url": "={{ $json.public_url }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2,
"id": "--22"
},
{
"name": "マージ3",
"type": "n8n-nodes-base.merge",
"position": [
4416,
432
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3.2,
"id": "-3-23"
},
{
"name": "投稿URLの取得",
"type": "n8n-nodes-base.httpRequest",
"position": [
3968,
468
],
"parameters": {
"url": "={{ `https://graph.facebook.com/${$json.fbApiVersion || 'v19.0'}/${$json.id}?fields=permalink` }}",
"options": {},
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{}
]
},
"nodeCredentialType": "facebookGraphApi"
},
"credentials": {
"facebookGraphApi": {
"id": "",
"name": "YOUR_FACEBOOK_GRAPH_API_CREDENTIAL"
}
},
"typeVersion": 4.2,
"id": "-URL--24"
},
{
"name": "コード2",
"type": "n8n-nodes-base.code",
"position": [
3968,
888
],
"parameters": {
"jsCode": "const urn = $json.urn || ''; // example: urn:li:share:7342310895114420224\nconst postId = urn.split(':').pop(); // get the numeric ID\n\nconst linkedinPostUrl = postId \n ? `https://www.linkedin.com/feed/update/${urn.replace('urn:li:', '').replace(/:/g, '%3A')}/`\n : '';\n\nreturn {\n json: {\n linkedin_post_id: postId,\n linkedin_post_url: linkedinPostUrl,\n linkedin_published: !!postId\n }\n};\n"
},
"typeVersion": 2,
"id": "-2-25"
},
{
"name": "コード3",
"type": "n8n-nodes-base.code",
"position": [
4640,
448
],
"parameters": {
"jsCode": "return [\n {\n json: Object.assign({}, ...items.map(item => item.json))\n }\n];\n"
},
"typeVersion": 2,
"id": "-3-26"
},
{
"name": "フィールドの編集",
"type": "n8n-nodes-base.set",
"position": [
2272,
716
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "bb4004a1-9c8b-4603-b8ed-227e50940f87",
"name": "filename",
"type": "string",
"value": "={{$now.toMillis()}}.png"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4,
"id": "--27"
},
{
"name": "画像生成1",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
2048,
716
],
"parameters": {
"model": "gpt-image-1",
"prompt": "={{ $json.text }}",
"options": {
"size": "1024x1024",
"quality": "high"
},
"resource": "image"
},
"credentials": {
"openAiApi": {
"id": "",
"name": "YOUR_OPEN_AI_API_CREDENTIAL"
}
},
"typeVersion": 1.8,
"id": "-1-28"
},
{
"name": "Basic LLM Chain2",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
1696,
716
],
"parameters": {
"text": "=Wygeneruj prompt dla Recraft, tak, aby wygenerował profesjonalny obraz na social media (Facebook, Instagram) do tego TEMATU: {{ $json.text }} Pamiętaj, że obraz ma być interesujący, pasujący do bloga technologicznego, na przykład fotorealistyczne fotki ekspertów w biurze, w terenie, zdjęcia konkretnych sprzetow, technologii czy koncepcji opisanych w artykule. Obrazki mają być esetyczne, wywołujące pozytywne uczucia. Tematyka i wygląd obrazka ma ściśle wiązać się z treścią zadanego TEMATU. W Prawym dolnym rogu ma być mały napis SmartCamp.AI. Pamiętaj, że to jest prompt, który później będzie wklejany do body w api, wiec unikaj elementów, które moga popsuć json (Nie możesz używać cudzysłowów). Wygeneruj sam prompt, bez wstępu, bez cudzysłowów. Cała wiadomość musi mieć mniej niż 1000 znaków.",
"batching": {},
"promptType": "define"
},
"typeVersion": 1.7,
"id": "Basic-LLM-Chain2-29"
},
{
"name": "写真メッセージを送信",
"type": "n8n-nodes-base.telegram",
"position": [
5088,
448
],
"webhookId": "90e30a0b-989d-4a48-9779-d83dda1ca336",
"parameters": {
"file": "={{ $item(0).$node[\"Supabase Public URL\"].json[\"public_url\"] }}",
"chatId": "={{ $node[\"Telegram Bot Trigger\"].json.message.chat.id }}",
"operation": "sendPhoto",
"additionalFields": {
"caption": "=Content published!\n\nFacebook Post: {{ $node[\"Code3\"].json.facebook_post_url }}\n\nInstagram Post: {{ $node[\"Code3\"].json.instagram_post_url }}\n\nLinkedIn Post: {{ $node[\"Code3\"].json.linkedin_post_url }}\n"
}
},
"credentials": {
"telegramApi": {
"id": "",
"name": "YOUR_TELEGRAM_API_CREDENTIAL"
}
},
"typeVersion": 1.2,
"id": "--30"
},
{
"name": "シートの行を追加または更新",
"type": "n8n-nodes-base.googleSheets",
"position": [
672,
448
],
"parameters": {
"columns": {
"value": {
"Source URL": "={{ $json.url }}"
},
"schema": [
{
"id": "Source URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Source URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Facebook Content",
"type": "string",
"display": true,
"required": false,
"displayName": "Facebook Content",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Facebook URL",
"type": "string",
"display": true,
"required": false,
"displayName": "Facebook URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Instagram Content",
"type": "string",
"display": true,
"required": false,
"displayName": "Instagram Content",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Instagram URL",
"type": "string",
"display": true,
"required": false,
"displayName": "Instagram URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "LinkedIn Content ",
"type": "string",
"display": true,
"required": false,
"displayName": "LinkedIn Content ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "LinkedIn URL",
"type": "string",
"display": true,
"required": false,
"displayName": "LinkedIn URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Image URL",
"type": "string",
"display": true,
"required": false,
"displayName": "Image URL",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Source URL"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1b7k0A06DY_oI3Ex6fR48FN0PXK6g59U4714wBYUCezw/edit#gid=0",
"cachedResultName": "Arkusz1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1b7k0A06DY_oI3Ex6fR48FN0PXK6g59U4714wBYUCezw",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1b7k0A06DY_oI3Ex6fR48FN0PXK6g59U4714wBYUCezw/edit?usp=drivesdk",
"cachedResultName": "n8n - Telegram Social Media Content Automation"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "",
"name": "YOUR_GOOGLE_SHEETS_OAUTH2_API_CREDENTIAL"
}
},
"typeVersion": 4.6,
"id": "--31"
},
{
"name": "認証情報",
"type": "n8n-nodes-base.stickyNote",
"position": [
-560,
768
],
"parameters": {
"width": 360,
"height": 172,
"content": "🔐 Credentials\nThis template uses n8n Credentials.\n- Facebook/Instagram: `facebookGraph`\n- Supabase: `supabase`\n- Google Sheets: OAuth2\n- OpenAI/Gemini: API key\nNo API keys are stored inside the template."
},
"typeVersion": 1,
"id": "--32"
},
{
"name": "入力",
"type": "n8n-nodes-base.stickyNote",
"position": [
-132,
316
],
"parameters": {
"width": 360,
"height": 388,
"content": "🧪 Input assumption\nSend a Telegram message with a single URL. The workflow extracts the URL and processes the article."
},
"typeVersion": 1,
"id": "--33"
},
{
"name": "画像パイプライン",
"type": "n8n-nodes-base.stickyNote",
"position": [
2240,
592
],
"parameters": {
"width": 920,
"height": 284,
"content": "🖼️ Image handling\nGenerates an image with OpenAI and uploads it to Supabase Storage.\nSet your bucket name in the Set node or via JSON."
},
"typeVersion": 1,
"id": "--34"
},
{
"name": "Sheetsマッピング",
"type": "n8n-nodes-base.stickyNote",
"position": [
604,
268
],
"parameters": {
"width": 232,
"height": 340,
"content": "📊 Sheet mapping\nUpdate `YOUR_GOOGLE_SHEET_ID` and `Sheet1`.\nColumns will be created automatically on first run."
},
"typeVersion": 1,
"id": "Sheets--35"
},
{
"name": "Google Gemini",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1768,
940
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"id": "",
"name": "YOUR_GOOGLE_PALM_API_CREDENTIAL"
}
},
"typeVersion": 1,
"id": "Google-Gemini-36"
},
{
"name": "投稿フェーズ1",
"type": "n8n-nodes-base.stickyNote",
"position": [
4832,
-48
],
"parameters": {
"width": 400,
"height": 652,
"content": "# Final step \nUpdates Google Sheets with post details and sends a Telegram message with image + direct post links as confirmation."
},
"typeVersion": 1,
"id": "-1-37"
},
{
"name": "Supabaseへアップロード (認証情報を使用)",
"type": "n8n-nodes-base.httpRequest",
"position": [
2720,
716
],
"parameters": {
"url": "={{ ($json.supabase_base_url || '').trim().replace(/\\/+$/,'') + '/storage/v1/object/' + ($json.bucket || 'social-media-ai-generated') + '/' + $json.filename }}",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "binaryData",
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "content-type",
"value": "=={{ $binary.data?.mimeType || 'application/octet-stream' }}"
},
{
"name": "x-upsert",
"value": "true"
}
]
},
"inputDataFieldName": "data",
"nodeCredentialType": "supabaseApi"
},
"credentials": {
"supabaseApi": {
"id": "",
"name": "YOUR_SUPABASE_API_CREDENTIAL"
}
},
"typeVersion": 4.2,
"id": "Supabase--38"
},
{
"name": "Supabase設定",
"type": "n8n-nodes-base.set",
"position": [
2496,
716
],
"parameters": {
"options": {
"stripBinary": false
},
"assignments": {
"assignments": [
{
"id": "1dbcf7c4-2e01-4df2-874e-93868b74a519",
"name": "bucket",
"type": "string",
"value": "social-media-ai-generated"
},
{
"id": "4e88d63f-01de-4265-8271-fd0ed637b5fd",
"name": "filename",
"type": "string",
"value": "={{ $json.filename }}"
},
{
"id": "b5579b42-bc9e-44d9-b997-2f1e505c0692",
"name": "link_ttl_seconds",
"type": "string",
"value": "3600"
},
{
"id": "ab260017-3161-4cbf-ad86-84d23a94e780",
"name": "supabase_base_url",
"type": "string",
"value": "https://api.supabase.smartcamp.ai"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4,
"id": "Supabase--39"
},
{
"name": "Supabase公開URL",
"type": "n8n-nodes-base.set",
"position": [
2960,
720
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "cdc9fb52-3d91-4af4-9ff4-8fb15e6543c4",
"name": "public_url",
"type": "string",
"value": "={{ $node[\"Supabase Config\"].json.supabase_base_url.toString().trim().replace(/\\/+$/,'') + \"/storage/v1/object/public/\" + encodeURIComponent($node[\"Supabase Config\"].json.bucket) + \"/\" + encodeURIComponent($node[\"Supabase Config\"].json.filename) }}"
}
]
}
},
"typeVersion": 3.4,
"id": "Supabase-URL-40"
},
{
"name": "投稿フェーズ2",
"type": "n8n-nodes-base.stickyNote",
"position": [
3456,
-16
],
"parameters": {
"width": 432,
"height": 652,
"content": "# Instagram & Facebook Site IDs\n\nRemember to replace the palceholder with your respective site IDs"
},
"typeVersion": 1,
"id": "-2-41"
}
],
"active": false,
"settings": {
"timezone": "Europe/Warsaw",
"callerPolicy": "workflowsFromSameOwner",
"errorWorkflow": "yGK0VwXqcskQjGJG",
"executionOrder": "v1",
"timeSavedPerExecution": 20
},
"connections": {
"--19": {
"main": [
[
{
"node": "-3-23",
"type": "main",
"index": 0
}
]
]
},
"-1-20": {
"main": [
[
{
"node": "-3-23",
"type": "main",
"index": 1
}
]
]
},
"-2-25": {
"main": [
[
{
"node": "-3-23",
"type": "main",
"index": 2
}
]
]
},
"-3-26": {
"main": [
[
{
"node": "--8",
"type": "main",
"index": 0
}
]
]
},
"--14": {
"main": [
[
{
"node": "Facebook--6",
"type": "main",
"index": 0
}
]
]
},
"-1-15": {
"main": [
[
{
"node": "Instagram--7",
"type": "main",
"index": 0
}
]
]
},
"-2-16": {
"main": [
[
{
"node": "--22",
"type": "main",
"index": 0
}
]
]
},
"-3-23": {
"main": [
[
{
"node": "-3-26",
"type": "main",
"index": 0
}
]
]
},
"LinkedIn-21": {
"main": [
[
{
"node": "-2-25",
"type": "main",
"index": 0
}
]
]
},
"--22": {
"main": [
[
{
"node": "LinkedIn-21",
"type": "main",
"index": 0
}
]
]
},
"--27": {
"main": [
[
{
"node": "Supabase--39",
"type": "main",
"index": 0
}
]
]
},
"URL--2": {
"main": [
[
{
"node": "--31",
"type": "main",
"index": 0
}
]
]
},
"-URL--24": {
"main": [
[
{
"node": "-1-20",
"type": "main",
"index": 0
}
]
]
},
"Facebook--11": {
"main": [
[
{
"node": "--14",
"type": "main",
"index": 0
}
]
]
},
"Google-Gemini-36": {
"ai_languageModel": [
[
{
"node": "Basic-LLM-Chain2-29",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"LinkedIn--13": {
"main": [
[
{
"node": "Basic-LLM-Chain2-29",
"type": "main",
"index": 0
},
{
"node": "-2-16",
"type": "main",
"index": 0
}
]
]
},
"Instagram--12": {
"main": [
[
{
"node": "-1-15",
"type": "main",
"index": 0
}
]
]
},
"Supabase--39": {
"main": [
[
{
"node": "Supabase--38",
"type": "main",
"index": 0
}
]
]
},
"Basic-LLM-Chain2-29": {
"main": [
[
{
"node": "-1-28",
"type": "main",
"index": 0
}
]
]
},
"Facebook--6": {
"main": [
[
{
"node": "--19",
"type": "main",
"index": 0
}
]
]
},
"URL--3": {
"main": [
[
{
"node": "--4",
"type": "main",
"index": 0
}
]
]
},
"Instagram--7": {
"main": [
[
{
"node": "Instagram1--10",
"type": "main",
"index": 0
}
]
]
},
"-1-28": {
"main": [
[
{
"node": "--27",
"type": "main",
"index": 0
}
]
]
},
"Instagram1--10": {
"main": [
[
{
"node": "-URL--24",
"type": "main",
"index": 0
}
]
]
},
"--8": {
"main": [
[
{
"node": "--30",
"type": "main",
"index": 0
}
]
]
},
"Supabase-URL-40": {
"main": [
[
{
"node": "-2-16",
"type": "main",
"index": 1
},
{
"node": "-1-15",
"type": "main",
"index": 1
},
{
"node": "--14",
"type": "main",
"index": 1
}
]
]
},
"--4": {
"main": [
[
{
"node": "Facebook--11",
"type": "main",
"index": 0
},
{
"node": "Instagram--12",
"type": "main",
"index": 0
},
{
"node": "LinkedIn--13",
"type": "main",
"index": 0
}
]
]
},
"Telegram-Bot-Trigger-0": {
"main": [
[
{
"node": "-URL--17",
"type": "main",
"index": 0
}
]
]
},
"-URL--17": {
"main": [
[
{
"node": "URL--2",
"type": "main",
"index": 0
}
],
[
{
"node": "Telegram-18",
"type": "main",
"index": 0
}
]
]
},
"--31": {
"main": [
[
{
"node": "URL--3",
"type": "main",
"index": 0
}
]
]
},
"Supabase--38": {
"main": [
[
{
"node": "Supabase-URL-40",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - コンテンツ作成, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
RSSをFacebookおよびInstagramに公開
AIによる要約と画像生成を使ったRSSからソーシャルメディアへの自動公開
If
Set
Code
+
If
Set
Code
34 ノードKarol
コンテンツ作成
LinkedIn オートメーション
Gemini AI と承認ワークフローを使用して Telegram メッセージをプロフェッショナル LinkedIn 投稿に変換する
If
Set
Code
+
If
Set
Code
54 ノードSateesh
コンテンツ作成
LinkedInおよびXウイルスのなコンテンツ自動エンジン
AIを使ってLinkedInとXにウイルスのなコンテンツを自動生成して公開する
If
Set
Wait
+
If
Set
Wait
156 ノードDiptamoy Barman
コンテンツ作成
Telegram を使った Pollinations による画像生成、そして Gemini 2.5 でブログ記事生成
Telegram を使って Pollinations で画像を生成し、Gemini 2.5 でブログ記事を生成
If
Set
Code
+
If
Set
Code
34 ノードFahmi Oktafian
コンテンツ作成
Gemini、Tavily および人間の審査を使用して SEO 最適化された WordPress ブログを生成
Gemini、Tavily、そして人間の審査を使ってSEO最適化されたWordPressブログを生成する
If
Set
Code
+
If
Set
Code
38 ノードAryan Shinde
コンテンツ作成
AI駆動型動画制作&Instagram/TikTok/YouTubeへの自動アップロード
クラウドドライブからAI駆動の動画作成およびInstagram、TikTok、YouTubeへのアップロード
If
Set
Code
+
If
Set
Code
53 ノードDevCode Journey
コンテンツ作成