Google Drive から n8n テンプレートの説明を生成
上級
これはContent Creation, Multimodal AI分野の自動化ワークフローで、27個のノードを含みます。主にCode, Gmail, GoogleDrive, GoogleSheets, ManualTriggerなどのノードを使用。 AzureでGPT-4を使ってGoogle Driveからテンプレート説明文を生成
前提条件
- •Googleアカウント + Gmail API認証情報
- •Google Drive API認証情報
- •Google Sheets API認証情報
- •OpenAI API Key
使用ノード (27)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "zX0SNUBqlonCm9UQ",
"meta": {
"instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
"templateCredsSetupCompleted": true
},
"name": "Generate n8n template descriptions from Google Drive",
"tags": [],
"nodes": [
{
"id": "ddb41538-8446-4938-9233-7475b5a63fbb",
"name": "ワークフロー実行時",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-688,
-64
],
"parameters": {},
"typeVersion": 1
},
{
"id": "7c0fd462-7b25-4e1f-852d-5b526f16de0f",
"name": "ファイルから抽出",
"type": "n8n-nodes-base.extractFromFile",
"position": [
208,
-192
],
"parameters": {
"options": {},
"operation": "fromJson"
},
"typeVersion": 1
},
{
"id": "5e02aa21-b341-489c-82fb-feacb0747b13",
"name": "ファイルをダウンロード",
"type": "n8n-nodes-base.googleDrive",
"position": [
-16,
-192
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{$json[\"id\"]}}"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "E7nEqUL27GUx1xHa",
"name": "Techdome Account"
}
},
"typeVersion": 3
},
{
"id": "016bff72-bd86-4eba-9c10-86853cd102cc",
"name": "ファイルとフォルダを検索",
"type": "n8n-nodes-base.googleDrive",
"position": [
-464,
-64
],
"parameters": {
"filter": {
"folderId": {
"__rl": true,
"mode": "list",
"value": "1HP3LnTPLwe81xUrp0P6aV2nJKdX6BIcM",
"cachedResultUrl": "https://drive.google.com/drive/folders/1HP3LnTPLwe81xUrp0P6aV2nJKdX6BIcM",
"cachedResultName": "n8n json checker"
}
},
"options": {},
"resource": "fileFolder",
"returnAll": true
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "E7nEqUL27GUx1xHa",
"name": "Techdome Account"
}
},
"typeVersion": 3,
"alwaysOutputData": true
},
{
"id": "eca112e7-3b66-455e-8086-2d3bf701cd3b",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
-832,
-320
],
"parameters": {
"height": 192,
"content": "## ⚙️ Step 1: Manual Trigger \nUse this to manually start the workflow when testing or batch-processing workflow descriptions. \n➡️ No setup required.\n"
},
"typeVersion": 1
},
{
"id": "7e6d213b-112d-4759-bc8d-2d5f675a1098",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-544,
96
],
"parameters": {
"width": 288,
"height": 320,
"content": "## 📂 Step 2: Search Files and Folders \nThis node searches a specific Google Drive folder for JSON workflow files to process. \n\n**Setup Instructions:** \n- Connect your own Google Drive OAuth2 credentials. \n- Replace any hardcoded folder ID with a variable or reference to your Drive. \n\n\n"
},
"typeVersion": 1
},
{
"id": "e51a77b0-95e8-418a-89d3-2e610c6cac7d",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
496,
208
],
"parameters": {
"height": 304,
"content": "## 🧠 Step 8:Store AI Context (LangChain Memory)\nStores short-term AI context to improve continuity during prompt execution. \nNo credentials required. \n💡 Keep context window small (7–10) to avoid large memory overhead.\n"
},
"typeVersion": 1
},
{
"id": "8ff67280-778b-4de1-86d2-82905c3ed3e4",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1184,
-496
],
"parameters": {
"height": 288,
"content": "## ✨ Step 11: Format HTML Email \nCreates clean HTML and plain-text versions of the generated description for email + Google Sheet logging. \n\n✅ No credentials here. \n💡 You may adjust the CSS styling within the HTML block.\n"
},
"typeVersion": 1
},
{
"id": "e8695343-49c0-4cf3-b0b0-305b36c5a450",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
816,
-592
],
"parameters": {
"height": 368,
"content": "## 🧾 Step 10: Format Markdown Description \nTakes the AI output and converts it into structured Markdown text suitable for n8n template publishing. \n\n**Setup Instructions:** \n- Ensure each section (Overview, Benefits, etc.) is returned properly. \n- You can tweak emoji styles or section titles here. \n✅ No credentials required.\n"
},
"typeVersion": 1
},
{
"id": "453d0845-afca-4018-a7be-b464150598d9",
"name": "付箋5",
"type": "n8n-nodes-base.stickyNote",
"position": [
800,
160
],
"parameters": {
"height": 288,
"content": "## 🧩 Step 9: Parse AI Response into Structured JSON\nEnsures AI response is parsed into clean JSON format for the next node. \n✅ No sensitive data. \n💡 You can adjust the schema if adding more description sections.\n"
},
"typeVersion": 1
},
{
"id": "af7d1723-3163-4083-857a-d3367b9cbd79",
"name": "付箋6",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
176
],
"parameters": {
"height": 320,
"content": "## 💬 Step 7: Connect to Azure OpenAI GPT Model\n\n**Setup Instructions:** \n- Use your own `azureOpenAiApi` credential . \n- Verify the model name (gpt-4o or equivalent). \n\n"
},
"typeVersion": 1
},
{
"id": "205d405d-85ff-4ee8-be90-31df1da4f56a",
"name": "付箋7",
"type": "n8n-nodes-base.stickyNote",
"position": [
512,
-688
],
"parameters": {
"height": 448,
"content": "## 🤖 Step 6: AI Agent \nUses a LangChain agent + Azure OpenAI model to generate workflow titles and structured descriptions. \n\n**Setup Instructions:** \n- Connect the AI Language Model and Output Parser as shown. \n- This node defines the prompt and ensures the response follows n8n Template Guidelines. \n\n✅ No sensitive info here — well-structured system prompt! \n OpenAI.\n"
},
"typeVersion": 1
},
{
"id": "6181afda-2715-438e-8a4a-4233ef3b824b",
"name": "付箋8",
"type": "n8n-nodes-base.stickyNote",
"position": [
176,
-400
],
"parameters": {
"height": 192,
"content": "## 📦 Step 5: Extract JSON Data \nParses the downloaded file to extract workflow JSON data before AI processing. \nNo credentials needed here.\n"
},
"typeVersion": 1
},
{
"id": "da26533d-f55d-4e7c-b97a-1d7be91897f8",
"name": "付箋9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-528
],
"parameters": {
"height": 320,
"content": "## ⬇️ Step 4: Download File \nDownloads the JSON file contents for each matched Drive item. \n\n**Setup Instructions:** \n- Connect to your Google Drive OAuth2 credentials . \n- Ensure file access permissions allow downloads. \n\n\n"
},
"typeVersion": 1
},
{
"id": "129b4156-d3ec-4528-9be9-743dc3371fc1",
"name": "付箋10",
"type": "n8n-nodes-base.stickyNote",
"position": [
-352,
-352
],
"parameters": {
"height": 240,
"content": "## 🔁 Step 3: Loop Over JSONS \nProcesses each found file individually to ensure the workflow handles large folders efficiently. \nNo credential changes required. \n➡️ You can adjust batch size in the node options.\n"
},
"typeVersion": 1
},
{
"id": "c51e2df4-3e5a-4f65-b77f-24d6ce7dcec2",
"name": "付箋11",
"type": "n8n-nodes-base.stickyNote",
"position": [
1728,
-240
],
"parameters": {
"height": 368,
"content": "## 📧 Step 13: Send Email with Description \nSends a formatted HTML email with the generated template description. \n\n \n\n**Setup:** \n- Use your Gmail OAuth2 credentials (`gmailOAuth2`). \n- Test with a non-personal account if publishing publicly.\n"
},
"typeVersion": 1
},
{
"id": "68f7f509-ebe2-45f1-a4d7-a3f306222dc4",
"name": "付箋13",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1360,
-352
],
"parameters": {
"width": 384,
"height": 448,
"content": "## 🟨 Workflow Overview \nThis workflow automates the creation of structured n8n template descriptions. \nIt fetches JSON workflow files from Google Drive, uses an AI agent (Azure OpenAI + LangChain) to analyze them, and then formats detailed descriptions for publishing. \n\n### ⚙️ Flow Summary \n1. Trigger workflow manually. \n2. Search workflow files in Google Drive. \n3. Download and extract JSON data. \n4. Use AI Agent to generate title + description. \n5. Format Markdown and HTML outputs. \n6. Append results to Google Sheets. \n7. Send formatted description via Gmail. \n\n**Use Case:** Ideal for automating n8n template documentation and content generation.\n"
},
"typeVersion": 1
},
{
"id": "35a62d62-6ede-4b06-8d04-a4d3760e220f",
"name": "JSONSをループ処理",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-240,
-64
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
"name": "AIエージェント",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
496,
-192
],
"parameters": {
"text": "=You are given this n8n workflow JSON:\n\n{{ JSON.stringify($json) }}\n\nGenerate the **best possible template title** and a **structured description** following the rules. \nMake sure the title matches the format (Action verb + thing being manipulated + to/on/in/from + where). \nThe description must follow the defined section structure and highlight actual logic from the workflow.\n",
"options": {
"systemMessage": "=You are an **expert n8n template description generator**. \nYour role is to analyze a provided workflow JSON and generate both a **precise template title** and a **structured description** suitable for n8n’s Template Publishing Guidelines. \n\n---\n\n### 🔑 Title Rules\n- Format: **Action verb** + **thing being manipulated** + **to/on/in/from** + **where** \n - Example: “One-way contact sync from Pipedrive to HubSpot” \n- The title must: \n - Be **short (≤10 words)**, with no filler. \n - Use **active verbs** (Automate, Sync, Track, Re-engage, Generate, etc.). \n - Clearly name the **services, apps, or data being connected**. \n - Indicate **directionality** where applicable (from → to). \n\n---\n\n### 📝 Description Style Guidelines\n- Write in **professional, user-friendly language**. \n- Use **light emoji markers** (📊, ⚡, 🚀, 📧) to improve readability. \n- Avoid generic filler — **every point must reflect actual workflow logic**. \n- Keep explanations **short, direct, and clear**. \n- Structure content in **bulleted lists** under clear section headers. \n- Ensure **accuracy to the JSON nodes and connections**. \n- Use an **automation-savvy tone** (confident, helpful, concise). \n\n---\n\n### 📦 Output Sections (Always in This Order)\n\n1. **title** \n - A concise workflow title that follows the naming convention above. \n\n2. **overview** \n - A one-line, catchy summary of the workflow’s purpose. \n\n3. **what_this_template_does** \n - Step-by-step, **chronological explanation** of the workflow. \n - Mention triggers, actions, and end results in plain English. \n\n4. **key_benefits** \n - 4–6 **outcome-focused benefits** (time saved, efficiency, error reduction). \n\n5. **features** \n - Breakdown of **nodes, triggers, filters, and integrations**. \n\n6. **requirements** \n - List of **services, credentials, or accounts** needed. \n\n7. **target_audience** \n - Who the workflow is most useful for (teams, roles, industries). \n\n8. **setup_instructions** \n - Practical, **step-by-step setup guidance** (credentials, environment variables, import, testing, activation). \n\n---\n\n### ⚠️ Critical Rules\n- Do **not** invent steps or tools not present in the JSON. \n- If a section has no applicable content, **omit gracefully** (do not fill with placeholders). \n- Ensure consistency: every bullet point must tie back to actual workflow logic. \n- Avoid redundancy — keep the flow **concise but complete**. \n\n---\n\n### ✅ Example Output Format (for clarity)\n\n**title:** \nOne-way contact sync from Pipedrive to HubSpot \n\n**overview:** \nAutomatically sync new contacts from Pipedrive into HubSpot CRM to keep sales and marketing aligned. 🔄 \n\n**what_this_template_does:** \n- Runs every hour via schedule trigger ⏰ \n- Fetches new contacts from Pipedrive 📥 \n- Creates or updates matching contacts in HubSpot CRM 📊 \n\n**key_benefits:** \n- ✅ No more manual contact transfers \n- ✅ Keeps CRM records consistent \n- ✅ Saves time for sales teams \n\n**features:** \n- Hourly schedule trigger \n- Pipedrive API integration \n- HubSpot CRM integration \n\n**requirements:** \n- Pipedrive OAuth2 credentials \n- HubSpot OAuth2 credentials \n\n**target_audience:** \n- Sales teams managing dual CRMs \n- Agencies working with multiple clients \n\n**setup_instructions:** \n- Connect Pipedrive and HubSpot accounts 🔑 \n- Import the workflow JSON 📦 \n- Adjust sync interval if needed 🕒 \n- Activate workflow 🚀 \n"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.1
},
{
"id": "c3f2e1e9-69db-4ccb-9022-2ebc4b45e88d",
"name": "Markdown記述をフォーマット",
"type": "n8n-nodes-base.code",
"position": [
896,
-192
],
"parameters": {
"jsCode": "// Get input data\nconst inputData = $input.all();\n\n// Function to convert array to numbered list with emojis\nfunction formatList(items, emoji = '') {\n return items.map((item, index) => `${index + 1}. ${item} ${emoji}`).join('\\n');\n}\n\n// Function to convert array to bullet list with checkmarks\nfunction formatBenefits(items) {\n return items.map(item => `✅ ${item}`).join('\\n');\n}\n\n// Function to convert array to bullet list with asterisks\nfunction formatFeatures(items) {\n return items.map(item => `* ${item}`).join('\\n');\n}\n\n// Function to convert array to bullet list with emojis\nfunction formatAudience(items) {\n const emojis = ['👩💼', '🔄', '🏢', '🌐', '📊'];\n return items.map((item, index) => `* ${item} ${emojis[index] || '✨'}`).join('\\n');\n}\n\n// Function to convert setup instructions\nfunction formatSetup(items) {\n const emojis = ['🔑', '⚙️', '🕒', '📦', '✅', '🚀'];\n return items.map((item, index) => `${index + 1}. ${item} ${emojis[index] || '📌'}`).join('\\n');\n}\n\n// Process each item in the input\nconst results = inputData.map(item => {\n const data = item.json.output;\n \n // Build the formatted output\n let formattedOutput = `**Description**\\n`;\n formattedOutput += `${data.overview} 💌📊💬\\n\\n`;\n \n formattedOutput += `**What This Template Does**\\n`;\n formattedOutput += formatList(data.what_this_template_does, '') + '\\n\\n';\n \n formattedOutput += `**Key Benefits**\\n`;\n formattedOutput += formatBenefits(data.key_benefits) + '\\n\\n';\n \n formattedOutput += `**Features**\\n`;\n formattedOutput += formatFeatures(data.features) + '\\n\\n';\n \n formattedOutput += `**Requirements**\\n`;\n formattedOutput += data.requirements.map(item => `* ${item}`).join('\\n') + '\\n\\n';\n \n formattedOutput += `**Target Audience**\\n`;\n formattedOutput += formatAudience(data.target_audience) + '\\n\\n';\n \n formattedOutput += `**Step-by-Step Setup Instructions**\\n`;\n formattedOutput += formatSetup(data.setup_instructions);\n \n return {\n json: {\n title: data.title,\n formatted_description: formattedOutput\n }\n };\n});\n\nreturn results;"
},
"typeVersion": 2
},
{
"id": "11f7b052-0cb4-4cfe-8aae-bf933d797a5a",
"name": "HTMLメールをフォーマット",
"type": "n8n-nodes-base.code",
"position": [
1344,
-192
],
"parameters": {
"jsCode": "// Get input data\nconst inputData = $input.all();\n\nconst results = inputData.map(item => {\n const data = item.json;\n const description = data.formatted_description || '';\n\n // Parse sections\n const sections = {\n overview: description.match(/\\*\\*Description\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n what_does: description.match(/\\*\\*What This Template Does\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n benefits: description.match(/\\*\\*Key Benefits\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n features: description.match(/\\*\\*Features\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n requirements: description.match(/\\*\\*Requirements\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n audience: description.match(/\\*\\*Target Audience\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n setup: description.match(/\\*\\*Step-by-Step Setup Instructions\\*\\*\\n(.*?)$/s)?.[1]?.trim() || ''\n };\n\n // 🧾 Plain text version for Google Sheets logging\n const plainText = `\n${data.title}\n\n📋 Overview:\n${sections.overview}\n\n⚙️ What This Template Does:\n${sections.what_does}\n\n🚀 Key Benefits:\n${sections.benefits}\n\n✨ Features:\n${sections.features}\n\n🔐 Requirements:\n${sections.requirements}\n\n🎯 Target Audience:\n${sections.audience}\n\n📝 Step-by-Step Setup Instructions:\n${sections.setup}\n\n🎯 Ready to automate? Import this template into your n8n instance and get started!\n `.trim();\n\n // 💌 HTML version for Email\n const htmlEmail = `\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>${data.title}</title>\n<style>\n body {font-family: 'Segoe UI', Arial, sans-serif; line-height:1.6; color:#333; background:#f5f5f5; padding:30px;}\n .container {background:#fff; border-radius:10px; padding:40px; max-width:800px; margin:auto; box-shadow:0 2px 8px rgba(0,0,0,0.1);}\n h1 {color:#1f2937;}\n h2 {color:#4f46e5; border-bottom:2px solid #eee; padding-bottom:6px;}\n .section {margin-bottom:30px;}\n .highlight {background:#eef2ff; padding:15px; border-radius:6px;}\n .benefit {background:#ecfdf5; padding:10px; border-left:4px solid #22c55e; margin-bottom:10px;}\n .feature {background:#eff6ff; padding:10px; border-left:4px solid #3b82f6; margin-bottom:10px;}\n .requirement {background:#fef3c7; padding:10px; border-left:4px solid #f59e0b; margin-bottom:10px;}\n .audience {background:#fce7f3; padding:10px; border-left:4px solid #ec4899; margin-bottom:10px;}\n .setup {background:#f9fafb; padding:10px; border-left:4px solid #6366f1; margin-bottom:10px;}\n .footer {text-align:center; color:#888; font-size:14px; margin-top:30px;}\n</style>\n</head>\n<body>\n <div class=\"container\">\n <h1>${data.title}</h1>\n <div class=\"section\"><h2>📋 Overview</h2><div class=\"highlight\">${sections.overview}</div></div>\n <div class=\"section\"><h2>⚙️ What This Template Does</h2>${sections.what_does.split('\\n').map(l => `<div class=\"setup\">${l}</div>`).join('')}</div>\n <div class=\"section\"><h2>🚀 Key Benefits</h2>${sections.benefits.split('\\n').map(l => `<div class=\"benefit\">${l}</div>`).join('')}</div>\n <div class=\"section\"><h2>✨ Features</h2>${sections.features.split('\\n').map(l => `<div class=\"feature\">${l}</div>`).join('')}</div>\n <div class=\"section\"><h2>🔐 Requirements</h2>${sections.requirements.split('\\n').map(l => `<div class=\"requirement\">${l}</div>`).join('')}</div>\n <div class=\"section\"><h2>🎯 Target Audience</h2>${sections.audience.split('\\n').map(l => `<div class=\"audience\">${l}</div>`).join('')}</div>\n <div class=\"section\"><h2>📝 Step-by-Step Setup Instructions</h2>${sections.setup.split('\\n').map(l => `<div class=\"setup\">${l}</div>`).join('')}</div>\n <div class=\"footer\">🎯 Ready to automate? Import this template into your n8n instance and start building magic!</div>\n </div>\n</body>\n</html>\n `.trim();\n\n // Return both\n return {\n json: {\n title: data.title,\n formatted_description: data.formatted_description,\n html_email: htmlEmail, // for Gmail\n plain_text_email: plainText, // for Sheets\n subject: `n8n Template: ${data.title}`,\n preview_text: sections.overview.substring(0, 100) + '...'\n }\n };\n});\n\nreturn results;\n"
},
"typeVersion": 2
},
{
"id": "36faaf0f-90a2-42c8-909a-8544a48d621b",
"name": "付箋14",
"type": "n8n-nodes-base.stickyNote",
"position": [
1088,
-16
],
"parameters": {
"height": 192,
"content": "## 🧾 Step 12: Save to Google Sheets \nStores the generated template title and formatted description in a spreadsheet for record-keeping. \n\n\n"
},
"typeVersion": 1
},
{
"id": "61d49f4e-e961-4359-8735-925a55eaa7f8",
"name": "Google Sheetsに保存",
"type": "n8n-nodes-base.googleSheets",
"position": [
1120,
-192
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "title",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "formatted_description",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "formatted_description",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u_PoDeJHJnMyocSXmGH0sO9ybo5LrUszTkU6p3KzYAg/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1u_PoDeJHJnMyocSXmGH0sO9ybo5LrUszTkU6p3KzYAg",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u_PoDeJHJnMyocSXmGH0sO9ybo5LrUszTkU6p3KzYAg/edit?usp=drivesdk",
"cachedResultName": "JSON Data with Description"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "kpPEOLCGn963qpoh",
"name": "automations@techdome.ai"
}
},
"typeVersion": 4.7
},
{
"id": "d031644e-84ea-4121-84d2-41e9d05207b5",
"name": "記述付きメールを送信",
"type": "n8n-nodes-base.gmail",
"position": [
1568,
-64
],
"webhookId": "0f500fb4-094e-48b6-a98e-da066652481b",
"parameters": {
"sendTo": "your-email@example.com",
"message": "={{ $json.html_email }}",
"options": {},
"subject": "={{ $json.subject }}"
},
"credentials": {
"gmailOAuth2": {
"id": "gEIaWCTvGfYjMSb3",
"name": "Gmail credentials"
}
},
"typeVersion": 2.1
},
{
"id": "8d655ca0-13d7-41ab-b3cf-e1387cdb61d0",
"name": "AIコンテキストを保存(LangChainメモリ)",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
560,
32
],
"parameters": {
"sessionKey": "\"json_review\"",
"sessionIdType": "customKey",
"contextWindowLength": 7
},
"typeVersion": 1.3
},
{
"id": "3064a4d2-4329-4371-bc5d-47ee568205ef",
"name": "Azure OpenAI GPTモデルに接続",
"type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
"position": [
432,
32
],
"parameters": {
"model": "gpt-4o",
"options": {}
},
"credentials": {
"azureOpenAiApi": {
"id": "C3WzT18XqF8OdVM6",
"name": "Azure Open AI account"
}
},
"typeVersion": 1
},
{
"id": "ad5ee442-1644-4ab2-bdf9-cbf84447a5ff",
"name": "AI応答を構造化JSONに解析",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
688,
32
],
"parameters": {
"jsonSchemaExample": "{\n \"title\": \"string\",\n \"overview\": \"string\",\n \"what_this_template_does\": [\"step1\", \"step2\", \"step3\"],\n \"key_benefits\": [\"benefit1\", \"benefit2\", \"benefit3\"],\n \"features\": [\"feature1\", \"feature2\", \"feature3\"],\n \"requirements\": [\"requirement1\", \"requirement2\"],\n \"target_audience\": [\"audience1\", \"audience2\"],\n \"setup_instructions\": [\"instruction1\", \"instruction2\", \"instruction3\"]\n}\n"
},
"typeVersion": 1.3
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "f22edb61-a906-4778-9a79-8d50a8fb1b2d",
"connections": {
"77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc": {
"main": [
[
{
"node": "c3f2e1e9-69db-4ccb-9022-2ebc4b45e88d",
"type": "main",
"index": 0
}
]
]
},
"5e02aa21-b341-489c-82fb-feacb0747b13": {
"main": [
[
{
"node": "7c0fd462-7b25-4e1f-852d-5b526f16de0f",
"type": "main",
"index": 0
}
]
]
},
"35a62d62-6ede-4b06-8d04-a4d3760e220f": {
"main": [
[],
[
{
"node": "5e02aa21-b341-489c-82fb-feacb0747b13",
"type": "main",
"index": 0
}
]
]
},
"7c0fd462-7b25-4e1f-852d-5b526f16de0f": {
"main": [
[
{
"node": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
"type": "main",
"index": 0
}
]
]
},
"11f7b052-0cb4-4cfe-8aae-bf933d797a5a": {
"main": [
[
{
"node": "d031644e-84ea-4121-84d2-41e9d05207b5",
"type": "main",
"index": 0
}
]
]
},
"61d49f4e-e961-4359-8735-925a55eaa7f8": {
"main": [
[
{
"node": "11f7b052-0cb4-4cfe-8aae-bf933d797a5a",
"type": "main",
"index": 0
}
]
]
},
"016bff72-bd86-4eba-9c10-86853cd102cc": {
"main": [
[
{
"node": "35a62d62-6ede-4b06-8d04-a4d3760e220f",
"type": "main",
"index": 0
}
]
]
},
"c3f2e1e9-69db-4ccb-9022-2ebc4b45e88d": {
"main": [
[
{
"node": "61d49f4e-e961-4359-8735-925a55eaa7f8",
"type": "main",
"index": 0
}
]
]
},
"d031644e-84ea-4121-84d2-41e9d05207b5": {
"main": [
[
{
"node": "35a62d62-6ede-4b06-8d04-a4d3760e220f",
"type": "main",
"index": 0
}
]
]
},
"3064a4d2-4329-4371-bc5d-47ee568205ef": {
"ai_languageModel": [
[
{
"node": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"8d655ca0-13d7-41ab-b3cf-e1387cdb61d0": {
"ai_memory": [
[
{
"node": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
"type": "ai_memory",
"index": 0
}
]
]
},
"ddb41538-8446-4938-9233-7475b5a63fbb": {
"main": [
[
{
"node": "016bff72-bd86-4eba-9c10-86853cd102cc",
"type": "main",
"index": 0
}
]
]
},
"ad5ee442-1644-4ab2-bdf9-cbf84447a5ff": {
"ai_outputParser": [
[
{
"node": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - コンテンツ作成, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
Azure OpenAI とGoogle Workspace で DEI 資格フィルター Automation
Azure GPT-4o、Googleドライブ、テーブルを使ってDEI資格フィルタリングを自動化
If
Code
Gmail
+
If
Code
Gmail
19 ノードRahul Joshi
コンテンツ作成
顧客オンボーディングのヘルプリクエスト(Typeform → Gmail → Sheets)
顧客エントリヘルプリクエスト(Typeform → Gmail → Sheets)
If
Code
Gmail
+
If
Code
Gmail
28 ノードRahul Joshi
コンテンツ作成
人员流出リスク警报ワークフロー(Azure OpenAI + n8n)
従業員サーキュラーションプリスク検出とHRリマインダー – Azure OpenAI GPT-4o-miniとGmailを使用
If
Code
Gmail
+
If
Code
Gmail
16 ノードRahul Joshi
コンテンツ作成
プロスペクトの意図分類と自動タスク作成ツール
Azure GPT-4 を使って Google Sheets から ClickUp にリード意図分類を自動化
Set
Switch
Click Up
+
Set
Switch
Click Up
32 ノードRahul Joshi
コンテンツ作成
Stripe決済から自動テンプレートを顧客に配送
Stripe、GPT-4o、Gmailを使った自動テンプレート配信システム
If
Code
Gmail
+
If
Code
Gmail
44 ノードRahul Joshi
顧客管理
YouTube 動画に基づく自律ブログ公開
YouTube 動画から ChatGPT、Sheets、Apify、Pexels、WordPress を使用してブログの自主公開
If
Set
Code
+
If
Set
Code
80 ノードOriol Seguí
コンテンツ作成
ワークフロー情報
難易度
上級
ノード数27
カテゴリー2
ノードタイプ12
作成者
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で表示 →
このワークフローを共有