Twitter タイトルジェネレーター
中級
これはContent Creation, Multimodal AI分野の自動化ワークフローで、13個のノードを含みます。主にEmailSend, GoogleDrive, HttpRequest, ChainLlm, GoogleDriveTriggerなどのノードを使用。 Google Driveの画像をCloudinaryとGPT-4o-miniでTwitter/Xのキャプション生成
前提条件
- •Google Drive API認証情報
- •ターゲットAPIの認証情報が必要な場合あり
- •OpenAI API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "AaKfljggy90pXuZs",
"meta": {
"instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177"
},
"name": "Twitter caption generator",
"tags": [],
"nodes": [
{
"id": "406e4913-92c2-4619-9c96-64a9d1ddb556",
"name": "Basic LLM Chain",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
672,
0
],
"parameters": {
"text": "={{ $json.secure_url }} || Analyze this automation image and generate a classy and attractive caption for Twitter (X) based on the instructions in the system prompt.",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=You are a professional Twitter (X) content strategist and email designer.\n\nWhen given an image url , dashboard, or visual automation, analyze it deeply and return the following two outputs:\n\nA short, professional subject line (max 60 characters).\n\nA complete HTML email body with inline CSS that includes:\n\nThe image (use {{ $json.secure_url }} in the src attribute).\n\nA Twitter (X)-style post block (formatted like a professional social copy within the email) that contains:\n• Headline (bold, 1 line)\n• Primary tweet — one tweet, punchy, <= 280 characters, optimized for engagement (clear hook + value + CTA).\n• Tweet thread — 3 short tweets (each <= 280 characters) that expand the idea: Hook → Insight → Action. Number the tweets (1/3, 2/3, 3/3).\n• Alt text for the image (1–2 lines, descriptive, <120 characters).\n• Suggested first-reply (one short reply to pin under the tweet/thread, e.g., resources or link).\n• 10–12 relevant Twitter/X hashtags (high-signal, platform-appropriate — avoid over-stuffing; pick the most relevant).\n• Suggested @mentions (1–3 accounts types to mention, e.g., partner, tool, or community handles; leave as placeholders if unknown).\n• Recommended posting windows (IST) — 3 time slots ideal for engagement.\n\nA compact, professional summary section inside the email with:\n• 2–3 sentence overview of the visual\n• Bullet list of Key features (3–6 bullets)\n• Bullet list of Ideal users (2–5 bullets)\n• “Built with” list (tools/tech stack; 3–6 items)\n• Single-line CTA (e.g., “Try it”, “Request demo”, “Reply to learn more”)\n\nDesign & accessibility:\n• Use {{ $json.secure_url }} for the image src.\n• Include the alt text near the image tag (use the same alt text as in the Twitter block).\n• Max width 600px, centered content.\n• White content card on a light gray background, soft box shadow, clean spacing, readable bullets.\n• Inline CSS only (no external styles).\n• Fonts: Arial or Helvetica.\n• Email must render well in Gmail & Outlook.\n• Keep markup simple and robust: tables are allowed if needed for Outlook compatibility, but keep it clean.\n\nStyle & length rules:\n\nSubject line ≤ 60 characters.\n\nPrimary tweet and each thread tweet ≤ 280 characters (include a character count comment next to each tweet inside the email as a small, parenthetical note).\n\nHeadline: single bold line inside the email.\n\nHashtags: 10–12 total.\n\nKeep the whole email concise — one glance should tell the reader what the visual does and how to share it on X.\n\n🎯 Your response must follow this exact format — do not include code blocks or markdown:\n\nSubject: [your subject line here]\nBody: [your full HTML content here — one line or multiline]\n\nDo not return JSON. Do not use ``` or Markdown formatting."
}
]
},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "891fb13d-10e5-4f9e-aaca-d1f8529b299f",
"name": "Azure OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
"position": [
768,
224
],
"parameters": {
"model": "gpt-4o-mini",
"options": {}
},
"credentials": {
"azureOpenAiApi": {
"id": "C3WzT18XqF8OdVM6",
"name": "Azure Open AI account"
}
},
"typeVersion": 1
},
{
"id": "1d3b6dc1-e7f2-4577-b17f-c2872831d5ad",
"name": "メール送信",
"type": "n8n-nodes-base.emailSend",
"position": [
1072,
0
],
"webhookId": "20066331-0f47-48ec-8ad5-77cb26504344",
"parameters": {
"html": "={{ $json.text }}",
"options": {},
"subject": "Twitter Post",
"toEmail": "<RECIEVER_EMAIL",
"fromEmail": "<YOUR_EMAIL>"
},
"credentials": {
"smtp": {
"id": "gJdU446NGTfpXScn",
"name": "SMTP account 2"
}
},
"typeVersion": 2.1
},
{
"id": "4d7f5f02-0d0d-44e6-90b9-738b5779596e",
"name": "フレームをCloudinaryにアップロード",
"type": "n8n-nodes-base.httpRequest",
"maxTries": 5,
"position": [
448,
0
],
"parameters": {
"url": "https://api.cloudinary.com/v1_1/dpuvigpmt/image/upload",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "file",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
},
{
"name": "upload_preset",
"value": "upload"
}
]
},
"genericAuthType": "httpBasicAuth"
},
"credentials": {
"httpBasicAuth": {
"id": "JU8RVqLrd8GnIY3j",
"name": "Unnamed credential"
}
},
"retryOnFail": true,
"typeVersion": 4.2
},
{
"id": "cda8a3ff-4b61-4d68-8fca-580b10750baf",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1072,
-320
],
"parameters": {
"color": 3,
"height": 304,
"content": "Type: n8n-nodes-base.emailSend\n\nPurpose: Delivers generated captions via email\n\nWhat it does:\n\nSends email with generated captions\nIncludes file links and AI suggestions\nOutput: Email notification with results"
},
"typeVersion": 1
},
{
"id": "8ef3c770-d420-49a2-a6d1-ffa0592e5abb",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
736,
-352
],
"parameters": {
"color": 4,
"height": 336,
"content": "Type: n8n-nodes-base.langchain\n\nPurpose: Generates Twitter captions using AI\n\nWhat it does:\n\nAnalyzes uploaded content\nCreates engaging Twitter captions\n\nAdds hashtags and optimizes for social media\n\nOutput: Generated caption text"
},
"typeVersion": 1
},
{
"id": "809d5a50-725c-46ce-a28a-ad4ade39cf50",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
-336
],
"parameters": {
"color": 5,
"height": 320,
"content": "Type: n8n-nodes-base.httpRequest \n\nPurpose: Uploads files to Cloudinary storage\nWhat it does:\n\nTakes file from Google Drive\n\nUploads to Cloudinary cloud storage \n\nCreates public URLs for AI processing\nOutput: Cloudinary URLs and file links"
},
"typeVersion": 1
},
{
"id": "d55c6928-f5ab-487c-a560-6df24b23c1f4",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
96,
176
],
"parameters": {
"color": 6,
"height": 240,
"content": "Type: n8n-nodes-base.googleDrive\n\nPurpose: Downloads file content from Google Drive \n\nWhat it does: Gets the actual file data for processing \n\nOutput: File content ready for upload"
},
"typeVersion": 1
},
{
"id": "37e94fb7-07c1-4268-bd70-90aa250f9e63",
"name": "付箋5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-192,
-272
],
"parameters": {
"color": 7,
"height": 256,
"content": "Type: n8n-nodes-base.googleDriveTrigger\n\nPurpose: Monitors Google Drive for new files \n\nWhat it does: Automatically starts workflow when new file is uploaded\n\nOutput: File information (name, URL, metadata)"
},
"typeVersion": 1
},
{
"id": "0fc331db-8dae-4974-a19a-bbfea8d3107b",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
528,
352
],
"parameters": {
"color": 4,
"height": 224,
"content": "Type: n8n-nodes-base.azureOpenAi\n\nPurpose: Alternative AI for caption generation\nWhat it does: Backup AI service for creating captions\n\nOutput: Additional caption suggestions\n"
},
"typeVersion": 1
},
{
"id": "eb3add42-5770-45c0-a2e7-2958def4a8eb",
"name": "Driveからファイル取得",
"type": "n8n-nodes-base.googleDriveTrigger",
"position": [
0,
0
],
"parameters": {
"event": "fileUpdated",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"mode": "list",
"value": "1GDkSI9txB88oOcu_jr1tXEzkT0_FoGmC",
"cachedResultUrl": "https://drive.google.com/drive/folders/1GDkSI9txB88oOcu_jr1tXEzkT0_FoGmC",
"cachedResultName": "Instagram "
}
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "gQtjXVGUgZru29qC",
"name": "Google Drive account"
}
},
"typeVersion": 1
},
{
"id": "535f3639-dcc5-4fd3-9c14-ca740ed3b138",
"name": "Driveファイルをダウンロード",
"type": "n8n-nodes-base.googleDrive",
"position": [
224,
0
],
"parameters": {
"fileId": "={{ $json[\"id\"] }}",
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "gQtjXVGUgZru29qC",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "47369773-409f-4a02-8b4b-22e5c19c0d2a",
"name": "付箋6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-608,
-80
],
"parameters": {
"color": 4,
"width": 336,
"height": 592,
"content": "Pre-conditions & API Requirements\n\nGoogle Drive\n\nNeeds OAuth2 credentials (googleDriveOAuth2Api)\n\nAccess must be granted to the folder being monitored.\n\nCloudinary\n\nRequires Cloudinary API key & secret (used in HTTP Request node for uploads).\n\nEnsure an upload_preset is configured in your Cloudinary account.\n\nAzure OpenAI\n\nRequires an Azure OpenAI endpoint and API key.\n\nModel: gpt-4o-mini (already configured in the JSON).\n\nSMTP Email\n\nYou’ll need an SMTP credential to send the generated captions to your email."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "383087ac-19f2-452d-a452-0d553ac7c581",
"connections": {
"406e4913-92c2-4619-9c96-64a9d1ddb556": {
"main": [
[
{
"node": "1d3b6dc1-e7f2-4577-b17f-c2872831d5ad",
"type": "main",
"index": 0
}
]
]
},
"eb3add42-5770-45c0-a2e7-2958def4a8eb": {
"main": [
[
{
"node": "535f3639-dcc5-4fd3-9c14-ca740ed3b138",
"type": "main",
"index": 0
}
]
]
},
"891fb13d-10e5-4f9e-aaca-d1f8529b299f": {
"ai_languageModel": [
[
{
"node": "406e4913-92c2-4619-9c96-64a9d1ddb556",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"535f3639-dcc5-4fd3-9c14-ca740ed3b138": {
"main": [
[
{
"node": "4d7f5f02-0d0d-44e6-90b9-738b5779596e",
"type": "main",
"index": 0
}
]
]
},
"4d7f5f02-0d0d-44e6-90b9-738b5779596e": {
"main": [
[
{
"node": "406e4913-92c2-4619-9c96-64a9d1ddb556",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級 - コンテンツ作成, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
LinkedIn投稿のメール提醒
Google Driveの画像をGPT-4oで使ってLinkedIn投稿を自動生成
Email Send
Google Drive
Http Request
+
Email Send
Google Drive
Http Request
12 ノードRahul Joshi
コンテンツ作成
Azure OpenAI とGoogle Workspace で DEI 資格フィルター Automation
Azure GPT-4o、Googleドライブ、テーブルを使ってDEI資格フィルタリングを自動化
If
Code
Gmail
+
If
Code
Gmail
19 ノードRahul Joshi
コンテンツ作成
人员流出リスク警报ワークフロー(Azure OpenAI + n8n)
従業員サーキュラーションプリスク検出とHRリマインダー – Azure OpenAI GPT-4o-miniとGmailを使用
If
Code
Gmail
+
If
Code
Gmail
16 ノードRahul Joshi
コンテンツ作成
インタビュー品質審査
GPT-4o-mini と Google スプレッドシートを使って、Slack でインタビューフィードバックを監査し、レポートを生成
If
Code
Slack
+
If
Code
Slack
23 ノードRahul Joshi
コンテンツ作成
プロスペクトの意図分類と自動タスク作成ツール
Azure GPT-4 を使って Google Sheets から ClickUp にリード意図分類を自動化
Set
Switch
Click Up
+
Set
Switch
Click Up
32 ノードRahul Joshi
コンテンツ作成
Stripe、Google Drive、Google Sheetsを使用した支払い領収書のアーカイブ
支払い確実書の自動化:StripeとGoogle Workspaceを使用したメール送信、書類保存、追跡
If
Gmail
Split Out
+
If
Gmail
Split Out
21 ノードRahul Joshi
コンテンツ作成
ワークフロー情報
難易度
中級
ノード数13
カテゴリー2
ノードタイプ7
作成者
Rahul Joshi
@rahul08Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.
外部リンク
n8n.ioで表示 →
このワークフローを共有