# templates

name: Generate Multiple Languange Blogpost with OpenAI, Support Yoast & Polylang
author_name: Khairul Muhtadin
author_username: khmuhtadin
categories: []
created_at: 2025-06-25T08:30:05.303Z
updated_at: 2025-06-25T08:30:05.303Z
url: https://n8n.io/workflows/5287
scraped_at: 2025-07-06 21:16:30
description:
  The blogblizt: polylang workflow streamlines the creation and publication of high-quality blog content using powerful automation with n8n, OpenAI’s GPT and the WordPress API. It enables effortlessly generate SEO-friendly articles complete with metadata and optimized featured images, improving content freshness and search engine visibility.

  💡 Why Use blogblizt?

  Automate content creation** to keep your blog fresh and engaging
  Generate SEO-optimized posts** with expert-crafted titles, meta descriptions, and focus keyphrases
  Save hours** of manual writing, image sourcing, and SEO configuration
  Leverage AI** for topic ideation and high-quality writing tailored to international student audiences
  Seamlessly publish and manage drafts** directly on your WordPress site via API
  Produce captivating, relevant featured images** without external tools
  Support multilingual content creation** with randomized language selection for diversity

  ⚡ Who Is This For?

  Content strategists managing WordPress blogs needing efficient topic generation
  SEO specialists wanting automated post creation with optimized metadata
  Website owners aiming to maintain active, multilingual content
  Marketers who want to leverage AI for high-quality, consistent article production

  ❓ What Problem Does It Solve?

  This workflow automates the entire editorial cycle—from generating engaging topics with AI, drafting full-length articles, producing featured images automatically, to posting drafts configured for SEO on WordPress—dramatically reducing editor workload and improving content output.

  🔧 What This Workflow Does

  ⏱ Trigger

     Runs on manual trigger or a weekly schedule to ensure consistent content flow
  📎 Fetch Site Context

     Retrieves recent posts, taxonomies, and WordPress API schema to understand site structure
  🔍 Generate Topic

     Uses OpenAI GPT-4.1-mini to roll a random language and craft a targeted blog post topic + SEO metadata
  🤖 Draft Article

     Composes a comprehensive, SEO-friendly article tailored to the generated topic
  💌 Create Draft

     Posts the draft on WordPress with Yoast SEO fields populated
  🖼 Generate Image

     Creates a high-quality, cinematic featured image via AI
  📤 Upload & Attach

     Uploads the image to the WordPress media library and sets it as the post’s featured image

  🔐 Setup Instructions

  Import the workflow file into n8n:

  Add credentials:

     WordPress API (with create-post & media permissions)
     OpenAI API key (for GPT and image models)
  Customize categories, languages, and schedule in the relevant nodes
  Adjust the Schedule Trigger timing as desired (e.g. every Monday at 9 AM)
  Test end-to-end on a staging WordPress site to verify drafts and images publish correctly

  🧩 Pre-Requirements

  An operational n8n instance (self-hosted or n8n cloud)
  WordPress site with REST API access & proper authentication
  OpenAI account with API access for both language and image models
  (Optional) Yoast SEO plugin installed for metadata recognition

  🛠️ Customize It Further

  Tweak OpenAI prompts for niche topics or additional languages
  Add social-media nodes to auto-share new posts
  Insert an editorial review step before publishing
  Refine image prompts for different visual styles (e.g., “modern infographic” vs. “cinematic portrait”)

  🧠 Nodes Used

  Manual Trigger**
  Schedule Trigger** (weekly)
  HTTP Request** (fetch posts, taxonomies, schema; upload media)
  Code** (JavaScript analyzers for API schema & taxonomy parsing)
  OpenAI Chat** (GPT-4.1-mini for topics & articles)
  OpenAI Image Generation** (for featured images)
  WordPress** (create draft post)
  Sticky Notes** (in-flow documentation)

  📞 Support

  Built by: Khaisa Studio
  Tags: wordpress, marketing, polylang
  Category: Content Creation
  Give something? a coffee will be great!

  Need a custom solution? Reach out at khmuhtadin.com to tailor the workflow for your site.

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.wordpress","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.openAi"]

workflow_json:
  {"id":"lLLiZbtro1xcBfAJ","meta":{"instanceId":"6195cc49af3fb53a44d2c88f9d4452644fc510eb857dcef9b6afe681b0ea8916","templateCredsSetupCompleted":true},"name":"Khaisa studio - Polylang","tags":[],"nodes":[{"id":"d26ca442-3d74-44ba-b776-f6a1be6418b4","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","position":[1640,3620],"parameters":{},"typeVersion":1},{"id":"044f8c00-f7dd-4122-a7e7-4d698dd7d924","name":"Get Recent Posts","type":"n8n-nodes-base.httpRequest","position":[1860,3340],"parameters":{"url":"https://<yourweb.site>/wp-json/wp/v2/posts?per_page=5","options":{"response":{"response":{"fullResponse":true}}},"authentication":"predefinedCredentialType","nodeCredentialType":"wordpressApi"},"credentials":{"wordpressApi":{"id":"eqflh1H16dxj2lMN","name":"Ashkan"}},"typeVersion":4.2},{"id":"9a011830-5d59-439f-a847-6d328109d3c2","name":"Get All Taxonomies","type":"n8n-nodes-base.httpRequest","position":[1860,3500],"parameters":{"url":"https://yourweb.site>/wp-json/wp/v2/taxonomies","options":{},"authentication":"predefinedCredentialType","nodeCredentialType":"wordpressApi"},"credentials":{"wordpressApi":{"id":"eqflh1H16dxj2lMN","name":"Ashkan"}},"typeVersion":4.2},{"id":"4a75282b-a4dd-44a4-97bc-a11db56e0b07","name":"Get Posts Schema","type":"n8n-nodes-base.httpRequest","position":[1860,3660],"parameters":{"url":"https://yourweb.site>/wp-json/wp/v2/posts","method":"OPTIONS","options":{"response":{"response":{"fullResponse":true}}},"authentication":"predefinedCredentialType","nodeCredentialType":"wordpressApi"},"credentials":{"wordpressApi":{"id":"eqflh1H16dxj2lMN","name":"Ashkan"}},"typeVersion":4.2},{"id":"eea71bad-e20a-45dc-a75c-abd6cc1c0854","name":"Get API Routes","type":"n8n-nodes-base.httpRequest","position":[1860,3820],"parameters":{"url":"https://<yourweb.site>/wp-json","options":{},"authentication":"predefinedCredentialType","nodeCredentialType":"wordpressApi"},"credentials":{"wordpressApi":{"id":"eqflh1H16dxj2lMN","name":"Ashkan"}},"typeVersion":4.2},{"id":"f525a26a-2716-4530-80d9-3e3c9fcc523d","name":"Get Single Post Details","type":"n8n-nodes-base.httpRequest","position":[2060,3340],"parameters":{"url":"=https://yourweb.site>/wp-json/wp/v2/posts/{{ $json.id }}?_embed","options":{},"authentication":"predefinedCredentialType","nodeCredentialType":"wordpressApi"},"credentials":{"wordpressApi":{"id":"eqflh1H16dxj2lMN","name":"Ashkan"}},"typeVersion":4.2},{"id":"5321b73e-b7ae-44b9-9a4f-43c81ee40aac","name":"Check Language Endpoint","type":"n8n-nodes-base.httpRequest","position":[2060,3500],"parameters":{"url":"https://yourweb.site>/wp-json/wp/v2/language","options":{"response":{"response":{"neverError":true}}},"authentication":"predefinedCredentialType","nodeCredentialType":"wordpressApi"},"credentials":{"wordpressApi":{"id":"eqflh1H16dxj2lMN","name":"Ashkan"}},"typeVersion":4.2},{"id":"0cb03306-bb18-4326-8249-ec94982dd3e3","name":"Check PLL Endpoint","type":"n8n-nodes-base.httpRequest","position":[2060,3660],"parameters":{"url":"https://<yourweb.site>/wp-json/pll/v1","options":{"response":{"response":{"neverError":true}}},"authentication":"predefinedCredentialType","nodeCredentialType":"wordpressApi"},"credentials":{"wordpressApi":{"id":"eqflh1H16dxj2lMN","name":"Ashkan"}},"typeVersion":4.2},{"id":"47fd2403-fdfb-4e17-8518-b7ef4545df0f","name":"Get Terms","type":"n8n-nodes-base.httpRequest","position":[2060,3820],"parameters":{"url":"https://<yourweb.site>/wp-json/wp/v2/terms","options":{"response":{"response":{"neverError":true}}},"authentication":"predefinedCredentialType","nodeCredentialType":"wordpressApi"},"credentials":{"wordpressApi":{"id":"eqflh1H16dxj2lMN","name":"Ashkan"}},"typeVersion":4.2},{"id":"65f55a1c-9027-4a52-8352-006bb7169cef","name":"Analyze Post Structure","type":"n8n-nodes-base.code","position":[2260,3340],"parameters":{"jsCode":"// Analyze a single post to understand Polylang structure\nconst results = {\n  discovery: [],\n  polylangFields: [],\n  languageHandling: '',\n  recommendations: [],\n  rawData: {}\n};\n\n// Get the post data\nconst items = $input.all();\nif (items.length === 0) {\n  return {\n    error: 'No input data received',\n    recommendation: 'Check if the previous nodes executed successfully'\n  };\n}\n\nconst postData = items[0].json;\nresults.rawData.sample = postData;\n\n// Look for language fields in the post\nif (postData) {\n  for (const key in postData) {\n    if (key.toLowerCase().includes('lang') || \n        key.toLowerCase().includes('locale') ||\n        key.toLowerCase().includes('translation')) {\n      results.polylangFields.push({\n        field: key,\n        value: postData[key],\n        type: typeof postData[key]\n      });\n    }\n  }\n  \n  // Check _links for language info\n  if (postData._links) {\n    for (const rel in postData._links) {\n      if (rel.includes('translation') || \n          rel.includes('language') ||\n          rel.includes('pll')) {\n        results.polylangFields.push({\n          field: `_links.${rel}`,\n          value: postData._links[rel],\n          type: 'link relation'\n        });\n      }\n    }\n  }\n  \n  // Check _embedded for language data\n  if (postData._embedded) {\n    for (const embed in postData._embedded) {\n      if (embed.includes('term') || embed.includes('language')) {\n        results.discovery.push({\n          type: 'embedded',\n          field: embed,\n          data: postData._embedded[embed]\n        });\n      }\n    }\n  }\n  \n  // Check meta fields\n  if (postData.meta) {\n    for (const metaKey in postData.meta) {\n      if (metaKey.toLowerCase().includes('lang') || \n          metaKey.toLowerCase().includes('locale')) {\n        results.polylangFields.push({\n          field: `meta.${metaKey}`,\n          value: postData.meta[metaKey],\n          type: 'meta field'\n        });\n      }\n    }\n  }\n}\n\n// Generate recommendations\nif (results.polylangFields.length > 0) {\n  results.languageHandling = 'Polylang fields detected in REST API';\n  results.recommendations.push('Language fields found: ' + results.polylangFields.map(f => f.field).join(', '));\n  results.recommendations.push('Use these fields when creating posts');\n} else {\n  results.languageHandling = 'No obvious Polylang fields in post data';\n  results.recommendations.push('Language might be handled through custom taxonomies or separate API calls');\n  results.recommendations.push('Check the taxonomies and routes endpoints for more information');\n}\n\nreturn results;"},"typeVersion":2},{"id":"65c41cb1-b943-4222-9f1f-99627f59c3dc","name":"Analyze Taxonomies","type":"n8n-nodes-base.code","position":[2260,3500],"parameters":{"jsCode":"// Analyze taxonomies for language handling\nconst results = {\n  languageTaxonomies: [],\n  allTaxonomies: [],\n  recommendations: []\n};\n\nconst items = $input.all();\nif (items.length === 0 || !items[0].json) {\n  return { error: 'No taxonomy data received' };\n}\n\nconst taxonomies = items[0].json;\n\n// List all taxonomies\nfor (const taxSlug in taxonomies) {\n  const tax = taxonomies[taxSlug];\n  results.allTaxonomies.push({\n    slug: taxSlug,\n    name: tax.name,\n    restBase: tax.rest_base\n  });\n  \n  // Check for language-related taxonomies\n  if (taxSlug.includes('language') || \n      taxSlug.includes('translation') ||\n      taxSlug === 'lang' ||\n      tax.name?.toLowerCase().includes('language')) {\n    results.languageTaxonomies.push({\n      slug: taxSlug,\n      details: tax\n    });\n  }\n}\n\n// Generate recommendations\nif (results.languageTaxonomies.length > 0) {\n  results.recommendations.push('Language taxonomy found: ' + results.languageTaxonomies[0].slug);\n  results.recommendations.push('Use this taxonomy when creating posts by adding it to the taxonomies parameter');\n} else {\n  results.recommendations.push('No dedicated language taxonomy found');\n  results.recommendations.push('Language might be handled through post meta or custom fields');\n}\n\nreturn results;"},"typeVersion":2},{"id":"598642ca-a558-4425-820a-760aad33dca7","name":"Analyze API Routes","type":"n8n-nodes-base.code","position":[2260,3820],"parameters":{"jsCode":"// Check API routes for Polylang endpoints\nconst results = {\n  polylangRoutes: [],\n  allNamespaces: [],\n  recommendations: []\n};\n\nconst items = $input.all();\nif (items.length === 0 || !items[0].json) {\n  return { error: 'No route data received' };\n}\n\nconst apiData = items[0].json;\n\n// Check namespaces\nif (apiData.namespaces) {\n  results.allNamespaces = apiData.namespaces;\n  \n  // Look for Polylang namespace\n  const pllNamespaces = apiData.namespaces.filter(ns => \n    ns.includes('pll') || \n    ns.includes('polylang') || \n    ns.includes('language')\n  );\n  \n  if (pllNamespaces.length > 0) {\n    results.polylangRoutes = pllNamespaces;\n    results.recommendations.push('Polylang API namespace found: ' + pllNamespaces.join(', '));\n    results.recommendations.push('Explore these endpoints for language management');\n  }\n}\n\n// Check routes\nif (apiData.routes) {\n  for (const route in apiData.routes) {\n    if (route.includes('pll') || \n        route.includes('language') || \n        route.includes('translation')) {\n      results.polylangRoutes.push({\n        route: route,\n        methods: apiData.routes[route].methods\n      });\n    }\n  }\n}\n\nif (results.polylangRoutes.length === 0) {\n  results.recommendations.push('No dedicated Polylang routes found');\n  results.recommendations.push('Language handling is likely integrated into standard WP endpoints');\n}\n\nreturn results;"},"typeVersion":2},{"id":"1e8935ab-e3b9-41ff-942a-7ed8e5d38350","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1540,3300],"parameters":{"width":980,"height":720,"content":"## Polylang Debugging "},"typeVersion":1},{"id":"1fd3b081-5185-416f-af0d-925630fcafd0","name":"OpenAI Model - Article1","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[3200,3520],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini","cachedResultName":"gpt-4.1-mini"},"options":{"maxTokens":2500,"temperature":0.8}},"credentials":{"openAiApi":{"id":"TFeNsOhMdVKP8DCw","name":"Akhsan"}},"typeVersion":1.2},{"id":"c719ee7d-315a-44cf-bc48-c7fc86c6bb02","name":"Parse Topic JSON1","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[3020,3520],"parameters":{"jsonSchemaExample":"{\n  \"category\": \"F-1 Visa\",\n  \"categoryId\": 4794,\n  \"language\": \"en\",\n  \"topic\": \"F-1 visa interview preparation\",\n  \"title\": \"Essential F-1 Visa Interview Tips for International Students\",\n  \"slug\": \"f1-visa-interview-tips-international-students\",\n  \"metaDescription\": \"Master your F-1 visa interview with proven tips and common questions. Get expert guidance for international students applying to US universities.\",\n  \"focusKeyphrase\": \"F-1 visa interview tips\"\n}"},"typeVersion":1.2},{"id":"df2f35e8-1e1a-45b0-bbf1-b36eca0df6dc","name":"OpenAI Model - Topic1","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[2860,3520],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini","cachedResultName":"gpt-4.1-mini"},"options":{"temperature":0.7}},"credentials":{"openAiApi":{"id":"TFeNsOhMdVKP8DCw","name":"Akhsan"}},"typeVersion":1.2},{"id":"cc908638-83dd-4d5f-9742-d05227bdbacd","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[2580,3300],"parameters":{"width":1200,"height":720,"content":"## Article Generator"},"typeVersion":1},{"id":"27d4da14-3360-4af6-a312-31874554b401","name":"Weekly Schedule","type":"n8n-nodes-base.scheduleTrigger","position":[2680,3380],"parameters":{"rule":{"interval":[{"field":"weeks","triggerAtDay":[3],"triggerAtHour":10}]}},"typeVersion":1.1},{"id":"27869c0f-c7f0-49f7-84d4-34f08bb87102","name":"Generate Topic & Metadata","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[2860,3380],"parameters":{"text":"=You are an expert content strategist for <yourweb.site> specializing in visa and education content. Generate ONE blog post topic.\n\n1. Select ONE category from these available WordPress categories:\n   - \n2. Select a target language from: en (English), tr (Turkish), fa (Farsi)\n\n3. Create an engaging topic and metadata for a blog post.\n\n4. Format your response EXACTLY like this:\n{\n  \"category\": \"[WordPress category name]\",\n  \"categoryId\": [category ID number],\n  \"language\": \"[language code: en, tr, or fa]\",\n  \"topic\": \"[specific topic]\",\n  \"title\": \"[engaging SEO-friendly title]\",\n  \"slug\": \"[url-friendly-slug-lowercase-with-hyphens]\",\n  \"metaDescription\": \"[meta description under 160 characters]\",\n  \"focusKeyphrase\": \"[main keyword phrase]\"\n}\n\nIMPORTANT:\n- Topics should be practical and helpful\n- Keep titles clear and engaging\n- Meta descriptions should be compelling and under 160 characters\n- Slug should be lowercase with hyphens, no special characters\n- Randomly select different languages to ensure content diversity\n- If selecting tr or fa, still generate the content in English (it will be translated later)","promptType":"define","hasOutputParser":true},"typeVersion":1.6},{"id":"4126e8f8-8cc1-42e7-8b50-d818ee1e1857","name":"Generate Article Content","type":"@n8n/n8n-nodes-langchain.agent","position":[3200,3380],"parameters":{"text":"=You are an expert content writer for<yourweb.site>, a visa consultation company. Write a comprehensive article based on:\n\nTopic: {{ $json.output.topic }}\nTitle: {{ $json.output.title }}\nCategory: {{ $json.output.category }}\nFocus Keyphrase: {{ $json.output.focusKeyphrase }}\n\nCRITICAL Requirements:\n\nWrite between 1000-1500 words\nUse a clear, simple, helpful tone – avoid technical jargon\nDo NOT provide legal advice or interpret immigration law\nFocus on practical guidance and general information\nInclude useful tips especially for international students\n\nStructure with one <h1> (for the title, handled by WordPress), then use <h2> for main sections and <p> or <strong>/<ul> for subpoints — avoid excessive use of <h3> unless necessary\nMake content SEO-friendly by using the focus keyphrase naturally\nEnd with EXACTLY this CTA in a separate paragraph: \"Reach out to us for personalized consultation based on your specific requirements.\"\n\nStructure:\nIntroduction (engage the reader)\n3–4 main content sections with <h2> headings\nSubpoints within sections should be in <p>, <ul>, <strong> or similar semantic tags — use <h3> only if really needed\nTips or checklist for practical action\n\nConclusion\nCTA paragraph\nOutput a complete article in valid HTML format, without wrapping the result in code blocks or using markdown. Do NOT include the <h1> tag for the title, as it will be handled by WordPress. Output only the HTML content, not instructions or explanations.","options":{},"promptType":"define"},"typeVersion":1.9},{"id":"c1ac4723-1db8-4eea-8640-6dd176efc0b1","name":"Create WordPress Draft","type":"n8n-nodes-base.wordpress","position":[3540,3380],"parameters":{"title":"={{ $('Generate Topic & Metadata').item.json.output.title }}","additionalFields":{"slug":"={{ $('Generate Topic & Metadata').item.json.output.slug }}","format":"standard","status":"draft","content":"={{ $json.output }}","authorId":2,"categories":"={{ $('Generate Topic & Metadata').item.json.output.categoryId }}"}},"credentials":{"wordpressApi":{"id":"eqflh1H16dxj2lMN","name":"Ashkan"}},"typeVersion":1},{"id":"dcec267d-c513-44df-8d13-8bd68e852590","name":"Set Yoast SEO Data","type":"n8n-nodes-base.httpRequest","position":[2840,3780],"parameters":{"url":"=https://<yourweb.site>/wp-json/wp/v2/posts/{{ $json.id }}","method":"POST","options":{},"jsonBody":"={\n  \"meta\": {\n    \"_yoast_wpseo_focuskw\": \"{{ $('Generate Topic & Metadata').item.json.output.focusKeyphrase }}\",\n    \"_yoast_wpseo_metadesc\": \"{{ $('Generate Topic & Metadata').item.json.output.metaDescription }}\",\n    \"_yoast_wpseo_title\": \"{{ $('Generate Topic & Metadata').item.json.output.title }}\"\n  }\n}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"wordpressApi"},"credentials":{"wordpressApi":{"id":"eqflh1H16dxj2lMN","name":"Ashkan"}},"typeVersion":4.2},{"id":"bedd876b-e6e1-4397-aed2-61b08a5bc2c5","name":"Generate Featured Image","type":"@n8n/n8n-nodes-langchain.openAi","position":[3060,3780],"parameters":{"prompt":"=Create a cinematic, modern image for a blog about: {{ $('Generate Topic & Metadata').item.json.output.title }}\n\nVisual Style Requirements:\n\t•\tCinematic, realistic photography with shallow depth of field\n\t•\tShows people (young adults or professionals) traveling, studying, or working internationally\n\t•\tScenes like airports, train stations, city streets, campuses, or iconic landmarks\n\t•\tGlobal lifestyle and international mobility vibe\n\t•\tBright or golden-hour lighting, energetic or inspirational tone\n\t•\tNatural, candid facial expressions and interactions\n\t•\tModern outfits and diverse representation\n\t•\tNO text, flags, logos, or brand names in the image\n\t•\tClean, high-quality composition suitable for a professional blog","options":{"size":"1792x1024","style":"natural","quality":"standard"},"resource":"image"},"credentials":{"openAiApi":{"id":"TFeNsOhMdVKP8DCw","name":"Akhsan"}},"typeVersion":1.8},{"id":"a7284c61-7342-4fcb-9422-577a807c9dd3","name":"Upload Image to WordPress","type":"n8n-nodes-base.httpRequest","position":[3260,3780],"parameters":{"url":"https://<yourweb.site>/wp-json/wp/v2/media","method":"POST","options":{},"sendBody":true,"contentType":"binaryData","sendHeaders":true,"authentication":"predefinedCredentialType","headerParameters":{"parameters":[{"name":"Content-Type","value":"image/png"},{"name":"Content-Disposition","value":"=attachment; filename={{ $('Generate Topic & Metadata').item.json.output.slug }}.png"}]},"inputDataFieldName":"data","nodeCredentialType":"wordpressApi"},"credentials":{"wordpressApi":{"id":"eqflh1H16dxj2lMN","name":"Ashkan"}},"typeVersion":4.2},{"id":"69b93ac4-7784-4c71-8fff-31ba59b50b55","name":"Attach Featured Image","type":"n8n-nodes-base.httpRequest","position":[3460,3780],"parameters":{"url":"=https://<yourweb.site>/wp-json/wp/v2/posts/{{ $('Create WordPress Draft').item.json.id }}","method":"POST","options":{},"sendBody":true,"authentication":"predefinedCredentialType","bodyParameters":{"parameters":[{"name":"featured_media","value":"={{ $json.id }}"}]},"nodeCredentialType":"wordpressApi"},"credentials":{"wordpressApi":{"id":"eqflh1H16dxj2lMN","name":"Ashkan"}},"typeVersion":4.2}],"active":false,"settings":{"executionOrder":"v1"},"versionId":"7541ea2d-d795-43b1-b842-f4be6a2a61a4","connections":{"Get API Routes":{"main":[[{"node":"Analyze API Routes","type":"main","index":0}]]},"Manual Trigger":{"main":[[{"node":"Get Recent Posts","type":"main","index":0},{"node":"Get All Taxonomies","type":"main","index":0},{"node":"Get Posts Schema","type":"main","index":0},{"node":"Get API Routes","type":"main","index":0}]]},"Weekly Schedule":{"main":[[{"node":"Generate Topic & Metadata","type":"main","index":0}]]},"Get Posts Schema":{"main":[[{"node":"Check PLL Endpoint","type":"main","index":0}]]},"Get Recent Posts":{"main":[[{"node":"Get Single Post Details","type":"main","index":0}]]},"Parse Topic JSON1":{"ai_outputParser":[[{"node":"Generate Topic & Metadata","type":"ai_outputParser","index":0}]]},"Get All Taxonomies":{"main":[[{"node":"Analyze Taxonomies","type":"main","index":0}]]},"Set Yoast SEO Data":{"main":[[{"node":"Generate Featured Image","type":"main","index":0}]]},"OpenAI Model - Topic1":{"ai_languageModel":[[{"node":"Generate Topic & Metadata","type":"ai_languageModel","index":0}]]},"Create WordPress Draft":{"main":[[{"node":"Set Yoast SEO Data","type":"main","index":0}]]},"Generate Featured Image":{"main":[[{"node":"Upload Image to WordPress","type":"main","index":0}]]},"Get Single Post Details":{"main":[[{"node":"Analyze Post Structure","type":"main","index":0}]]},"OpenAI Model - Article1":{"ai_languageModel":[[{"node":"Generate Article Content","type":"ai_languageModel","index":0}]]},"Generate Article Content":{"main":[[{"node":"Create WordPress Draft","type":"main","index":0}]]},"Generate Topic & Metadata":{"main":[[{"node":"Generate Article Content","type":"main","index":0}]]},"Upload Image to WordPress":{"main":[[{"node":"Attach Featured Image","type":"main","index":0}]]}}}


name: WordPress context backup to github
description: This template can backup WordPress context github。
author_name: boagolden
author_username: boagolden
categories: []
created_at: 2025-06-25T08:37:12.542Z
updated_at: 2025-06-25T08:37:12.542Z
url: https://n8n.io/workflows/5288
scraped_at: 2025-07-06 21:16:30
nodes_used:
  ["n8n-nodes-base.github","n8n-nodes-base.httpRequest","n8n-nodes-base.wordpress","n8n-nodes-base.code"]

workflow_json:
  {"id":"dR9Ks4IeLu4qwVpD","meta":{"instanceId":"784e7394ad6bc96590ae2022cd99eaa229a70dd6b82a6d27cf116d99211f63ca","templateCredsSetupCompleted":true},"name":"blogbak","tags":[],"nodes":[{"id":"6fe6e1e5-146e-45fc-89a8-e318759c283b","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-620,-140],"parameters":{"color":6,"width":2547,"height":751,"content":"## Subworkflow"},"typeVersion":1},{"id":"2e37f053-f5c4-4984-9855-ff82346fffb1","name":"Return","type":"n8n-nodes-base.set","position":[1720,60],"parameters":{"options":{},"assignments":{"assignments":[{"id":"8d513345-6484-431f-afb7-7cf045c90f4f","name":"Done","type":"boolean","value":true}]}},"typeVersion":3.3},{"id":"c84c112e-9ec4-4563-8829-7acfb4022537","name":"Get File","type":"n8n-nodes-base.httpRequest","position":[820,-60],"parameters":{"url":"={{ $json.download_url }}","options":{}},"typeVersion":4.2},{"id":"c3c21099-fe26-4289-94d1-4a0fbf80743f","name":"If file too large","type":"n8n-nodes-base.if","position":[620,-40],"parameters":{"options":{},"conditions":{"options":{"version":1,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"45ce825e-9fa6-430c-8931-9aaf22c42585","operator":{"type":"string","operation":"empty","singleValue":true},"leftValue":"={{ $json.content }}","rightValue":""},{"id":"9619a55f-7fb1-4f24-b1a7-7aeb82365806","operator":{"type":"string","operation":"notExists","singleValue":true},"leftValue":"={{ $json.error }}","rightValue":""}]}},"typeVersion":2},{"id":"5c296194-1b0c-49e9-87e1-0349ce14e053","name":"Merge Items","type":"n8n-nodes-base.merge","position":[620,220],"parameters":{},"typeVersion":2},{"id":"7ee60c81-2232-4aa8-8313-fa2493d6cf59","name":"isDiffOrNew","type":"n8n-nodes-base.code","position":[820,220],"parameters":{"jsCode":"const orderJsonKeys = (jsonObj) => {\n  const ordered = {};\n  Object.keys(jsonObj).sort().forEach(key => {\n    ordered[key] = jsonObj[key];\n  });\n  return ordered;\n}\n\n// Check if file returned with content\nif (Object.keys($input.all()[0].json).includes(\"content\")) {\n  // Decode base64 content and parse JSON\n  const origWorkflow = JSON.parse(Buffer.from($input.all()[0].json.content, 'base64').toString());\n  const n8nWorkflow = $input.all()[1].json;\n  \n  // Order JSON objects\n  const orderedOriginal = orderJsonKeys(origWorkflow);\n  const orderedActual = orderJsonKeys(n8nWorkflow);\n\n  // Determine difference\n  if (JSON.stringify(orderedOriginal) === JSON.stringify(orderedActual)) {\n    $input.all()[0].json.github_status = \"same\";\n  } else {\n    $input.all()[0].json.github_status = \"different\";\n    $input.all()[0].json.n8n_data_stringy = JSON.stringify(orderedActual, null, 2);\n  }\n  $input.all()[0].json.content_decoded = orderedOriginal;\n// No file returned / new workflow\n} else if (Object.keys($input.all()[0].json).includes(\"data\")) {\n  const origWorkflow = JSON.parse($input.all()[0].json.data);\n  const n8nWorkflow = $input.all()[1].json;\n  \n  // Order JSON objects\n  const orderedOriginal = orderJsonKeys(origWorkflow);\n  const orderedActual = orderJsonKeys(n8nWorkflow);\n\n  // Determine difference\n  if (JSON.stringify(orderedOriginal) === JSON.stringify(orderedActual)) {\n    $input.all()[0].json.github_status = \"same\";\n  } else {\n    $input.all()[0].json.github_status = \"different\";\n    $input.all()[0].json.n8n_data_stringy = JSON.stringify(orderedActual, null, 2);\n  }\n  $input.all()[0].json.content_decoded = orderedOriginal;\n\n} else {\n  // Order JSON object\n  const n8nWorkflow = $input.all()[1].json;\n  const orderedActual = orderJsonKeys(n8nWorkflow);\n  \n  // Proper formatting\n  $input.all()[0].json.github_status = \"new\";\n  $input.all()[0].json.n8n_data_stringy = JSON.stringify(orderedActual, null, 2);\n}\n\n// Return items\nreturn $input.all();"},"typeVersion":1},{"id":"f80206e2-b0a4-4c25-bf6c-92a7bc0673e8","name":"Check Status","type":"n8n-nodes-base.switch","position":[1040,220],"parameters":{"rules":{"rules":[{"value2":"same"},{"output":1,"value2":"different"},{"output":2,"value2":"new"}]},"value1":"={{$json.github_status}}","dataType":"string"},"typeVersion":1},{"id":"fe9da7b9-2706-4db2-bd5a-94d4fb398f07","name":"Same file - Do nothing","type":"n8n-nodes-base.noOp","position":[1260,60],"parameters":{},"typeVersion":1},{"id":"6940d68b-75be-4ac5-a024-8fee5928137e","name":"File is different","type":"n8n-nodes-base.noOp","position":[1260,220],"parameters":{},"typeVersion":1},{"id":"fb3ba897-7934-4a4d-9ebf-730fbc0f6e87","name":"File is new","type":"n8n-nodes-base.noOp","position":[1260,380],"parameters":{},"typeVersion":1},{"id":"8bc1ca4b-d7ee-434c-b72f-327672941443","name":"Create new file","type":"n8n-nodes-base.github","position":[1480,380],"webhookId":"d7722bc1-3b69-4038-8f1e-ff7ba50498d1","parameters":{"owner":{"__rl":true,"mode":"name","value":"={{ $('Globals').item.json.repo.owner }}"},"filePath":"={{ $('Globals').item.json.repo.path }}{{$('Execute Workflow Trigger').first().json.id}}.json","resource":"file","repository":{"__rl":true,"mode":"name","value":"={{ $('Globals').item.json.repo.name }}"},"fileContent":"={{$('isDiffOrNew').item.json[\"n8n_data_stringy\"]}}","commitMessage":"={{$('Execute Workflow Trigger').first().json.name}} ({{$json.github_status}})"},"credentials":{"githubApi":{"id":"ziOYyVD5gQbrBGVj","name":"GitHub account"}},"typeVersion":1},{"id":"fc075cd9-fcf0-4cf0-a573-8e4dfdd0deb6","name":"Edit existing file","type":"n8n-nodes-base.github","position":[1480,200],"webhookId":"e55f87f7-9be4-425f-98b7-00ff88a09696","parameters":{"owner":{"__rl":true,"mode":"name","value":"={{ $('Globals').item.json.repo.owner }}"},"filePath":"={{ $('Globals').item.json.repo.path }}{{$('Execute Workflow Trigger').first().json.id}}.json","resource":"file","operation":"edit","repository":{"__rl":true,"mode":"name","value":"={{ $('Globals').item.json.repo.name }}"},"fileContent":"={{$('isDiffOrNew').item.json[\"n8n_data_stringy\"]}}","commitMessage":"={{$('Execute Workflow Trigger').first().json.name}} ({{$json.github_status}})"},"credentials":{"githubApi":{"id":"ziOYyVD5gQbrBGVj","name":"GitHub account"}},"typeVersion":1},{"id":"2f2c0a8c-e152-4f04-a092-375e649a6f35","name":"Get file data","type":"n8n-nodes-base.github","position":[420,-40],"webhookId":"27006429-54a9-4234-a1ca-3ccc36a5a4ec","parameters":{"owner":{"__rl":true,"mode":"name","value":"={{ $json.repo.owner }}"},"filePath":"={{ $json.repo.path }}{{ $('Execute Workflow Trigger').item.json.id }}.json","resource":"file","operation":"get","repository":{"__rl":true,"mode":"name","value":"={{ $json.repo.name }}"},"asBinaryProperty":false,"additionalParameters":{}},"credentials":{"githubApi":{"id":"ziOYyVD5gQbrBGVj","name":"GitHub account"}},"typeVersion":1,"continueOnFail":true,"alwaysOutputData":true},{"id":"0283ac63-70bb-4230-a292-f6a70faab22f","name":"Globals","type":"n8n-nodes-base.set","position":[200,120],"parameters":{"options":{},"assignments":{"assignments":[{"id":"6cf546c5-5737-4dbd-851b-17d68e0a3780","name":"repo.owner","type":"string","value":"boagolden82"},{"id":"452efa28-2dc6-4ea3-a7a2-c35d100d0382","name":"repo.name","type":"string","value":"n8nback"},{"id":"81c4dc54-86bf-4432-a23f-22c7ea831e74","name":"repo.path","type":"string","value":"=workflows/{{ $json.tags[0].name }}"}]}},"typeVersion":3.4},{"id":"aa41b761-85ed-4837-a466-c5c03902b73c","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[180,0],"parameters":{"color":4,"width":150,"height":80,"content":"## Edit this node 👇"},"typeVersion":1},{"id":"b9a961d5-63ba-4646-8a7d-920ba7ad8467","name":"Execute Workflow Trigger","type":"n8n-nodes-base.executeWorkflowTrigger","position":[-520,300],"parameters":{"inputSource":"passthrough"},"typeVersion":1.1},{"id":"539e52b7-7772-4572-a8b4-a0b60cd21c7d","name":"/","type":"n8n-nodes-base.set","position":[-40,20],"parameters":{"options":{},"assignments":{"assignments":[{"id":"12cad226-e091-4bbb-aed9-a8e01311772c","name":"tags[0].name","type":"string","value":"={{ $('Execute Workflow Trigger').item.json.tags[0].name }}/"}]}},"typeVersion":3.4},{"id":"e821424a-9a5f-4eba-832f-530a62ce9898","name":"tag?","type":"n8n-nodes-base.switch","position":[-280,120],"parameters":{"rules":{"values":[{"outputKey":"tag","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"object","operation":"exists","singleValue":true},"leftValue":"={{ $json.tags[0] }}","rightValue":""}]},"renameOutput":true},{"outputKey":"none","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"2656fbe3-fe35-4770-9c03-9a455ec618e4","operator":{"type":"object","operation":"notExists","singleValue":true},"leftValue":"={{ $json.tags[0] }}","rightValue":""}]},"renameOutput":true}]},"options":{}},"typeVersion":3.2},{"id":"d5383175-b64b-43ba-b979-1737af2e3034","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","position":[-480,-600],"parameters":{},"typeVersion":1},{"id":"cab6effd-7aab-48ad-a035-1b5b4567d722","name":"Get All WP Posts","type":"n8n-nodes-base.wordpress","position":[-180,-460],"parameters":{"options":{},"operation":"getAll","returnAll":true},"credentials":{"wordpressApi":{"id":"zgOcyZzeoCInkBr9","name":"Wordpress account"}},"typeVersion":1},{"id":"878acd66-e344-4c3a-9650-a27493be4942","name":"Format JSON","type":"n8n-nodes-base.code","notes":"将所有WP文章格式化为JSON文本","position":[80,-440],"parameters":{"jsCode":"// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nfor (const item of $input.all()) {\n  item.json.myNewField = 1;\n}\n\nreturn $input.all();"},"typeVersion":1},{"id":"ddb88bce-1243-426f-b6f8-5236cdf085a8","name":"Execute Workflow","type":"n8n-nodes-base.executeWorkflow","position":[420,-460],"parameters":{"mode":"each","options":{},"workflowId":{"__rl":true,"mode":"id","value":"={{ $workflow.id }}"},"workflowInputs":{"value":{},"schema":[],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":true}},"typeVersion":1.2},{"id":"6b7426ad-7680-4227-92bc-90a3ae44bb3c","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-400,-360],"parameters":{"rule":{"interval":[{"triggerAtHour":17}]}},"typeVersion":1.2}],"active":true,"settings":{"executionOrder":"v1"},"versionId":"c128b71d-90e9-4503-82f0-555fd4e34a69","connections":{"/":{"main":[[{"node":"Globals","type":"main","index":0}]]},"tag?":{"main":[[{"node":"/","type":"main","index":0}],[{"node":"Globals","type":"main","index":0}]]},"Globals":{"main":[[{"node":"Get file data","type":"main","index":0}]]},"Get File":{"main":[[{"node":"Merge Items","type":"main","index":0}]]},"File is new":{"main":[[{"node":"Create new file","type":"main","index":0}]]},"Format JSON":{"main":[[{"node":"Execute Workflow","type":"main","index":0}]]},"Merge Items":{"main":[[{"node":"isDiffOrNew","type":"main","index":0}]]},"isDiffOrNew":{"main":[[{"node":"Check Status","type":"main","index":0}]]},"Check Status":{"main":[[{"node":"Same file - Do nothing","type":"main","index":0}],[{"node":"File is different","type":"main","index":0}],[{"node":"File is new","type":"main","index":0}]]},"Get file data":{"main":[[{"node":"If file too large","type":"main","index":0}]]},"Manual Trigger":{"main":[[{"node":"Get All WP Posts","type":"main","index":0}]]},"Create new file":{"main":[[{"node":"Return","type":"main","index":0}]]},"Get All WP Posts":{"main":[[{"node":"Format JSON","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Get All WP Posts","type":"main","index":0}]]},"File is different":{"main":[[{"node":"Edit existing file","type":"main","index":0}]]},"If file too large":{"main":[[{"node":"Get File","type":"main","index":0}],[{"node":"Merge Items","type":"main","index":0}]]},"Edit existing file":{"main":[[{"node":"Return","type":"main","index":0}]]},"Same file - Do nothing":{"main":[[{"node":"Return","type":"main","index":0}]]},"Execute Workflow Trigger":{"main":[[{"node":"Merge Items","type":"main","index":1},{"node":"tag?","type":"main","index":0}]]}}}


name: AI Prompt Maker
author_name: Lucas Peyrin
author_username: lucaspeyrin
nodes_used: ["@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.lmChatGoogleGemini"]
categories: []
created_at: 2025-06-25T08:54:41.707Z
updated_at: 2025-06-25T08:54:41.707Z
url: https://n8n.io/workflows/5289
scraped_at: 2025-07-06 21:16:30
description:
  How it works

  This template provides a complete, ready-to-use web application for generating high-quality AI prompts. It features a user-friendly web form where you can describe your goal, and it leverages an AI model (Google Gemini) to create a structured, reusable prompt for you.

  The workflow is a full-stack application built entirely within n8n:

  Frontend (The Form): A Form Trigger node creates a beautiful, public-facing web form. Here, a user describes the prompt they need and selects which structural components to include (like system instructions, examples, or input variables).
  Backend (The AI Logic):
      A LangChain Chain node takes the user's request and constructs a "meta-prompt"—a set of instructions for the AI on how to generate the final prompt.
      The Google Gemini node executes this meta-prompt, creating a well-structured output with clear sections and tags.
  The Result (The Webpage):
      After generation, the user is automatically redirected to a new URL.
      This URL is handled by another Webhook node, which serves a custom-coded HTML page.
      This beautiful, dark-themed webpage displays the generated prompt and includes a one-click "Copy" button, making it easy to use the result immediately.

  This template is a perfect example of how to build interactive web tools with n8n, combining a user interface, backend logic, and a dynamic web response in a single workflow.

  Set up steps

  Setup time: ~1-3 minutes

  This workflow requires a Google AI credential to function.

  Configure Google AI Credentials:
      This workflow uses a Google Gemini model. You will need a Google AI API key.
      In n8n, go to Credentials and click Add credential.
      Search for Google Gemini and enter your API key.
      Go back to the workflow, open the Gemini 2.5 Flash node, and select your newly created credential from the dropdown.

  Activate the Workflow:
      Click the Active toggle in the top-right corner to turn the workflow on.

  Access Your Prompt Maker:
      Open the Prompt Request (Form Trigger) node.
      Copy the Public URL provided. This is the link to your new web application!
      Open the link in your browser, fill out the form, and see the magic happen.

  Note: This workflow uses environment variables like {{ $env.WEBHOOK_URL }} to build the redirect URL. These are typically set automatically by n8n and should work out-of-the-box on most standard n8n setups.

workflow_json:
  {"meta":{"instanceId":"e409ea34548a2afe2dffba31130cd1cf2e98ebe2afaeed2a63caf2a0582d1da0"},"nodes":[{"id":"430f2ed6-ccbe-4ccd-844b-c7458d0e87b0","name":"Gemini 2.5 Flash","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[-580,480],"parameters":{"options":{"temperature":0},"modelName":"models/gemini-2.5-flash"},"credentials":{"googlePalmApi":{"id":"AXawYbABK5aZbGBE","name":"IA2S"}},"typeVersion":1},{"id":"fc337c72-6ce9-43fa-96b2-1581b54983ca","name":"Prompt Request","type":"n8n-nodes-base.formTrigger","position":[-1180,40],"webhookId":"bef818b2-581a-44ad-bd07-a8b26cfb5b8c","parameters":{"options":{"path":"prompt-maker","customCss":"/* --- ROOT VARIABLES (DARK THEME) --- */\n:root {\n\t/* --- FONT MAPPING --- */\n\t--font-family: 'Inter', sans-serif;\n\t--font-weight-normal: 400;\n\t--font-weight-bold: 600;\n\t--font-size-body: 12px;\n\t--font-size-label: 14px;\n\t--font-size-test-notice: 12px;\n\t--font-size-input: 14px;\n\t--font-size-header: 20px;\n\t--font-size-paragraph: 14px;\n\t--font-size-link: 12px;\n\t--font-size-error: 12px;\n\t--font-size-html-h1: 28px;\n\t--font-size-html-h2: 20px;\n\t--font-size-html-h3: 16px;\n\t--font-size-html-h4: 14px;\n\t--font-size-html-h5: 12px;\n\t--font-size-html-h6: 10px;\n\t--font-size-subheader: 14px;\n\n\t/* --- COLOR MAPPING (Dark Theme) --- */\n\t--color-background: #1a1b26;\n\t--color-card-bg: #24283b;\n\t--color-input-bg: #1e202e;\n\t--color-card-border: #414868;\n\t--color-header: #ffffff;\n\t--color-label: #c0caf5;\n\t--color-input-text: #c0caf5;\n\t--color-header-subtext: #c0caf5;\n\t--color-html-text: #c0caf5;\n\t--color-input-border: #414868;\n\t--color-focus-border: #7aa2f7;\n\t--color-link: #9eceff;\n\t--color-html-link: #7aa2f7;\n\t--color-submit-btn-bg: #7aa2f7;\n\t--color-submit-btn-hover-bg: #9eceff;\n\t--color-submit-btn-text: #ffffff; /* CORRECTED: Changed back to white for better readability */\n\t--color-clear-button-bg: #414868;\n\t--color-error: #f7768e;\n\t--color-required: #f7768e;\n\t--color-test-notice-text: #c0caf5;\n\t--color-test-notice-bg: #2a2f41;\n\t--color-test-notice-border: #7aa2f7;\n\n\t/* --- BORDER RADII & SPACING --- */\n\t--border-radius-card: 12px;\n\t--border-radius-input: 6px;\n\t--border-radius-clear-btn: 50%;\n\t--card-border-radius: 12px;\n\t--padding-container-top: 24px;\n\t--padding-card: 24px;\n\t--padding-test-notice-vertical: 12px;\n\t--padding-test-notice-horizontal: 24px;\n\t--margin-bottom-card: 16px;\n\t--padding-form-input: 12px;\n\t--card-padding: 24px;\n\t--card-margin-bottom: 16px;\n\n\t/* --- DIMENSIONS --- */\n\t--container-width: 500px;\n\t--submit-btn-height: 48px;\n\t--checkbox-size: 18px;\n\n\t/* --- OTHER MAPPINGS --- */\n\t--box-shadow-card: 0 10px 30px rgba(0, 0, 0, 0.3);\n\t--color-card-shadow: rgba(0, 0, 0, 0.3);\n\t--opacity-placeholder: 0.5;\n}\n\n/* === GLOBAL & ELEMENT-SPECIFIC FIXES === */\n\n/* 1. Add the dot grid background to the page */\nbody {\n    background-image: radial-gradient(circle at 1px 1px, rgba(255,255,255,0.05) 1px, transparent 0);\n    background-size: 20px 20px;\n}\n\n/* 2. Explicitly style the TEXTAREA */\n/* Targets the specific class n8n uses */\ntextarea.form-input {\n    background-color: var(--color-input-bg);\n    color: var(--color-input-text);\n    font-family: var(--font-family); /* Force font inheritance */\n}\ntextarea.form-input::placeholder {\n    color: var(--color-input-text);\n    opacity: var(--opacity-placeholder);\n}\n\n/* 3. Explicitly style the BUTTON */\nbutton.submit-btn {\n    transition: background-color 0.2s ease;\n    font-family: var(--font-family); /* Force font inheritance */\n    font-weight: var(--font-weight-bold);\n    color: var(--color-submit-btn-text); /* Ensure text color is applied */\n}\nbutton.submit-btn:hover {\n    background-color: var(--color-submit-btn-hover-bg);\n}\n\n/* 4. Completely new CHECKBOX styling for n8n's structure */\n/* Target the label that wraps the checkbox and text */\nlabel.multiselect-label {\n    display: flex;\n    align-items: center;\n    cursor: pointer;\n    position: relative;\n}\n/* Target the text part of the label */\nlabel.multiselect-label span {\n    padding-left: 12px; /* Space between box and text */\n}\n/* Hide the default browser checkbox */\nlabel.multiselect-label input[type=\"checkbox\"] {\n    appearance: none;\n    -webkit-appearance: none;\n    position: absolute;\n    opacity: 0;\n    cursor: pointer;\n    height: 0;\n    width: 0;\n}\n/* Create a custom checkbox box using a pseudo-element on the text span */\nlabel.multiselect-label span::before {\n    content: '';\n    position: absolute;\n    left: 0;\n    top: 50%;\n    transform: translateY(-50%);\n    width: var(--checkbox-size);\n    height: var(--checkbox-size);\n    background-color: var(--color-input-bg);\n    border: 1px solid var(--color-input-border);\n    border-radius: 4px;\n    transition: all 0.2s ease;\n}\n/* Style the custom box when the (hidden) checkbox is checked */\nlabel.multiselect-label input[type=\"checkbox\"]:checked + span::before {\n    background-color: var(--color-focus-border);\n    border-color: var(--color-focus-border);\n    /* Add a checkmark using an embedded SVG */\n    background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\");\n    background-position: center;\n    background-repeat: no-repeat;\n}\n/* Add a focus ring for accessibility */\nlabel.multiselect-label input[type=\"checkbox\"]:focus-visible + span::before {\n    outline: 2px solid var(--color-focus-border);\n    outline-offset: 2px;\n}","buttonLabel":"Create Prompt","appendAttribution":false},"formTitle":"AI Prompt Maker","formFields":{"values":[{"fieldType":"textarea","fieldLabel":"What prompt do you want ?","placeholder":"Talk about the goal of the prompt, any related context and any input format (e.g. input variables). You can also provide output examples.","requiredField":true},{"fieldType":"dropdown","fieldLabel":"Select Sections","multiselect":true,"fieldOptions":{"values":[{"option":"System Instructions"},{"option":"Examples"},{"option":"Inputs"}]}}]},"responseMode":"lastNode","formDescription":"Let AI create your perfect prompt.."},"typeVersion":2.2},{"id":"f036c843-4723-47e8-8eb0-3b5ec639e0c6","name":"Generate Prompt","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[-680,40],"parameters":{"text":"={{ $json['What prompt do you want ?'] }}","batching":{},"messages":{"messageValues":[{"message":"=You are an expert prompt generator for AI language models. This is what you output :\n{{ $json['Select Sections'].includes('System Instructions') ? \"\\n<role>\\nThe role that the AI should take (for the system prompt)\\n</role>\\n\" : \"\" }}\n<instructions>\n<goal>\nThe goal or task at hand\n</goal>\n\n<context>\nAll the context for the task or goal\n</context>\n{{ $json['Select Sections'].includes('Examples') ? \"\\n<examples>\\n<example_1>\\n<inputs>\\n<...>\\n...\\n</...>\\n</inputs>\\n<output>\\n...\\n</output>\\n</example_1>\\n...\\n</examples>\\n\" : \"\" }}\n\n<output_format>\n...\n</output_format>\n</instructions>{{ $json['Select Sections'].includes('Inputs') ? \n\"\\n\\n<inputs>\\n<[input_tag]>\\n[USE FILLER TEXT TO EXPLAIN WHAT TO PUT HERE]\\n</[input_tag]>\\n...\\n</inputs>\" : \"\" }}"}]},"promptType":"define"},"typeVersion":1.7},{"id":"3292f7f6-cd6a-47d8-a58a-e57d2bf61871","name":"Go to Site","type":"n8n-nodes-base.form","position":[-20,40],"webhookId":"65b26fc2-22c6-424f-85c9-f91502a02d72","parameters":{"operation":"completion","redirectUrl":"={{ $env.WEBHOOK_URL + ($env.N8N_ENDPOINT_WEBHOOK ?? \"webhook\") }}/prompt/result?prompt={{ $json.text.urlEncode() }}","respondWith":"redirect"},"typeVersion":1},{"id":"f0949115-9ea1-4507-963f-b75c9d5bfb7e","name":"Get Prompt Webpage","type":"n8n-nodes-base.webhook","position":[-1180,1040],"webhookId":"99651075-3d83-4d67-963f-06c7a5e6a3d3","parameters":{"path":"prompt/result","options":{},"responseMode":"responseNode"},"typeVersion":2},{"id":"294a6d6c-2312-4c3e-91b0-e1e03ab1fea0","name":"Display Webpage","type":"n8n-nodes-base.respondToWebhook","position":[-620,1040],"parameters":{"options":{"responseHeaders":{"entries":[{"name":"Content-Type","value":"text/html; charset=UTF-8"}]}},"respondWith":"text","responseBody":"=<!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>Prompt Viewer</title>\n    \n    <!-- Fonts from Google Fonts for a professional look -->\n    <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n    <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n    <link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&family=Fira+Code:wght@400;500&display=swap\" rel=\"stylesheet\">\n\n    <style>\n        /* --- Reset and Base Styles --- */\n        :root {\n            --bg-color: #1a1b26;\n            --card-bg: #24283b;\n            --code-bg: #1e202e; /* Slightly different bg for the code block */\n            --text-color: #c0caf5;\n            --header-color: #ffffff;\n            --accent-color: #7aa2f7;\n            --accent-hover: #9eceff;\n            --success-color: #9ece6a;\n            --border-color: #414868;\n            --shadow-color: rgba(0, 0, 0, 0.3);\n        }\n\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n        body {\n            font-family: 'Inter', sans-serif;\n            background-color: var(--bg-color);\n            color: var(--text-color);\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            min-height: 100vh;\n            padding: 2rem;\n            background-image: radial-gradient(circle at 1px 1px, rgba(255,255,255,0.05) 1px, transparent 0);\n            background-size: 20px 20px;\n        }\n\n        /* --- Main Container --- */\n        .container {\n            width: 100%;\n            max-width: 900px;\n            background-color: var(--card-bg);\n            border-radius: 12px;\n            border: 1px solid var(--border-color);\n            box-shadow: 0 10px 30px var(--shadow-color);\n            overflow: hidden;\n            display: flex;\n            flex-direction: column;\n        }\n\n        /* --- Card Header --- */\n        .header {\n            padding: 1.5rem 2rem;\n            border-bottom: 1px solid var(--border-color);\n        }\n\n        .header h1 {\n            font-size: 1.8rem;\n            font-weight: 700;\n            color: var(--header-color);\n            margin-bottom: 0.25rem;\n        }\n\n        .header p {\n            font-size: 1rem;\n            color: var(--text-color);\n        }\n\n        /* --- Prompt Content --- */\n        .prompt-content {\n            position: relative;\n            padding: 2rem;\n            padding-top: 4.5rem; /* Space for the copy button */\n        }\n\n        /* --- Markdown-style Code Block --- */\n        pre {\n            background-color: var(--code-bg);\n            border: 1px solid var(--border-color);\n            border-radius: 8px;\n            padding: 1.5rem;\n            font-family: 'Fira Code', monospace;\n            font-size: 0.9rem;\n            line-height: 1.6;\n            color: var(--text-color);\n            \n            /* KEY FOR TEXT WRAPPING */\n            white-space: pre-wrap;\n            overflow-wrap: break-word;\n        }\n\n        /* --- Copy Button --- */\n        .copy-button {\n            position: absolute;\n            top: 1.5rem;\n            right: 1.5rem;\n            background-color: var(--border-color);\n            color: var(--text-color);\n            border: none;\n            border-radius: 6px;\n            padding: 0.6rem 1rem;\n            font-family: 'Inter', sans-serif;\n            font-weight: 500;\n            font-size: 0.9rem;\n            cursor: pointer;\n            display: flex;\n            align-items: center;\n            gap: 0.5rem;\n            transition: background-color 0.2s ease, color 0.2s ease;\n            z-index: 10; /* Ensure it's above the <pre> block */\n        }\n\n        .copy-button:hover {\n            background-color: var(--accent-color);\n            color: var(--header-color);\n        }\n\n        .copy-button.copied {\n            background-color: var(--success-color);\n            color: var(--bg-color);\n        }\n\n        .copy-button svg {\n            width: 16px;\n            height: 16px;\n            stroke-width: 2;\n        }\n\n        /* --- Footer --- */\n        .footer {\n            text-align: center;\n            padding: 1rem;\n            font-size: 0.8rem;\n            color: var(--border-color);\n            border-top: 1px solid var(--border-color);\n        }\n\n        .footer a {\n            color: var(--accent-color);\n            text-decoration: none;\n            transition: color 0.2s ease;\n        }\n\n        .footer a:hover {\n            color: var(--accent-hover);\n        }\n    </style>\n</head>\n<body>\n\n    <div class=\"container\">\n        <header class=\"header\">\n            <h1>Your Custom Prompt</h1>\n            <p>Use the button below to copy the entire prompt to your clipboard.</p>\n        </header>\n\n        <main class=\"prompt-content\">\n            <button id=\"copy-btn\" class=\"copy-button\">\n                <svg id=\"copy-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path></svg>\n                <svg id=\"check-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: none;\"><polyline points=\"20 6 9 17 4 12\"></polyline></svg>\n                <span id=\"copy-text\">Copy</span>\n            </button>\n\n            <!-- \n                This block is now a simple placeholder.\n                We will populate it using JavaScript to ensure the prompt text,\n                including all its tags, is displayed literally.\n            -->\n            <pre><code id=\"prompt-display-code\"></code></pre>\n        </main>\n        \n        <footer class=\"footer\">\n            <p>Generated with ❤️ by <a href=\"https://n8n.partnerlinks.io/g3yh568uv03t\" target=\"_blank\" rel=\"noopener noreferrer\">n8n</a></p>\n        </footer>\n    </div>\n\n    <!-- \n        This is the most important part for perfect copy/display.\n        We embed the raw prompt data into a JavaScript variable.\n        JSON.stringify() escapes any special characters, making it a valid JS string.\n    -->\n    <script>\n        const rawPromptToCopy = {{ JSON.stringify($json.query.prompt) }};\n    </script>\n\n    <script>\n        document.addEventListener('DOMContentLoaded', () => {\n            // --- Part 1: Display the prompt safely ---\n            const promptDisplayElement = document.getElementById('prompt-display-code');\n            if (promptDisplayElement) {\n                // Using .textContent is the key. It tells the browser to treat\n                // the string as plain text, not as HTML. This automatically\n                // displays '<' and '>' characters correctly.\n                promptDisplayElement.textContent = rawPromptToCopy;\n            }\n\n            // --- Part 2: Handle the copy functionality ---\n            const copyButton = document.getElementById('copy-btn');\n            const copyText = document.getElementById('copy-text');\n            const copyIcon = document.getElementById('copy-icon');\n            const checkIcon = document.getElementById('check-icon');\n\n            copyButton.addEventListener('click', () => {\n                // The clipboard API copies the raw, unmodified string.\n                navigator.clipboard.writeText(rawPromptToCopy)\n                    .then(() => {\n                        // Success feedback\n                        copyText.textContent = 'Copied!';\n                        copyButton.classList.add('copied');\n                        copyIcon.style.display = 'none';\n                        checkIcon.style.display = 'inline-block';\n\n                        // Reset the button after 2 seconds\n                        setTimeout(() => {\n                            copyText.textContent = 'Copy';\n                            copyButton.classList.remove('copied');\n                            copyIcon.style.display = 'inline-block';\n                            checkIcon.style.display = 'none';\n                        }, 2000);\n                    })\n                    .catch(err => {\n                        console.error('Failed to copy: ', err);\n                        copyText.textContent = 'Error';\n                        setTimeout(() => { copyText.textContent = 'Copy'; }, 2000);\n                    });\n            });\n        });\n    </script>\n\n</body>\n</html>"},"typeVersion":1.1},{"id":"29733433-2142-4177-9f5f-9a05de1c5436","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-2180,-440],"parameters":{"color":6,"width":760,"content":"## Workflow Overview\nThis n8n workflow provides a user-friendly web interface to generate structured prompts for Large Language Models (LLMs) using Google Gemini. Users can describe their desired prompt, specify which sections (e.g., System Instructions, Examples, Inputs) they want included, and the workflow will leverage AI to create a well-formatted prompt. The generated prompt is then displayed on a dedicated webpage, ready to be copied."},"typeVersion":1},{"id":"bbbb0e8a-ccc4-469e-bb54-e7f1d298071f","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-1380,-440],"parameters":{"color":7,"width":500,"height":640,"content":"### 1. Prompt Request (Form Trigger)\n*   **Purpose:** Serves as the public-facing entry point for the workflow. It presents a customizable web form to collect user requirements for the AI prompt.\n*   **Configuration:**\n    *   **Form Title:** \"AI Prompt Maker\"\n    *   **Form Description:** \"Let AI create your perfect prompt..\"\n    *   **Form Fields:**\n        *   \"What prompt do you want ?\": A required textarea for the user to describe the prompt's goal, context, input format, and examples.\n        *   \"Select Sections\": A multi-select dropdown allowing users to choose whether to include \"System Instructions\", \"Examples\", and \"Inputs\" sections in the generated prompt.\n    *   **Webhook Path:** `/prompt-maker`\n    *   **Custom CSS:** Includes extensive CSS to style the form for a modern and cherent appearance with the webage.\n*   **Logic:** Upon form submission, it captures the user's input and passes it to the next node for prompt generation."},"typeVersion":1},{"id":"aa874d0f-3551-48f3-9926-ae556d2c2c73","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-860,-300],"parameters":{"color":7,"width":620,"height":500,"content":"### 2. Generate Prompt (LLM Chain)\n*   **Purpose:** This node acts as the orchestrator for the prompt generation. It constructs a meta-prompt based on user selections and sends it to the connected LLM.\n*   **Configuration:**\n    *   **Text:** Uses the user's input from the \"What prompt do you want ?\" field.\n    *   **Messages:** Contains a system message that instructs the LLM (Gemini) to act as an expert prompt generator. This message dynamically includes placeholders for <role>, <examples>, and <inputs> based on the user's \"Select Sections\" choices. The core structure includes <goal>, <context>, and <output_format>.\n*   **Logic:** It dynamically builds the prompt for the LLM, ensuring the generated output adheres to a specific, structured format (e.g., using XML-like tags for sections)."},"typeVersion":1},{"id":"d153908d-ac4c-4af1-ba29-ac468142aece","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-740,220],"parameters":{"color":7,"width":400,"height":380,"content":"### 3. Gemini 2.5 Flash (Google Gemini Chat)\n*   **Purpose:** This is the Large Language Model (LLM) that performs the actual prompt generation.\n*   **Configuration:**\n    *   **Model Name:** `models/gemini-2.5-flash` (a fast and cost-effective model, but smart enough to build prompts).\n    *   **Temperature:** `0` (ensures deterministic and consistent output, ideal for structured generation).\n*   **Logic:** Receives the meta-prompt from \"Generate Prompt\" and returns the newly created, structured AI prompt."},"typeVersion":1},{"id":"88ca6809-5621-48c8-ba70-171508137a1c","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-220,-300],"parameters":{"color":7,"width":480,"height":500,"content":"### 4. Go to Site (Form)\n*   **Purpose:** After the prompt is generated, this node redirects the user's browser to a new URL where the generated prompt will be displayed.\n*   **Configuration:**\n    *   **Respond With:** `redirect`\n    *   **Redirect URL:** Dynamically constructed using n8n environment variables (`WEBHOOK_URL`, `N8N_ENDPOINT_WEBHOOK`) and the URL-encoded generated prompt (`$json.text.urlEncode()`). This URL points to the \"Get Prompt Webpage\" webhook.\n*   **Logic:** Ensures a seamless transition from the form submission to the prompt display page.\n"},"typeVersion":1},{"id":"0fddd040-5e20-4bb0-be61-ac4cf8772548","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-1380,640],"parameters":{"color":7,"width":520,"height":560,"content":"### 5. Get Prompt Webpage (Webhook)\n*   **Purpose:** This webhook serves as the target for the redirect from \"Go to Site\". It receives the generated prompt as a URL query parameter.\n*   **Configuration:**\n    *   **Path:** `/prompt/result`\n    *   **Response Mode:** `Using Respond to Webhook Node` (delegates the response generation to the next node).\n*   **Logic:** Listens for incoming requests to the `/prompt/result` path and extracts the `prompt` query parameter."},"typeVersion":1},{"id":"19ce7d51-ad08-491e-bb1a-4ad7d4348130","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[-840,640],"parameters":{"color":7,"width":600,"height":560,"content":"### 6. Display Webpage (Respond to Webhook)\n*   **Purpose:** Renders a custom HTML page to beautifully display the generated prompt and provide a \"copy to clipboard\" functionality.\n*   **Configuration:**\n    *   **Respond With:** `text`\n    *   **Response Body:** Contains a complete HTML document with embedded CSS for styling and JavaScript for handling the prompt display and copy functionality.\n    *   **Content-Type Header:** `text/html; charset=UTF-8`\n*   **Logic:**\n    *   The HTML page is designed with a dark theme and a code block (<pre><code>) to present the prompt.\n    *   A JavaScript snippet safely embeds the received prompt (from `$json.query.prompt`) into a variable using `JSON.stringify()` to handle special characters.\n    *   Another JavaScript snippet then populates the <code> block with the prompt using `textContent` (to display it literally, including angle brackets) and implements the copy-to-clipboard feature."},"typeVersion":1},{"id":"f21a289d-1665-4888-9a4c-9c59d390375c","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[-2180,-260],"parameters":{"color":5,"width":760,"height":680,"content":"## Required Credentials\n*   **Google Palm API:** This workflow requires an n8n credential for the Google Palm API (which supports Gemini models) to connect to the Google Gemini service. The example credential name is \"IA2S\".\n\n## Setup & Configuration\n\n1.  **Import the Workflow:**\n    *   Copy the provided workflow JSON.\n    *   In your n8n instance, go to \"Workflows\" and click \"New\".\n    *   Click the \"Import from JSON\" button and paste the JSON.\n\n2.  **Configure Google Palm API Credential:**\n    *   Ensure you have an active Google Gemini API credential configured in n8n.\n    *   If not, open the \"Gemini 2.5 Flash\" node, click \"New Credential\", and follow the instructions to set it up (you'll need an API key from Google AI Studio).\n\n3.  **Environment Variables (Optional but Recommended):**\n    *   This workflow uses `WEBHOOK_URL` and `N8N_ENDPOINT_WEBHOOK` environment variables for constructing the redirect URL. They will be in red, but this is normal.\n    *   `WEBHOOK_URL`: This is usually automatically set by n8n to your instance's base URL.\n    *   `N8N_ENDPOINT_WEBHOOK`: If your n8n instance is behind a reverse proxy or has a custom webhook path (e.g., `https://yourdomain.com/custom-path`), you might need to set this environment variable in your n8n configuration. By default, n8n's webhook path is `webhook`.\n\n4.  **Activate the Workflow:**\n    *   After importing and configuring credentials, activate the workflow by toggling the \"Active\" switch in the top right corner of the workflow editor (To make the webhook accessible)."},"typeVersion":1},{"id":"dc720dcd-784e-4368-9b11-f2115deaf215","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[-2180,440],"parameters":{"color":4,"width":760,"height":500,"content":"## Usage\n\n1.  **Access the Prompt Maker Form:**\n    *   Once the workflow is active, navigate to the \"Prompt Request\" node.\n    *   Copy the \"Public URL\" displayed in the node's settings (e.g., `https://YOUR_N8N_URL/form/prompt-maker`).\n    *   Open this URL in your web browser.\n\n2.  **Fill Out the Form:**\n    *   Enter a detailed description of the prompt you want to create in the \"What prompt do you want ?\" textarea.\n    *   Select the desired sections (System Instructions, Examples, Inputs) using the \"Select Sections\" options.\n\n3.  **Generate and View Prompt:**\n    *   Click the \"Create Prompt\" button.\n    *   The workflow will execute, generate the prompt, and redirect your browser to a new page displaying the generated prompt.\n\n4.  **Copy the Prompt:**\n    *   On the prompt display page, click the \"Copy\" button to copy the entire generated prompt to your clipboard."},"typeVersion":1},{"id":"7cd9e2ea-5e68-4b1d-a5b1-da17bb1063d8","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[-2180,960],"parameters":{"color":3,"width":760,"height":520,"content":"## Troubleshooting\n\n*   **Form Not Loading (404 Error):**\n    *   Ensure the workflow is active.\n    *   Verify the \"Public URL\" for the \"Prompt Request\" node is correct and accessible.\n    *   Check your n8n instance's `N8N_ENDPOINT_WEBHOOK` environment variable if you are using a custom webhook path or reverse proxy.\n*   **Prompt Generation Fails (LLM Error):**\n    *   Check the n8n execution logs for the \"Generate Prompt\" and \"Gemini 2.5 Flash\" nodes.\n    *   Verify your Google Palm API credential is valid and has sufficient permissions.\n    *   Ensure your Google Gemini API key is correctly configured and not expired.\n    *   Check for API rate limits on the Google Gemini side.\n*   **Redirect Not Working / Blank Page:**\n    *   Confirm the workflow is active.\n    *   Verify that the `WEBHOOK_URL` and `N8N_ENDPOINT_WEBHOOK` environment variables are correctly set in your n8n instance. The redirect URL must be valid and point back to your n8n instance.\n    *   Check the execution logs for the \"Go to Site\" and \"Get Prompt Webpage\" nodes for any errors.\n*   **Prompt Not Displaying Correctly on Page:**\n    *   While unlikely due to the `JSON.stringify` and `textContent` usage, very unusual characters in the generated prompt might cause rendering issues.\n    *   Ensure your browser's JavaScript is enabled."},"typeVersion":1},{"id":"c3a2c66f-b065-4992-a902-c6b6e86f609d","name":"Sticky Note10","type":"n8n-nodes-base.stickyNote","position":[-200,400],"parameters":{"width":540,"height":800,"content":"## Was this helpful? Let me know!\n\nI really hope this template helped you create amazing AI prompts. Your feedback is incredibly valuable and helps me create better resources for the n8n community.\n\n### **Share Your Thoughts & Ideas**\n\nWhether you have a suggestion, found a typo, or just want to say thanks, I'd love to hear from you!\nHere's a simple n8n form built for this purpose:\n\n#### ➡️ **[Click here to give feedback](https://api.ia2s.app/form/templates/feedback?template=AI%20Prompt%20Maker)**\n\n### **Ready to Build Something Great?**\n\nIf you're looking to take your n8n skills or business automation to the next level, I can help.\n\n**🎓 n8n Coaching:** Want to become an n8n pro? I offer one-on-one coaching sessions to help you master workflows, tackle specific problems, and build with confidence.\n#### ➡️ **[Book a Coaching Session](https://api.ia2s.app/form/templates/coaching?template=AI%20Prompt%20Maker)**\n\n**💼 n8n Consulting:** Have a complex project, an integration challenge, or need a custom workflow built for your business? Let's work together to create a powerful automation solution.\n#### ➡️ **[Inquire About Consulting Services](https://api.ia2s.app/form/templates/consulting?template=AI%20Prompt%20Maker)**\n\n---\n\nHappy Automating!\nLucas Peyrin"},"typeVersion":1}],"connections":{"Prompt Request":{"main":[[{"node":"Generate Prompt","type":"main","index":0}]]},"Generate Prompt":{"main":[[{"node":"Go to Site","type":"main","index":0}]]},"Gemini 2.5 Flash":{"ai_languageModel":[[{"node":"Generate Prompt","type":"ai_languageModel","index":0}]]},"Get Prompt Webpage":{"main":[[{"node":"Display Webpage","type":"main","index":0}]]}}}


name: Summarize youtube videos from transcript for social media
author_name: Evoort Solutions
author_username: evoortsolutions
categories: []
created_at: 2025-06-25T09:30:08.053Z
updated_at: 2025-06-25T09:30:08.053Z
url: https://n8n.io/workflows/5292
scraped_at: 2025-07-06 21:16:30
description:
  🎥 YouTube Video Summarizer for Social Media

  Turn any YouTube video into a short, structured summary using AI — perfect for content creators, marketers, or social media managers.

  🔧 What We Built

  We created a no-code automation in n8n that:

  Accepts a YouTube Video ID via a form
  Fetches the video transcript using an external API
  Summarizes the transcript using AI (Google Gemini)
  Automatically saves the summary to Google Docs for team use

  🧩 Flow Overview

  | Step | Description |
  |------|-------------|
  | ✅ Form Trigger | User submits a YouTube video ID using an n8n form |
  | 🔁 Set Node | Maps the YouTube video ID for use in the API request |
  | 🌐 HTTP Request (External API) | Calls the YouTube Transcriptor AI API via RapidAPI to fetch transcript |
  | 🧹 Formatter (Code Node) | Joins transcript lines into a readable text block |
  | 🧠 AI Agent + Google Gemini (via Langchain) | Summarizes the full transcript into bullet points and tone |
  | 🧽 Optimizer (Code Node) | Extracts just the summary from the AI response |
  | 📝 Google Docs Node | Appends the clean summary to a shared Google Doc |

  🌍 Real-World Problem Solved

  ❌ The Challenge

  Creators and marketers waste hours watching full videos just to extract the key points.
  Manual summarization is inconsistent, repetitive, and delays content planning.

  ✅ Our Solution

  ⏱️ Reduces time spent watching videos
  🧠 AI-powered summaries keep tone consistent and structured
  📄 Auto-sync with Google Docs makes summaries instantly available for teams

  🔥 Bonus: This uses the YouTube Transcriptor AI API, so no need to manually scrape captions or use browser extensions.

  🚀 Ideal Use Cases

  Repurpose YouTube content into Instagram Reels, LinkedIn posts, or blog content
  Build a video summary library for your editorial team
  Quickly extract talking points from podcast episodes

  🛠️ Tech Stack

  n8n** – workflow automation engine  
  YouTube Transcriptor AI API** – via RapidAPI  
  Google Gemini (via Langchain)** – AI summarization  
  Google Docs** – stores the final summary  
  JavaScript nodes** – custom text parsing & formatting

  💡 Want to customize it? Add Slack, Airtable, Notion, or Tweet auto-posting to expand the flow.

  Create your free n8n account and set up the workflow in just a few minutes using the link below:

  👉 Start Automating with n8n

  Save time, stay consistent, and grow your LinkedIn presence effortlessly!

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.googleDocs","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatGoogleGemini"]

workflow_json:
  {"id":"jCs5Yhd71bxr5Ktc","meta":{"instanceId":"60c025075753afcab9f803964b4caaca9402f435deb4efafbb8e3b93b54d8752","templateCredsSetupCompleted":true},"name":"Summarize youtube videos from transcript for social media","tags":[{"id":"QXtLNWbsCSABOTNm","name":"Digital Marketing","createdAt":"2025-05-29T11:14:57.099Z","updatedAt":"2025-05-29T11:14:57.099Z"}],"nodes":[{"id":"ae2d87c7-870b-4c62-9f25-6454772cb41d","name":"On form submission","type":"n8n-nodes-base.formTrigger","position":[0,0],"webhookId":"10986afd-5943-4e72-9078-074e5191d7ac","parameters":{"options":{},"formTitle":"summarize youtube videos from transcript for social media","formFields":{"values":[{"fieldLabel":"Yt Video Id","placeholder":"abc123","requiredField":true}]}},"typeVersion":2.2},{"id":"bada944a-2453-451b-ade5-1ff2ff6c6377","name":"AI Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[880,0],"parameters":{"options":{"systemMessage":"You are a helpful assistant that summarizes YouTube video transcripts.\n\nHere is the full transcript of a video:\nPlease provide a concise summary of the video in natural language, covering the main points, topics, and tone.\n\nFormat the output as:\n\n---\n🎬 **Summary**:\n- [Main idea 1]\n- [Main idea 2]\n- [Optional tone, style, or genre]\n---\n"}},"typeVersion":2},{"id":"15389a01-0f9f-43b2-821f-b0420e3095ac","name":"Google Gemini Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[940,220],"parameters":{"options":{},"modelName":"models/gemini-2.0-flash"},"credentials":{"googlePalmApi":{"id":"Xpxt71RcelLLFyE3","name":"Google Gemini(PaLM) Api account"}},"typeVersion":1},{"id":"fa5c983f-6a44-47fc-be1c-63ca9df9a94b","name":"Google Docs","type":"n8n-nodes-base.googleDocs","position":[1500,0],"parameters":{"actionsUi":{"actionFields":[{"text":"={{ $json.summary }}","action":"insert"}]},"operation":"update","documentURL":"","authentication":"serviceAccount"},"credentials":{"googleApi":{"id":"Rt0RWApx8PL9t0RF","name":"Google Docs account"}},"typeVersion":2},{"id":"8786afdb-097c-4b54-9055-2ad41a988ef3","name":"Mapper","type":"n8n-nodes-base.set","position":[220,0],"parameters":{"options":{},"assignments":{"assignments":[{"id":"a2486ac7-c29c-419e-9cfc-753701723510","name":"ytVideoId","type":"string","value":"={{ $json[\"Yt Video Id\"] }}"}]}},"typeVersion":3.4},{"id":"778ade7e-951f-416c-b2d5-c91b0688ab8d","name":"Youtube Transcriptor","type":"n8n-nodes-base.httpRequest","position":[440,0],"parameters":{"url":"https://youtube-transcriptor-ai.p.rapidapi.com/yt/index.php","method":"POST","options":{},"sendBody":true,"contentType":"multipart-form-data","sendHeaders":true,"bodyParameters":{"parameters":[{"name":"yt_video_id","value":"={{ $json.ytVideoId }}"}]},"headerParameters":{"parameters":[{"name":"x-rapidapi-host"},{"name":"x-rapidapi-key"}]}},"typeVersion":4.2},{"id":"00fc4b62-b1fc-44c5-b7ce-5b2950571b9c","name":"Formator","type":"n8n-nodes-base.code","position":[660,0],"parameters":{"jsCode":"const transcript = \n$input.first().json.tracks[0].transcript\nif (!Array.isArray(transcript) || transcript.length === 0) {\n  return [{\n    json: {\n      chatInput: \"Transcript not available or invalid video ID.\"\n    }\n  }];\n}\n\n// Join all transcript lines into a single string\nconst transcriptText = transcript.map(t => t.text).join(' ');\n\n// Return as chatInput\nreturn [{\n  json: {\n    chatInput: transcriptText\n  }\n}];"},"typeVersion":2},{"id":"53c8c1d4-5250-4212-adde-bfd1a2a53b04","name":"Optimizer","type":"n8n-nodes-base.code","position":[1240,0],"parameters":{"jsCode":"const inputText = $input.first().json.output;\n\nfunction getFieldValue(text, field) {\n  // Updated to stop at \"---\" or end of string, instead of a non-whitespace line\n  const regex = new RegExp(`${field}:\\\\s*([\\\\s\\\\S]*?)(?=\\\\n---|$)`, 'i');\n  const match = text.match(regex);\n  return match ? match[1].trim() : '';\n}\n\nconst summary = getFieldValue(inputText, '🎬 \\\\*\\\\*Summary\\\\*\\\\*');\n\nreturn [{\n  json: {\n    summary\n  }\n}];\n"},"typeVersion":2}],"active":false,"settings":{"executionOrder":"v1"},"versionId":"cb6a2956-019a-492a-881f-b5a179ac34d3","connections":{"Mapper":{"main":[[{"node":"Youtube Transcriptor","type":"main","index":0}]]},"AI Agent":{"main":[[{"node":"Optimizer","type":"main","index":0}]]},"Formator":{"main":[[{"node":"AI Agent","type":"main","index":0}]]},"Optimizer":{"main":[[{"node":"Google Docs","type":"main","index":0}]]},"On form submission":{"main":[[{"node":"Mapper","type":"main","index":0}]]},"Youtube Transcriptor":{"main":[[{"node":"Formator","type":"main","index":0}]]},"Google Gemini Chat Model":{"ai_languageModel":[[{"node":"AI Agent","type":"ai_languageModel","index":0}]]}}}


name: Audio-to-Trello Task Bot
author_name: dirogar
author_username: max
categories: []
created_at: 2025-06-25T09:39:01.975Z
updated_at: 2025-06-25T09:39:01.975Z
url: https://n8n.io/workflows/5293
scraped_at: 2025-07-06 21:16:30
description:
  Telegram Tasker Bot — это сценарий n8n, который принимает голосовые сообщения в Telegram, автоматически превращает их в текст, извлекает из него ключевые поля задачи и создаёт карточку в нужной доске Trello. Пользователь просто говорит задачу — бот сам оформляет её и присылает ссылку на готовую карточку. 

  Для использования вам потребуется telegram bot.
  Его можно создать через бота BotFather

  Так же понадобится доступ к API chatgpt - он используется только для транскрибции аудио в речь. Вы можете использовать любой другой сервис, по вашему выбору.

  И аккаунт в trello, с доступом к API.

  !Внимание!
  ID доски в trello можно взять из url
  ID столбца на доске трелло можно взять через инструменты разработчика (по крайней мере я так получал эти данные)

nodes_used:
  ["n8n-nodes-base.trello","n8n-nodes-base.telegram","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.lmChatGroq"]

workflow_json:
  {"id":"ao9ZV2CMJSI4HjOc","meta":{"instanceId":"7904764d90c74cae7474cd6ee305fceb7aa965b02657b71728e2e1b3d47404b5","templateCredsSetupCompleted":true},"name":"Telegram tasker bot","tags":[],"nodes":[{"id":"6e003a17-2caa-45d3-8ba6-6ff1fdb0c0fe","name":"Telegram Trigger","type":"n8n-nodes-base.telegramTrigger","position":[700,160],"webhookId":"f914f76c-c9e5-4ca8-a7ca-2e511e091cbe","parameters":{"updates":["message"],"additionalFields":{}},"credentials":{"telegramApi":{"id":"lY4w1OHVg8w6qZvx","name":"Telegram account"}},"typeVersion":1},{"id":"61bd5cc5-487f-48f2-8b39-2291ae7c5374","name":"Create Trello Card","type":"n8n-nodes-base.trello","maxTries":5,"position":[1980,160],"parameters":{"name":"={{ $json.name }}","listId":"64a39a922fd043526af50b36","description":"={{ $json.description }}","additionalFields":{}},"credentials":{"trelloApi":{"id":"ef5uqwZzflwiFeHR","name":"Trello account"}},"retryOnFail":true,"typeVersion":1},{"id":"48d69373-c391-4be0-adb5-776088e500ba","name":"Groq Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatGroq","position":[1320,360],"parameters":{"options":{}},"credentials":{"groqApi":{"id":"OpI4WIyHLWBXJJlE","name":"Groq account"}},"typeVersion":1},{"id":"1696acb6-0917-42d6-81d8-e8666a5973a0","name":"AI Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[1380,160],"parameters":{"text":"={{ $json.text }}","options":{"systemMessage":"=Сегодняшняя дата: {{$today}}   (формат YYYY-MM-DD)\n\nТы — ассистент-парсер. Получаешь произвольный текст задачи и возвращаешь\nОДНУ строку JSON ровно в таком виде:\n{\"name\":\"…\",\"description\":\"…\",\"date_start\":\"…\",\"date_end\":\"…\"}\n\nПравила\n1. name — до 8-10 слов. Если текста мало, пиши \"Общая задача\".\n2. description — исходный текст целиком.\n3. Даты:\n   ▸ Любые даты выводи числом в формате YYYY-MM-DD.  \n   ▸ Относительные выражения считай так:\n       «сегодня»   → {{$today}}\n       «завтра»    → {{$today+1}}\n       «послезавтра» → {{$today+2}}\n       «через N дней» → {{$today+N}}\n   ▸ Если указан диапазон («с 1 по 5 июля») — date_start = первая дата,\n     date_end = последняя.  \n   ▸ Одна дата? Запиши её в date_start, а date_end оставь \"\".\n   ▸ Нет дат — обе строки пустые.\n4. Никакого текста вне JSON, никаких переводов строк или экранирования.\n\nПримеры  \nВход: «Сделать завтра ремонт на кухне»  \nВыход: {\"name\":\"Ремонт на кухне\",\"description\":\"Сделать завтра ремонт на кухне\",\"date_start\":\"{{$today+1}}\",\"date_end\":\"\"}\n\nВход: «Отчёт с 1 по 5 июля»  \nВыход: {\"name\":\"Отчёт за 1-5 июля\",\"description\":\"Отчёт с 1 по 5 июля\",\"date_start\":\"2025-07-01\",\"date_end\":\"2025-07-05\"}\n"},"promptType":"define"},"typeVersion":2},{"id":"04dcbefa-57ac-4ad5-a826-db5092dbc227","name":"Simple Memory","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[1480,360],"parameters":{"sessionKey":"={{ $('Telegram Trigger').item.json.message.from.username }}","sessionIdType":"customKey"},"typeVersion":1.3},{"id":"85f2cf10-c37e-409f-acbc-86a3e0c6eadc","name":"Stop and Error","type":"n8n-nodes-base.stopAndError","position":[2640,320],"parameters":{"errorMessage":"Task creation failed"},"typeVersion":1},{"id":"0e58a91d-779b-46a4-ae16-fc106c882c41","name":"Send task message","type":"n8n-nodes-base.telegram","position":[2420,140],"webhookId":"8957795d-bec0-4cb6-be9a-4b77ef56ac07","parameters":{"text":"=Создана задача:  {{ $json.name }}\nСсылка на задачу: {{ $('Create Trello Card').item.json.url }}","chatId":"={{ $('Telegram Trigger').item.json.message.chat.id }}","additionalFields":{"appendAttribution":false,"reply_to_message_id":"={{ $('Telegram Trigger').item.json.message.message_id }}","disable_notification":false}},"credentials":{"telegramApi":{"id":"lY4w1OHVg8w6qZvx","name":"Telegram account"}},"typeVersion":1.2},{"id":"3eecd42f-23e3-466e-9e1a-e34f5f48fd99","name":"Send error message","type":"n8n-nodes-base.telegram","position":[2420,320],"webhookId":"8957795d-bec0-4cb6-be9a-4b77ef56ac07","parameters":{"text":"=Ошибка при создании задачи","chatId":"={{ $('Telegram Trigger').item.json.message.chat.id }}","additionalFields":{"appendAttribution":false,"reply_to_message_id":"={{ $('Telegram Trigger').item.json.message.message_id }}","disable_notification":false}},"credentials":{"telegramApi":{"id":"lY4w1OHVg8w6qZvx","name":"Telegram account"}},"typeVersion":1.2},{"id":"58a1cde2-b9a9-445a-ba7e-686b50b1646b","name":"If trello card id exists","type":"n8n-nodes-base.if","position":[2180,160],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"a5cef062-5441-4a6c-a3ce-f9852844701b","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.id }}","rightValue":""}]}},"typeVersion":2.2},{"id":"60f66d20-165c-4eb6-8314-e07a0a9d602c","name":"Parse to json","type":"n8n-nodes-base.code","position":[1780,160],"parameters":{"jsCode":"const data = JSON.parse($input.first().json.output);   // text — ответ модели\nreturn [{ json: data }];\n"},"typeVersion":2},{"id":"c18beb1f-308b-4be7-8e96-e00a5b30c314","name":"Transcriber","type":"@n8n/n8n-nodes-langchain.openAi","position":[1120,160],"parameters":{"options":{"language":"ru","temperature":0},"resource":"audio","operation":"transcribe"},"credentials":{"openAiApi":{"id":"SYuEZTDHiAFQZoGB","name":"OpenAi account"}},"typeVersion":1.8},{"id":"b4c68ea4-0317-4f54-ae1f-d3cb69e75100","name":"Get audio","type":"n8n-nodes-base.telegram","position":[900,160],"webhookId":"9490be79-9ec6-4570-9c93-1f357de477ef","parameters":{"fileId":"={{ $json.message.voice.file_id }}","resource":"file"},"credentials":{"telegramApi":{"id":"lY4w1OHVg8w6qZvx","name":"Telegram account"}},"typeVersion":1.2}],"active":true,"settings":{"executionOrder":"v1"},"versionId":"ae72f36e-da67-4844-9723-e915e2869d9d","connections":{"AI Agent":{"main":[[{"node":"Parse to json","type":"main","index":0}]]},"Get audio":{"main":[[{"node":"Transcriber","type":"main","index":0}]]},"Transcriber":{"main":[[{"node":"AI Agent","type":"main","index":0}]]},"Parse to json":{"main":[[{"node":"Create Trello Card","type":"main","index":0}]]},"Simple Memory":{"ai_memory":[[{"node":"AI Agent","type":"ai_memory","index":0}]]},"Groq Chat Model":{"ai_languageModel":[[{"node":"AI Agent","type":"ai_languageModel","index":0}]]},"Telegram Trigger":{"main":[[{"node":"Get audio","type":"main","index":0}]]},"Create Trello Card":{"main":[[{"node":"If trello card id exists","type":"main","index":0}]]},"Send error message":{"main":[[{"node":"Stop and Error","type":"main","index":0}]]},"If trello card id exists":{"main":[[{"node":"Send task message","type":"main","index":0}],[{"node":"Send error message","type":"main","index":0}]]}}}


name: 🧑‍⚖️ AI Legal Assistant Agent — AI-Powered Legal Q&A with Document Retrieval
author_name: Automate With Marc
author_username: marconi
categories: []
created_at: 2025-06-25T09:55:56.893Z
updated_at: 2025-06-25T09:55:56.893Z
url: https://n8n.io/workflows/5294
scraped_at: 2025-07-06 21:16:30
description:
  🧑‍⚖️ AI Legal Assistant Agent — AI-Powered Legal Q&A with Document Retrieval

  Category: LegalTech / AI Agent / RAG / Chatbot

  Description:
  This no-code AI agent acts as a legal assistant chatbot that can answer user queries by retrieving information from a pre-indexed legal document library. It’s powered by OpenAI + Pinecone + Telegram and designed for law firms, compliance teams, or anyone who needs instant answers from contracts, policies, or regulatory documents.

  For more of such builds and step-by-step video tutorial, check out:
  https://www.youtube.com/@Automatewithmarc

  🔍 How it Works:

  Telegram Trigger – Starts when a user sends a message via Telegram.

  AI Agent (Open AI Model) – Uses a retrieval-augmented generation (RAG) setup to understand the question and pull relevant context.

  Pinecone Vector Store – Searches across a vectorized legal contract library for relevant clauses or documents.

  OpenAI Embeddings – Converts uploaded documents into vector embeddings for efficient search.

  Memory Buffer – Maintains conversation flow and context for follow-up questions.

  Telegram Response – Sends the final AI-generated answer directly to the user.

  🎯 Use Cases:

  In-house legal teams automating internal policy Q&A

  Law firms building client-facing legal bots

  Startups offering legal tech services with document-based queries

  Compliance teams monitoring contract terms and obligations

  ✅ Key Features:

  Real-time legal Q&A via Telegram

  Pinecone + OpenAI-powered vector search

  Retrieval-Augmented Generation (RAG) setup

  Factual, memory-aware assistant with fallback if info is unavailable

  Fully customizable and extendable

  ⚙️ Setup Instructions:

  Connect OpenAI, Pinecone, and Telegram credentials

  Upload your contracts or policy docs into Pinecone

  Customize the system prompt or expand document sources as needed

  Activate and test via Telegram

  This workflow is a solid foundation for any AI-powered legal assistant or chatbot solution—highly relevant for modern LegalOps and knowledge management teams.

nodes_used:
  ["n8n-nodes-base.telegram","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.embeddingsOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.vectorStorePinecone"]

workflow_json:
  {"id":"rPicfavvntizpQkM","meta":{"instanceId":"1c7b08fed4406d546caf4a44e8b942ca317e7e207bb9a5701955a1a6e1ce1843","templateCredsSetupCompleted":true},"name":"Legal Assistant Agent","tags":[],"nodes":[{"id":"81b14e7a-0dde-4dd3-aa1b-943c1857903d","name":"AI Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[220,0],"parameters":{"text":"={{ $json.message.text }}","options":{"systemMessage":"You are a helpful legal assistant. Your task is to answer legal questions of the users by referring to the Pinecone Vector Database \"Legal Contract Library\" to get an accurate answer. \n#Rule\nDo not make up facts, if you do not have the right information, you may say so."},"promptType":"define"},"typeVersion":2},{"id":"53d344e5-773b-432a-8940-00a9b6814ee8","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[80,240],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o-mini"},"options":{}},"credentials":{"openAiApi":{}},"typeVersion":1.2},{"id":"38b9de84-bfee-4d66-b22a-f95bcd78b9a6","name":"Embeddings OpenAI","type":"@n8n/n8n-nodes-langchain.embeddingsOpenAi","position":[520,360],"parameters":{"options":{}},"credentials":{"openAiApi":{}},"typeVersion":1.2},{"id":"be801891-2ac9-4871-b54b-72491eb9b962","name":"Legal Contract Library","type":"@n8n/n8n-nodes-langchain.vectorStorePinecone","position":[360,240],"parameters":{"mode":"retrieve-as-tool","options":{},"toolName":"Redacted","pineconeIndex":{"__rl":true,"mode":"id","value":"Redacted"},"toolDescription":"Extract, contracts, legal policies and relevant regulatory documents here."},"credentials":{"pineconeApi":{}},"typeVersion":1.1},{"id":"8cbbb27e-5c31-4c8e-93a1-7515b28649b6","name":"Telegram","type":"n8n-nodes-base.telegram","position":[820,0],"webhookId":"","parameters":{"text":"={{ $json.output }}","chatId":"","additionalFields":{"appendAttribution":false}},"credentials":{"telegramApi":{}},"typeVersion":1.2},{"id":"c664b9b0-cf1b-454c-b943-adcc3f0a8de5","name":"Telegram Trigger","type":"n8n-nodes-base.telegramTrigger","position":[-200,0],"webhookId":"","parameters":{"updates":["message"],"additionalFields":{}},"credentials":{"telegramApi":{}},"typeVersion":1.2},{"id":"f4fa00fd-5e18-4a81-8263-b3bf2d52cb9e","name":"Simple Memory1","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[240,240],"parameters":{"sessionKey":"={{ $('Telegram Trigger').item.json.message.chat.id }}","sessionIdType":"customKey","contextWindowLength":10},"typeVersion":1.3},{"id":"f2aff94c-ad46-4759-90f0-368d420219e2","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-340,-160],"parameters":{"width":340,"height":700,"content":"Telegram Message Trigger"},"typeVersion":1},{"id":"4eb385e9-5caf-46f3-97a3-bac95c210c78","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[20,-160],"parameters":{"color":3,"width":720,"height":700,"content":"Legal Asssistant AI Agent"},"typeVersion":1},{"id":"252a59c6-90aa-4ca4-9a4e-2905b69cc984","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[760,-160],"parameters":{"color":4,"width":280,"height":700,"content":"Telegram Output"},"typeVersion":1},{"id":"beaef1c7-48cb-4f35-a0d7-b5819a0e99fe","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-1180,-160],"parameters":{"color":6,"width":820,"height":1180,"content":"🧑‍⚖️ Legal Assistant Agent — AI-Powered Legal Q&A with Document Retrieval\nCategory: LegalTech / AI Agent / RAG / Chatbot\n\nDescription:\nThis no-code AI agent acts as a legal assistant chatbot that can answer user queries by retrieving information from a pre-indexed legal document library. It’s powered by OpenAI + Pinecone + Telegram and designed for law firms, compliance teams, or anyone who needs instant answers from contracts, policies, or regulatory documents.\n\nFor more of such builds and step-by-step video tutorial, check out:\nhttps://www.youtube.com/@Automatewithmarc\n\n🔍 How it Works:\n\nTelegram Trigger – Starts when a user sends a message via Telegram.\n\nAI Agent (GPT-4o) – Uses a retrieval-augmented generation (RAG) setup to understand the question and pull relevant context.\n\nPinecone Vector Store – Searches across a vectorized legal contract library for relevant clauses or documents.\n\nOpenAI Embeddings – Converts uploaded documents into vector embeddings for efficient search.\n\nMemory Buffer – Maintains conversation flow and context for follow-up questions.\n\nTelegram Response – Sends the final AI-generated answer directly to the user.\n\n🎯 Use Cases:\n\nIn-house legal teams automating internal policy Q&A\n\nLaw firms building client-facing legal bots\n\nStartups offering legal tech services with document-based queries\n\nCompliance teams monitoring contract terms and obligations\n\n✅ Key Features:\n\nReal-time legal Q&A via Telegram\n\nPinecone + OpenAI-powered vector search\n\nRetrieval-Augmented Generation (RAG) setup\n\nFactual, memory-aware assistant with fallback if info is unavailable\n\nFully customizable and extendable\n\n⚙️ Setup Instructions:\n\nConnect OpenAI, Pinecone, and Telegram credentials\n\nUpload your contracts or policy docs into Pinecone\n\nCustomize the system prompt or expand document sources as needed\n\nActivate and test via Telegram\n\nThis workflow is a solid foundation for any AI-powered legal assistant or chatbot solution—highly relevant for modern LegalOps and knowledge management teams."},"typeVersion":1}],"active":false,"settings":{"executionOrder":"v1"},"versionId":"0cec767c-2903-4bfb-999a-5668fcadd39d","connections":{"AI Agent":{"main":[[{"node":"Telegram","type":"main","index":0}]]},"Simple Memory1":{"ai_memory":[[{"node":"AI Agent","type":"ai_memory","index":0}]]},"Telegram Trigger":{"main":[[{"node":"AI Agent","type":"main","index":0}]]},"Embeddings OpenAI":{"ai_embedding":[[{"node":"Legal Contract Library","type":"ai_embedding","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"AI Agent","type":"ai_languageModel","index":0}]]},"Legal Contract Library":{"ai_tool":[[{"node":"AI Agent","type":"ai_tool","index":0}]]}}}


name: Find LinkedIn Professionals with Google Search and Airtable
author_name: Javier Hita
author_username: javierhita
nodes_used: ["n8n-nodes-base.airtable","n8n-nodes-base.httpRequest","n8n-nodes-base.code"]
categories: []
created_at: 2025-06-25T09:57:46.871Z
updated_at: 2025-06-25T09:57:46.871Z
url: https://n8n.io/workflows/5295
scraped_at: 2025-07-06 21:16:30
description:
  Find LinkedIn Professionals with Google Search and Airtable

  Who is this for?

  This workflow is perfect for sales professionals, recruiters, business development teams, and marketers who need to build targeted prospect lists from LinkedIn. Whether you're looking for specific job titles, industry professionals, or experts in particular locations, this template automates the tedious process of manual LinkedIn searching.

  What problem is this workflow solving?

  Finding qualified prospects on LinkedIn manually is time-consuming and inefficient. Traditional methods involve:
  Manually searching LinkedIn with limited search capabilities
  Copy-pasting profile information one by one
  Struggling with LinkedIn's search limitations and restrictions
  Difficulty organizing and tracking prospect data
  No systematic way to avoid duplicate contacts

  This workflow solves these challenges by leveraging Google's powerful search capabilities to find LinkedIn profiles at scale, automatically extracting key information, and organizing everything in a structured database.

  What this workflow does

  The workflow performs intelligent LinkedIn prospect discovery through these key steps:

  Keyword-Based Search: Uses Google Custom Search API to find LinkedIn profiles matching your specific criteria (job titles, industries, locations)
  Smart Data Extraction: Automatically parses profile titles, descriptions, URLs, and search snippets from Google results
  Structured Storage: Saves all prospect data to Airtable with proper field mapping and automatic deduplication
  Pagination Handling: Automatically processes multiple pages of search results to maximize prospect discovery
  Rate Limiting: Includes built-in delays to respect API limits and ensure reliable operation

  Key features:
  Deduplication**: Prevents storing duplicate LinkedIn profiles
  Batch Processing**: Handles large prospect lists efficiently
  Customizable Search**: Easily modify keywords to target different professional segments
  Clean Data Output**: Structured data ready for outreach campaigns

  Setup

  Prerequisites
  You'll need accounts with the following services:
  Google Cloud Console** (for Custom Search API)
  Airtable** (free tier works)
  n8n** (cloud or self-hosted)

  Step 1: Google Custom Search Setup

  Go to Google Cloud Console
  Create a new project or select existing one
  Enable the Custom Search API
  Create credentials (API Key)
  Set up a Custom Search Engine at Google CSE
  Configure it to search the entire web
  Copy your Search Engine ID (cx parameter)

  Step 2: Airtable Base Setup

  Create a new Airtable base with a table named "LinkedIn Prospects" containing these fields:

  Title (Single line text) - LinkedIn profile headline
  linkedin_url (URL) - Direct link to LinkedIn profile  
  Search (Single line text) - Original search terms used
  Description (Long text) - Profile description/summary
  Snippet (Long text) - Google search result snippet

  Step 3: n8n Credentials Configuration

  Set up these credentials in n8n:

  Google Custom Search API:
  Type: HTTP Query Auth
  Name: Google Query Auth
  Query Parameter Name: key
  Value: Your Google API key

  Airtable:
  Type: Airtable Personal Access Token
  Token: Your Airtable personal access token
  Configure the base and table IDs in the Airtable node

  Step 4: Workflow Configuration

  Import this workflow template
  Update the "⚙️ CUSTOMIZE YOUR SEARCH KEYWORDS HERE" node with your target keywords
  Configure the Airtable node with your base and table information
  Test the workflow with a small keyword set first

  How to customize this workflow to your needs

  Targeting Different Industries

  Modify the search keywords in the yellow configuration node:

  // For technology professionals
  "Software Engineer React" 
  "Product Manager SaaS"
  "Data Scientist Machine Learning"

  // For sales professionals  
  "Account Executive Enterprise"
  "Sales Director B2B"
  "Business Development Manager"

  // For marketing professionals
  "Digital Marketing Manager"
  "Content Marketing Specialist" 
  "Growth Marketing Lead"

  Geographic Targeting

  Add location keywords to narrow your search:

  "Marketing Manager London"
  "Sales Director New York" 
  "Software Engineer Berlin"

  Company Size Targeting

  Include company type indicators:

  "CFO Startup"
  "VP Engineering Fortune 500"
  "Marketing Director SMB"

  Adjusting Search Volume

  Modify the Maxresults parameter in the "Configure Search Settings" node:
  Set to 10 for quick tests
  Set to 50-100 for comprehensive searches  
  Maximum recommended: 100 per search to respect API limits

  Industry-Specific Customization

  For Recruiters:
  Target specific job titles and seniority levels
  Add skills-based keywords ("Python Developer", "React Specialist")
  Include experience indicators ("Senior", "Lead", "Principal")

  For Sales Teams:
  Focus on decision-maker titles ("Director", "VP", "C-Level")
  Target specific company sizes or industries
  Include location-based searches for territory management

  For Marketers:
  Search for industry influencers and thought leaders
  Target specific professional communities
  Look for content creators and industry experts

  Advanced Filtering

  Add conditional logic after the search results to filter prospects based on:
  Profile description keywords
  Title patterns
  Company information (when available in snippets)

  Integration Extensions

  Connect additional tools to enhance your prospect research:
  Email finder tools** (Hunter.io, Apollo) for contact discovery
  CRM integration** (HubSpot, Salesforce) for automatic lead creation  
  Enrichment services** (Clearbit, ZoomInfo) for additional prospect data
  Slack/Teams notifications** for real-time prospect alerts

  Data Quality Improvements

  Enhance the workflow with additional processing:
  Duplicate detection** across multiple search terms
  Profile validation** to ensure active LinkedIn profiles
  Keyword scoring** to rank prospect relevance
  Export formatting** for specific CRM requirements

  This template provides a solid foundation that can be adapted for virtually any B2B prospect research need, making it an essential tool for modern sales and marketing teams.

workflow_json:
  {"id":"G4qcWIDe1FQsEXGv","meta":{"instanceId":"ea94475e7076b2e72d3d36bb4202c7da062eea5a94e247647c6066ed6cd6f743"},"name":"My workflow 3","tags":[],"nodes":[{"id":"2298912a-0c4b-4d29-adab-ea744dcf8e6c","name":"Prepare Search Parameters","type":"n8n-nodes-base.set","position":[1500,280],"parameters":{"options":{},"assignments":{"assignments":[{"id":"e17f3c0e-aaa0-406e-a88b-c71da9b3043d","name":"start_index","type":"number","value":1},{"id":"57148c16-323e-4ef0-88f2-e3c9603907e0","name":"MaxPages","type":"number","value":"={{ $json.Maxresults }}"},{"id":"4954325e-7508-40df-96ab-2541ab82a11a","name":"Position","type":"string","value":"={{ $json.Position }}"},{"id":"52b9ac6d-3c37-4ffc-842b-fe3aaaa202b3","name":"Industry","type":"string","value":"={{ $json.Industry }}"},{"id":"096d13b7-53bb-4f04-8c1b-0d6ce773a515","name":"Region","type":"string","value":"={{ $json.Location }}"},{"id":"ae918172-114a-4d09-b71a-14dce5715b73","name":"IndianKeyword","type":"string","value":"={{ $json['Indian Keyword'] }}"}]}},"typeVersion":3.4},{"id":"fbedd9dc-fb2d-40a5-8103-e9e3c744586d","name":"Google Custom Search API","type":"n8n-nodes-base.httpRequest","position":[900,640],"parameters":{"url":"https://www.googleapis.com/customsearch/v1","options":{},"sendQuery":true,"authentication":"genericCredentialType","genericAuthType":"httpQueryAuth","queryParameters":{"parameters":[{"name":"q","value":"={{ $node['Prepare Search Parameters'].json.Position }} {{ $node['Prepare Search Parameters'].json.Industry }} site:linkedin.com/in"},{"name":"start","value":"={{ $runIndex == 0 ? $('Prepare Search Parameters').item.json.start_index : $('Clean Search Results').item.json.nextPageStartIndex}}"},{"name":"cx","value":"839bb5f56024e4ef5"}]}},"credentials":{"httpQueryAuth":{"id":"9hmD5HuqDDGusrxX","name":"Google Query Auth"},"httpCustomAuth":{"id":"KW4CxrRNOOCs6LmK","name":"Google Custom Search"},"httpHeaderAuth":{"id":"Yd118GvwDLKCBP3V","name":"Google Header Search"}},"typeVersion":4.2},{"id":"a30fbcb1-ee95-4629-9d5f-a75532be844e","name":"Parse LinkedIn Profiles","type":"n8n-nodes-base.code","position":[1200,640],"parameters":{"jsCode":"const results = [];\n\nfor (const input of $input.all()) {\n  const response = input.json;\n  const itemsArray = response.items || [];\n  const searchTerms = response.queries?.request?.[0]?.searchTerms || null;\n  const nextPageStartIndex = response.queries?.nextPage?.[0]?.startIndex || null;\n\n  for (const item of itemsArray) {\n    const metatags = item?.pagemap?.metatags?.[0] || {};\n    results.push({\n      json: {\n        title: item.title || null,\n        link: item.link || null,\n        searchTerms: searchTerms,\n        nextPageStartIndex: nextPageStartIndex,\n        snippet: item.snippet || null,\n        ogDescription: metatags[\"og:description\"] || null,\n        twitterImage: metatags[\"twitter:image\"] || null\n      }\n    });\n  }\n}\n\nreturn results;"},"typeVersion":2},{"id":"1cce64f7-1875-4ea1-97f9-608942b7185e","name":"Clean Search Results","type":"n8n-nodes-base.set","position":[1480,640],"parameters":{"options":{},"assignments":{"assignments":[{"id":"01199a01-b14a-4dcf-9725-bc9a1f9f8ade","name":"Title","type":"string","value":"={{ $json.title }}"},{"id":"641266d0-7325-417a-8dbd-6b9147b6caeb","name":"URL","type":"string","value":"={{ $json.link }}"},{"id":"878fb57e-cd4c-4ed4-aa37-1b172fc5216d","name":"Search","type":"string","value":"={{ $json.searchTerms }}"},{"id":"80f24267-3449-4dbf-8cfb-5932d62b013c","name":"Snippet","type":"string","value":"={{ $json.snippet }}"},{"id":"d5bdea17-1b9c-4fb6-ad4e-f24049ac234f","name":"Description","type":"string","value":"={{ $json.ogDescription }}"},{"id":"8dd30e05-0beb-4ec5-bff7-e2414d659532","name":"nextPageStartIndex","type":"number","value":"={{ $json.nextPageStartIndex }}"}]}},"typeVersion":3.4},{"id":"2e7d9c6d-4338-4b3b-b84f-5548ca13d272","name":"Save to Airtable","type":"n8n-nodes-base.airtable","position":[1740,640],"parameters":{"base":{"__rl":true,"mode":"list","value":"appwXYS4iHyBt84oE","cachedResultUrl":"https://airtable.com/appwXYS4iHyBt84oE","cachedResultName":"n8n Base"},"table":{"__rl":true,"mode":"list","value":"tblaqQMs7pDPtkjee","cachedResultUrl":"https://airtable.com/appwXYS4iHyBt84oE/tblaqQMs7pDPtkjee","cachedResultName":"LinkedIn Prospects"},"columns":{"value":{"Title":"={{ $json.Title }}","Search":"={{ $json.Search }}","Snippet":"={{ $json.Snippet }}","Description":"={{ $json.Description }}","linkedin_url":"={{ $json.URL }}"},"schema":[{"id":"Title","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"linkedin_url","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"linkedin_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Search","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Search","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Description","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Description","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Snippet","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Snippet","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["linkedin_url"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"upsert"},"credentials":{"airtableTokenApi":{"id":"mAzozYUk4HSPBXsi","name":"Airtable Personal Access Token account"}},"typeVersion":2.1},{"id":"ff878d7b-99e1-4b9b-9e5d-b44452f48b39","name":"When clicking 'Test workflow'","type":"n8n-nodes-base.manualTrigger","position":[120,280],"parameters":{},"typeVersion":1},{"id":"0df3c92d-ef34-4f24-bfac-f3ae838c87d2","name":"Configure Search Settings","type":"n8n-nodes-base.set","position":[1220,280],"parameters":{"options":{},"assignments":{"assignments":[{"id":"64c94773-eea2-4013-9718-c9ef5e29ff7c","name":"Position","type":"string","value":"={{ $json.keywords_string }}"},{"id":"89220317-aced-4cfb-8900-841ee0f70a68","name":"Industry","type":"string","value":""},{"id":"10e66f39-dd61-4a48-b500-18f5854d39ba","name":"Location","type":"string","value":""},{"id":"428c29b2-17fb-44e5-aeb5-87b30400b591","name":"Maxresults","type":"number","value":30},{"id":"f610c45f-cf2f-490e-a7e7-53009edf9f87","name":"Indian Keyword","type":"string","value":""}]}},"typeVersion":3.4},{"id":"54aa747d-77f1-4403-9af7-dab57b251b18","name":"Check Pagination","type":"n8n-nodes-base.switch","position":[2060,640],"parameters":{"rules":{"values":[{"outputKey":"Continue Searching","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"26e85b9b-dfa1-4e00-9ee1-56b912a3b8cd","operator":{"type":"number","operation":"lt"},"leftValue":"={{ parseInt($('Clean Search Results').item.json.nextPageStartIndex) }}","rightValue":"={{ $node['Configure Search Settings'].json.Maxresults}}"}]},"renameOutput":true},{"outputKey":"Search Complete","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"8ee350ce-2838-4daa-a6b7-816de8b8c0d4","operator":{"type":"number","operation":"gte"},"leftValue":"={{ parseInt($('Clean Search Results').item.json.nextPageStartIndex) }}","rightValue":"={{ $node['Configure Search Settings'].json.Maxresults}}"}]},"renameOutput":true}]},"options":{}},"executeOnce":true,"typeVersion":3.2},{"id":"c40c7226-0d9c-4b5f-b849-ce9fae847407","name":"Rate Limit Delay","type":"n8n-nodes-base.wait","position":[2400,620],"webhookId":"23f72108-6cd7-4dc3-a81b-16bdae1fa0b5","parameters":{"amount":2},"typeVersion":1.1},{"id":"5beda166-e0aa-4080-8434-963f3eb052f1","name":"Loop Over Items","type":"n8n-nodes-base.splitInBatches","position":[820,280],"parameters":{"options":{}},"typeVersion":3},{"id":"63b32072-13fe-4c06-9a95-fe2efb861128","name":"Workflow Overview","type":"n8n-nodes-base.stickyNote","position":[0,-220],"parameters":{"color":4,"width":2720,"height":480,"content":"## 🔍 LinkedIn Prospect Finder with Google Search\n\n**Find and collect LinkedIn professional profiles based on keywords, job titles, and industries**\n\n### Quick Setup Required:\n1. **Google Custom Search API** - Get your API key and Search Engine ID\n2. **Airtable Account** - Create a base with the required fields\n3. **Keywords** - Define your search terms in the yellow box below\n\n### What this workflow does:\n- Searches LinkedIn profiles using Google Custom Search\n- Extracts profile information and descriptions\n- Stores results in Airtable with deduplication\n- Handles pagination automatically\n- Includes rate limiting to respect API limits"},"typeVersion":1},{"id":"ea0f16a3-41f4-4567-b788-b74558817915","name":"⚙️ CUSTOMIZE YOUR SEARCH KEYWORDS HERE","type":"n8n-nodes-base.set","position":[480,280],"parameters":{"options":{},"assignments":{"assignments":[{"id":"c0e68cbc-6e8d-40d7-85d5-ddb60af1389a","name":"keywords_string","type":"string","value":"Store Manager Retail London"}]}},"typeVersion":3.4},{"id":"6c7c6e49-3d78-42af-ae91-25acd9158fce","name":"Search Configuration Guide","type":"n8n-nodes-base.stickyNote","position":[0,480],"parameters":{"color":7,"width":760,"height":300,"content":"## 🎯 Search Configuration\n\n**Modify the keywords in the yellow node to target specific professionals:**\n\nExamples:\n- \"Marketing Manager SaaS\"\n- \"Data Scientist Healthcare\"\n- \"Sales Director Enterprise Software\"\n- \"HR Manager Remote\"\n\nThe workflow will search for LinkedIn profiles matching your criteria."},"typeVersion":1},{"id":"60bed7a2-6b9d-4d81-93bb-d07070869360","name":"Google Search Process","type":"n8n-nodes-base.stickyNote","position":[620,860],"parameters":{"color":5,"width":780,"height":300,"content":"## 🔍 Google Search Engine\n\n**Uses Google Custom Search API to find LinkedIn profiles**\n\nThe search query combines:\n- Your keywords (job title, industry, location)\n- LinkedIn site restriction (site:linkedin.com/in)\n- Pagination handling for multiple results\n\nAPI calls are rate-limited to avoid quota issues."},"typeVersion":1},{"id":"1d89f94f-9dc0-43d6-995a-b285438364ee","name":"Airtable Storage","type":"n8n-nodes-base.stickyNote","position":[1400,860],"parameters":{"width":1200,"height":300,"content":"## 📊 Data Storage\n\n**Saves LinkedIn prospect data to Airtable**\n\nStored fields:\n- **Title**: LinkedIn profile headline\n- **linkedin_url**: Direct profile URL\n- **Search**: Original search terms used\n- **Description**: Profile summary/description\n- **Snippet**: Search result snippet\n\nDeduplication prevents storing the same profile twice."},"typeVersion":1}],"active":false,"settings":{"executionOrder":"v1"},"versionId":"e5c86953-c7a2-466b-948a-ebabada3b069","connections":{"Loop Over Items":{"main":[[],[{"node":"Configure Search Settings","type":"main","index":0}]]},"Check Pagination":{"main":[[{"node":"Rate Limit Delay","type":"main","index":0}],[{"node":"Loop Over Items","type":"main","index":0}]]},"Rate Limit Delay":{"main":[[{"node":"Google Custom Search API","type":"main","index":0}]]},"Save to Airtable":{"main":[[{"node":"Check Pagination","type":"main","index":0}]]},"Clean Search Results":{"main":[[{"node":"Save to Airtable","type":"main","index":0}]]},"Parse LinkedIn Profiles":{"main":[[{"node":"Clean Search Results","type":"main","index":0}]]},"Google Custom Search API":{"main":[[{"node":"Parse LinkedIn Profiles","type":"main","index":0}]]},"Configure Search Settings":{"main":[[{"node":"Prepare Search Parameters","type":"main","index":0}]]},"Prepare Search Parameters":{"main":[[{"node":"Google Custom Search API","type":"main","index":0}]]},"When clicking 'Test workflow'":{"main":[[{"node":"⚙️ CUSTOMIZE YOUR SEARCH KEYWORDS HERE","type":"main","index":0}]]},"⚙️ CUSTOMIZE YOUR SEARCH KEYWORDS HERE":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]}}}


name: AI YouTube Trend Explorer – n8n Automation Workflow with Gemini/ChatGPT
author_name: Agent Circle
author_username: agentcircle
nodes_used: ["n8n-nodes-base.httpRequest","n8n-nodes-base.youTube","n8n-nodes-base.code"]
categories: []
created_at: 2025-06-25T10:11:45.389Z
updated_at: 2025-06-25T10:11:45.389Z
url: https://n8n.io/workflows/5296
scraped_at: 2025-07-06 21:16:30
description:
  What The AI YouTube Trend Explorer Workflow Does
  Finds real YouTube trends based on niche keywords
  Analyzes engagement (views, likes) to surface top-performing content
  Uses AI to suggest more specific niches if your keyword is too broad
  Returns links to top videos and the channels posting them
  Helps you craft content around what’s working right now

  Workflow Setup

  Download the Workflow
  Get both workflows from the site:
  YouTube – Trend Explorer
  Sub – YouTube Search
  Import to Your n8n
  Update API Credentials
  Google API Key (Node: HTTP - Find Video Data in WorkflowSub - YouTube Search)
  ChatGPT API Key (Node: YouTube – Trend Explorer in WorkflowYouTube – Trend Explorer)
  Link Sub-Workflow
  Connect sub workflowSub – YouTube Search to the main workflow YouTube – Trend Explorer and you’re live.

  How to Use
  Open chat in the workflow
  Input a niche or keyword (e.g., celebrity facts)
  If the niche is broad, the AI will recommend specific subtopics
  Send and receive structured output with:
  Trending content categories
  Video & channel links
  Views & like stats
  Niche-specific content advice

  Who Should Use This
  YouTubers hunting for viral video ideas
  SEO-driven content creators optimizing for search & trends
  Agencies scaling research for multiple niches
  Solopreneurs who want a shortcut to what’s working

  Example Output

  For the niche "Celebrity facts"

  Over the past two days, the celebrity niche has seen trending content in two major categories:

  Celebrity Scandals and Legal
  Issues: Videos focusing on celebrities facing legal troubles, shocking crimes, and controversies are performing well.
  Examples include videos about celebrities in jail, Meghan Markle's alleged connections, and Diddy's legal battles.
  Engagement: These videos range from 3.9K to 39K views, with like counts between 80 and 1500, indicating a strong interest in the darker side of celebrity life.
  Channel example:
  	Video: https://www.youtube.com/watch?v=O8Ymrfd8mAo
  	Channel: https://www.youtube.com/channel/UC1y5DFVNQD24atzH7RZiXIA

  Hollywood's "Golden Age" Dark Side: Content exploring the hidden, more dangerous aspects of classic Hollywood actors and actresses also resonates with viewers.
  These videos often reveal out-of-control behavior and scandals of iconic figures.
  Engagement: Videos in this category see views around 8K, suggesting a specific interest in historical Hollywood controversies.
  Channel example:
  	Video: https://www.youtube.com/watch?v=DnkUJjLYkco
  	Channel: https://www.youtube.com/channel/UCY8yuf9NjWW97vbI5mawikw

  Creators can leverage these trends by:
  Creating content that exposes celebrity scandals and controversies
  Focusing on the legal troubles and shocking crimes of celebrities
  Creating content that uncovers the dark side of Hollywood's "Golden Age"
  Exploring historical insights and cultural legends behind the fame

  Ready to Explore?

  ✅ Download Now
  💬 Need help or want to customize your workflow?
  👉 Join Our Discord Community https://discord.gg/d8SkCzKwnP for help with setup, optimization tips, and AI workflow discussions — or visit our website at www.agentcircle.ai to explore more tools.

workflow_json:
  {"id":"IktojxaOHrdHkURm","meta":{"instanceId":"ed6d846a2fce1f660ede2e7da800724cca01dc3d0685524a3c917881b7cfcfe9","templateCredsSetupCompleted":true},"name":"Sub - Youtube Search","tags":[{"id":"CEVEeZJa4qgPvdpK","name":"youtube","createdAt":"2025-05-27T02:29:43.874Z","updatedAt":"2025-05-27T02:29:43.874Z"}],"nodes":[{"id":"5d4d8d36-8f39-4e3c-9527-9d5604e58adc","name":"When Executed by Another Workflow","type":"n8n-nodes-base.executeWorkflowTrigger","position":[-660,280],"parameters":{"inputSource":"passthrough"},"typeVersion":1.1},{"id":"09b1a19d-4fb3-4d78-a41b-90da9ab49409","name":"Youtube - Get Video","type":"n8n-nodes-base.youTube","position":[-440,280],"parameters":{"limit":3,"filters":{"q":"={{ $json.query.search_term }}","regionCode":"US","publishedAfter":"={{ new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString() }}"},"options":{"order":"relevance","safeSearch":"moderate"},"resource":"video"},"credentials":{"youTubeOAuth2Api":{"id":"KhD0GLQGWl8MtqCs","name":"YouTube - toan.ngo"}},"typeVersion":1},{"id":"d166a037-d601-438d-b493-c443ab552b40","name":"Loop Over Items","type":"n8n-nodes-base.splitInBatches","position":[-220,280],"parameters":{"options":{}},"typeVersion":3},{"id":"803e7b42-8dd4-48f6-a3c6-247d8235faa7","name":"HTTP - Find Video Data","type":"n8n-nodes-base.httpRequest","position":[0,200],"parameters":{"url":"https://www.googleapis.com/youtube/v3/videos?","options":{},"sendQuery":true,"authentication":"predefinedCredentialType","queryParameters":{"parameters":[{"name":"id","value":"={{ $json.id.videoId }}"},{"name":"part","value":"contentDetails,snippet,statistics"}]},"nodeCredentialType":"youTubeOAuth2Api"},"credentials":{"youTubeOAuth2Api":{"id":"KhD0GLQGWl8MtqCs","name":"YouTube - toan.ngo"}},"typeVersion":4.2},{"id":"771aebee-d468-4352-ad25-7d13b09836b8","name":"Code - Retrieve Data From Memory","type":"n8n-nodes-base.code","position":[0,0],"parameters":{"jsCode":"const workflowStaticData = $getWorkflowStaticData('global');\n\nconst lastExecution = workflowStaticData.lastExecution;\n\nreturn lastExecution;"},"typeVersion":2,"alwaysOutputData":false},{"id":"c1afc8ff-6c26-433b-8b2c-6debda964ae1","name":"Field - Response","type":"n8n-nodes-base.set","position":[220,0],"parameters":{"options":{},"assignments":{"assignments":[{"id":"b9b9117b-ea14-482e-a13b-e68b8e6b441d","name":"response","type":"string","value":"={{ $input.all() }}"}]}},"typeVersion":3.4},{"id":"fd80746e-6a72-46e3-aefc-d7404cd3b50a","name":"If - Longer Than 3","type":"n8n-nodes-base.if","position":[220,280],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"08ba3db9-6bcf-47f8-a74d-9e26f28cb08f","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ \n  (() => {\n    const duration = $json.items[0].contentDetails.duration;\n\n    // Helper function to convert ISO 8601 duration to seconds\n    const iso8601ToSeconds = iso8601 => {\n      const match = iso8601.match(/PT(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+)S)?/);\n      const hours = parseInt(match[1] || 0, 10);\n      const minutes = parseInt(match[2] || 0, 10);\n      const seconds = parseInt(match[3] || 0, 10);\n      return hours * 3600 + minutes * 60 + seconds;\n    };\n\n    // Convert duration to seconds\n    const durationInSeconds = iso8601ToSeconds(duration);\n\n    // Check if greater than 210 seconds (3 minutes 30 seconds)\n    return durationInSeconds > 210;\n  })() \n}}","rightValue":""}]},"looseTypeValidation":true},"typeVersion":2.2},{"id":"bd86dca7-fdcc-4722-9247-1d5d5f16bb86","name":"Field - Group Data","type":"n8n-nodes-base.set","position":[440,280],"parameters":{"options":{},"assignments":{"assignments":[{"id":"47c172ad-90c8-4cf6-a9f5-50607e04cc90","name":"id","type":"string","value":"={{ $json.items[0].id }}"},{"id":"9e639efa-0714-4b06-9847-f7b4b2fbef59","name":"viewCount","type":"string","value":"={{ $json.items[0].statistics.viewCount }}"},{"id":"93328f00-91b8-425b-ad0f-a330b2f95242","name":"likeCount","type":"string","value":"={{ $json.items[0].statistics.likeCount }}"},{"id":"015b0fb2-2a98-464c-a21b-51100616f26a","name":"commentCount","type":"string","value":"={{ $json.items[0].statistics.commentCount }}"},{"id":"cf1e1ec3-a138-42b8-8747-d249afa58dd3","name":"description","type":"string","value":"={{ $json.items[0].snippet.description }}"},{"id":"c5c9a3a2-b820-4932-a38a-e21102992215","name":"title","type":"string","value":"={{ $json.items[0].snippet.title }}"},{"id":"38216ead-1f8d-4f93-b6ad-5ef709a1ad2a","name":"channelTitle","type":"string","value":"={{ $json.items[0].snippet.channelTitle }}"},{"id":"ff34194d-3d46-43a8-9127-84708987f536","name":"tags","type":"string","value":"={{ $json.items[0].snippet.tags.join(', ') }}"},{"id":"e50b0f7b-3e37-4557-8863-d68d4fa505c8","name":"channelId","type":"string","value":"={{ $json.items[0].snippet.channelId }}"}]}},"typeVersion":3.4},{"id":"f9326f4d-16e5-4078-9273-7ee3fb1c70a3","name":"Code - Save Data To Memory","type":"n8n-nodes-base.code","position":[660,360],"parameters":{"mode":"runOnceForEachItem","jsCode":"const workflowStaticData = $getWorkflowStaticData('global');\n\nif (!workflowStaticData.lastExecution || typeof workflowStaticData.lastExecution.response !== 'string') {\n  workflowStaticData.lastExecution = { response: '' };\n}\n\nconst regexes = [\n  { pattern: /https?:\\/\\/\\S+|www\\.\\S+/g, replace: '' },\n  { pattern: /[\\u{1F600}-\\u{1F64F}\\u{1F300}-\\u{1F5FF}\\u{1F680}-\\u{1F6FF}\\u{2600}-\\u{26FF}\\u{2700}-\\u{27BF}]/gu, replace: '' },\n  { pattern: /[\\r\\n\\\\]+/g, replace: ' ' },\n  { pattern: / {2,}/g, replace: ' ' } \n];\n\nfunction sanitize(text) {\n  return regexes.reduce((str, { pattern, replace }) => str.replace(pattern, replace), text).trim();\n}\n\nconst item = { ...$input.item };\nif (item.description) {\n  item.description = sanitize(item.description);\n}\n\nconst sanitizedItem = sanitize(JSON.stringify(item));\n\nif (workflowStaticData.lastExecution.response) {\n  workflowStaticData.lastExecution.response += ' ### NEXT VIDEO FOUND: ### ';\n}\nworkflowStaticData.lastExecution.response += sanitizedItem;\n\nreturn workflowStaticData.lastExecution;"},"typeVersion":2},{"id":"49187d4e-5258-48a2-ae9a-fe82a82b75b9","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-900,-140],"parameters":{"width":580,"height":260,"content":"## Sub - Youtube Search\nWebsite\thttps://www.agentcircle.ai/\nDiscord Global\thttps://discord.com/invite/jySQ2PNm\nFB Page Global\thttps://www.facebook.com/agentcircle/\nFB Group Global\thttps://www.facebook.com/groups/aiagentcircle/\nGumroad\thttp://agentcircle.gumroad.com/\nX\thttps://x.com/agent_circle\nYouTube\thttps://www.youtube.com/@agentcircle\nLinkedin\thttps://www.linkedin.com/company/agentcircle"},"typeVersion":1}],"active":false,"settings":{"executionOrder":"v1"},"versionId":"252a4d1e-eb32-4f40-b61a-c80ba62d1d57","connections":{"Loop Over Items":{"main":[[{"node":"Code - Retrieve Data From Memory","type":"main","index":0}],[{"node":"HTTP - Find Video Data","type":"main","index":0}]]},"Field - Group Data":{"main":[[{"node":"Code - Save Data To Memory","type":"main","index":0}]]},"If - Longer Than 3":{"main":[[{"node":"Field - Group Data","type":"main","index":0}],[{"node":"Loop Over Items","type":"main","index":0}]]},"Youtube - Get Video":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"HTTP - Find Video Data":{"main":[[{"node":"If - Longer Than 3","type":"main","index":0}]]},"Code - Save Data To Memory":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Code - Retrieve Data From Memory":{"main":[[{"node":"Field - Response","type":"main","index":0}]]},"When Executed by Another Workflow":{"main":[[{"node":"Youtube - Get Video","type":"main","index":0}]]}}}


name: Automatic monitoring of multiple URLs with downtime alerts
author_name: Oriol Seguí
author_username: oxsr11
categories: []
created_at: 2025-06-25T11:31:26.471Z
updated_at: 2025-06-25T11:31:26.471Z
url: https://n8n.io/workflows/5298
scraped_at: 2025-07-06 21:16:30
description:
  This n8n workflow allows you to automatically monitor the status of multiple URLs in a simple and efficient way. You just need to enter the URLs you want to scan and run the workflow (either manually or scheduled). For each URL, an availability check is performed. The results are logged in a Google Sheet, clearly distinguishing between successful checks and failures (downtime). If any URL fails, the system filters these errors and automatically sends an email alert notifying you of the detected outages.

  The workflow includes help messages in both English and Spanish, integrates with Google Sheets and Gmail, and is suitable for both one-off tasks and scheduled monitoring.

  For Who?
  Webmasters
  SEO & Marketing Teams
  SysAdmins
  Anyone needing automated website uptime monitoring

  How it works?
  Enter the URLs to scan in the “URLs” field.
  Trigger the workflow manually or schedule it to run automatically.
  For each URL, the workflow:
  Checks if the URL is online or down.
  Logs the status (success or error) in a Google Sheet.
  At the end, filters the failed URLs (crashes) and sends an email alert l

nodes_used:
  ["n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","n8n-nodes-base.gmail","n8n-nodes-base.code"]

workflow_json:
  {"meta":{"instanceId":"b643a27a3e5d7748d41ee6285fc688ed2cbf9a93ddb8d5b0ae79684ac7064b2b","templateCredsSetupCompleted":true},"nodes":[{"id":"2744df51-ca51-4c01-9a49-b29c5b27f7bf","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[0,200],"parameters":{"rule":{"interval":[{}]}},"typeVersion":1.2},{"id":"cae73f18-028e-4cb5-aee2-a18768c5367e","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[480,100],"parameters":{"options":{},"fieldToSplitOut":"urls"},"typeVersion":1},{"id":"398d41cf-c555-44d7-bf08-2732a47a18e7","name":"URLs","type":"n8n-nodes-base.set","position":[260,100],"parameters":{"mode":"raw","options":{},"jsonOutput":"{\n  \"urls\": {\n    \"URL 2\": \"https://example.com\",\n    \"URL 1\": \"https://google.es\",\n    \"URL 4\": \"https://github.com\",\n    \"URL 3\": \"https://n8n.io\",\n    \"URL 5\": \"https://n8niouou.io\",\n    \"URL 6\": \"https://n8niopuou.io\"\n  }\n}"},"typeVersion":3.4},{"id":"876e4ca3-c607-4443-a4ec-cb83fe84e6c3","name":"Success","type":"n8n-nodes-base.googleSheets","position":[1220,260],"parameters":{"columns":{"value":{"Caida":"=","Funcional":"=Funciona: {{ $('Split Out').item.json.urls }}"},"schema":[{"id":"Funcional","type":"string","display":true,"required":false,"displayName":"Funcional","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Caida","type":"string","display":true,"required":false,"displayName":"Caida","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/13EHjUGc0wHYbBYZFPqlGuSE1pnttvokU1y3gJCWz920/edit#gid=0","cachedResultName":"Hoja 1"},"documentId":{"__rl":true,"mode":"list","value":"13EHjUGc0wHYbBYZFPqlGuSE1pnttvokU1y3gJCWz920","cachedResultUrl":"https://docs.google.com/spreadsheets/d/13EHjUGc0wHYbBYZFPqlGuSE1pnttvokU1y3gJCWz920/edit?usp=drivesdk","cachedResultName":"Prova2"}},"credentials":{"googleSheetsOAuth2Api":{"id":"nnznbiLx5YNRZzDM","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"c99e1ec7-0b11-4278-8f97-d6b9cef798cd","name":"Error","type":"n8n-nodes-base.googleSheets","position":[1220,460],"parameters":{"columns":{"value":{"Caida":"=Caida: {{ $json.urls }}"},"schema":[{"id":"Funcional","type":"string","display":true,"required":false,"displayName":"Funcional","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Caida","type":"string","display":true,"required":false,"displayName":"Caida","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/13EHjUGc0wHYbBYZFPqlGuSE1pnttvokU1y3gJCWz920/edit#gid=0","cachedResultName":"Hoja 1"},"documentId":{"__rl":true,"mode":"list","value":"13EHjUGc0wHYbBYZFPqlGuSE1pnttvokU1y3gJCWz920","cachedResultUrl":"https://docs.google.com/spreadsheets/d/13EHjUGc0wHYbBYZFPqlGuSE1pnttvokU1y3gJCWz920/edit?usp=drivesdk","cachedResultName":"Prova2"}},"credentials":{"googleSheetsOAuth2Api":{"id":"nnznbiLx5YNRZzDM","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"9aeec8f1-1498-4381-bfab-a76c8e40a862","name":"Total","type":"n8n-nodes-base.summarize","position":[960,20],"parameters":{"options":{},"fieldsToSummarize":{"values":[{"field":"Caida"},{"field":"Funcional"}]}},"typeVersion":1.1},{"id":"01fd1dbc-ca4c-4a94-abbc-e1d67a7dd775","name":"Bucle URLs","type":"n8n-nodes-base.splitInBatches","position":[700,100],"parameters":{"options":{}},"typeVersion":3},{"id":"760cea59-8d84-4abf-b91a-c277ca122420","name":"Run trigger","type":"n8n-nodes-base.manualTrigger","position":[0,0],"parameters":{},"typeVersion":1},{"id":"1ec7a4ea-e929-4f50-b4b8-4732b9e439ed","name":"Send a message","type":"n8n-nodes-base.gmail","position":[1560,20],"webhookId":"cf566774-8539-422c-8129-7c9fea6b367c","parameters":{"sendTo":"email@youemail.com","message":"=Te informamos que actualmente estos URLs se encuentran caídos: \n\n{{ $json.url }}\n\n\nCaídos: {{ $('Total').item.json.count_Caida }}\n\nFuncionales: {{ $('Total').item.json.count_Funcional }}","options":{},"subject":"Webs caídas"},"credentials":{"gmailOAuth2":{"id":"ED5PJ0BhFPmKkgyc","name":"Gmail account"}},"typeVersion":2.1},{"id":"e6ca120c-21e0-42c5-b3d0-c8e447e09386","name":"Code","type":"n8n-nodes-base.code","position":[1160,20],"parameters":{"jsCode":"// 1) Traemos TODOS los ítems que generó el nodo \"Bucle URLs\"\nconst items = $items('Bucle URLs');   // respeta exactamente el nombre del nodo\n\n// 2) Extraemos la propiedad Caida y descartamos vacíos\nconst caidaUrls = items\n  .map(it => it.json.Caida)               \n  .filter(url => typeof url === 'string' && url.trim().length);\n\nif (caidaUrls.length === 0) {\n  throw new Error('No se encontraron URLs en la propiedad \"Caida\".');\n}\n\nreturn caidaUrls.map(url => ({ json: { url } }));\n\n/*  Si prefieres un ÚNICO item con el array completo, comenta la línea anterior\n    y descomenta esto:\nreturn [\n  { json: { caidaUrls } },     // { \"caidaUrls\": [\"https://n8niouou.io\", \"https://n8niopuou.io\"] }\n];\n*/\n"},"typeVersion":2},{"id":"d5fb83e9-689f-44f3-a02a-32ff511c9ee0","name":"Split Out2","type":"n8n-nodes-base.splitOut","position":[1360,20],"parameters":{"options":{},"fieldToSplitOut":"url"},"typeVersion":1},{"id":"464a16ea-17f0-4757-b491-1b331395cd14","name":"Request","type":"n8n-nodes-base.httpRequest","onError":"continueErrorOutput","position":[960,220],"parameters":{"url":"={{ $json.urls }}","options":{}},"typeVersion":4.2},{"id":"5df0c197-037d-46da-bc4b-fd7ed514bbe5","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[220,320],"parameters":{"color":5,"width":260,"content":"## How it works (P1)\nBefore the loop, you enter the URLs to scan in the \"URLs\" stream, then start the trigger either manually or scheduled."},"typeVersion":1},{"id":"8e2d7f73-8731-4b35-8fb0-10d68978a671","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[220,500],"parameters":{"color":5,"width":260,"height":180,"content":"## Cómo funciona (P1)\n\nAntes del bucle, se introducen las URL que se escanearán en el flujo \"URL\" y, a continuación, se inicia el disparador, ya sea de forma manual o programada."},"typeVersion":1},{"id":"4367f7ee-0b74-476b-84b4-202bc3d909e7","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1440,240],"parameters":{"width":260,"height":180,"content":"## How it works (P2)\nStart a loop for each URL entered, adding the status to a Google Sheet, then collect the status of each URL, filter out the crashes, and send an email with the crashes."},"typeVersion":1},{"id":"466863c5-a256-499c-b457-4651de2bb8fc","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1440,460],"parameters":{"width":260,"height":180,"content":"## Cómo funciona (P2)\nInicia un bucle por cada URL introducida, agregando el estado en google sheet, luego recoge el estado de cada URL, filtra las caídas y envía un email con las caídas."},"typeVersion":1},{"id":"4cb90ac4-9808-413a-8fb0-c7ed0db631bb","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[220,40],"parameters":{"color":5,"width":180,"height":220,"content":"### Enter URLs to scan here"},"typeVersion":1},{"id":"040739ca-50d8-4d77-bf3a-c7406bd60410","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-40,-120],"parameters":{"color":5,"width":180,"height":480,"content":"### As a trigger you could also implement webhook or MCP"},"typeVersion":1}],"connections":{"Code":{"main":[[{"node":"Split Out2","type":"main","index":0}]]},"URLs":{"main":[[{"node":"Split Out","type":"main","index":0}]]},"Error":{"main":[[{"node":"Bucle URLs","type":"main","index":0}]]},"Total":{"main":[[{"node":"Code","type":"main","index":0}]]},"Request":{"main":[[{"node":"Success","type":"main","index":0}],[{"node":"Error","type":"main","index":0}]]},"Success":{"main":[[{"node":"Bucle URLs","type":"main","index":0}]]},"Split Out":{"main":[[{"node":"Bucle URLs","type":"main","index":0}]]},"Bucle URLs":{"main":[[{"node":"Total","type":"main","index":0}],[{"node":"Request","type":"main","index":0}]]},"Split Out2":{"main":[[{"node":"Send a message","type":"main","index":0}]]},"Run trigger":{"main":[[{"node":"URLs","type":"main","index":0}]]},"Send a message":{"main":[[]]},"Schedule Trigger":{"main":[[{"node":"URLs","type":"main","index":0}]]}}}


name: Google Search Console and Analytics Analysis with AI Optimizations
author_name: Łukasz
author_username: lukaszpp
categories: []
created_at: 2025-06-25T13:10:19.561Z
updated_at: 2025-06-25T13:10:19.561Z
url: https://n8n.io/workflows/5303
scraped_at: 2025-07-06 21:16:30
description:
  What Is This?

  This workflow is a comprehensive solution for automating website audits and optimizations, leveraging advanced technologies to boost SEO effectiveness and overall site performance.

  Who Is It For?

  Designed for SEO specialists, digital marketers, webmasters, and content teams, this workflow empowers anyone responsible for website performance to automate and scale their audit processes. Agencies managing multiple client sites, in-house SEO teams aiming to save time on routine checks, and developers seeking to integrate data-driven insights into their deployment pipelines will all find this solution invaluable.

  By combining your site’s sitemap with Google Search Console and Google Analytics data, then applying AI-powered analysis, the workflow continuously uncovers actionable recommendations to boost search visibility, improve user engagement, and accelerate page performance. Whether you manage a single blog or oversee a sprawling e-commerce platform, this automated pipeline delivers precise, prioritized SEO improvements without manual data wrangling.

  How Does It Work?

  This end-to-end site analysis automation consists of five main stages:

  1. URL Discovery  
  Processes the sitemap.xml using HTTP Request and XML nodes to extract all site URLs.

  2. Search Console Performance Analysis  
  Uses the Google Search Console API to fetch detailed metrics for each page, including search position, clicks, impressions, and CTR. 

  3. Analytics Data Collection  
  Connects to the Google Analytics API to automatically retrieve traffic metrics such as pageviews, average session duration, bounce rate, and conversions. 

  4. AI Data Processing  
  Employs OpenAI models to perform in-depth analysis of the collected data. The artificial intelligence engine merges insights from all sources, identifies patterns, and produces detailed optimization recommendations. AI analyses website itsefl aswell. Consider testing different models. I do recommend at least trying out o4-mini.

  5. Recommendation Generation  
  Creates tailored suggestions for each page, in form of HTML table, that is being sent to your email.

  How To Set It Up?

  Accounts:  
  An active n8n account or instance, API keys for Google Search Console and Google Analytics, an OpenAI access token.

  Enabled Google APIs:
  You will neeed at least following scopes:
  Google Search Console API
  Google Analytics Aadmin API
  Google Analytics Data API 

  Scheduling:  
  The workflow can run manually for ad hoc audits or be scheduled (daily, weekly) for continuous site monitoring.

  Testing:  
  There are two nodes that are optional:
  "Sort for testing purposes" and
  "Limit for testing purposes"
  Together they randomly select items from sitemap and limit them to few so you don't need to run hundreds of sitemap.xml items at once, but you can run just a random batch first.

  Globals:
  There is node called "Globals- CHANGE ME!". You need to set up proper variables in there, which are:
  sitemap_url - self exlpainatory
  search_console_selector - for example "sc-domain:sailingbyte.com" but can be URL aswell- depends on how did you set up your search console
  analysis_start_date and analysis_end_date - date range for analytics, by default last 30 days
  analytics_selector_id - ID of Google Analytics setup, it is a large integer, you can find it in analytics url preceeded with letter "p", ex (your number is where there are X's): https://analytics.google.com/analytics/web/#/pXXXXXXXXX/reports/intelligenthome
  report_receiver - email which will receive report 

  What's More?

  That's actually it. I hope that this automation will help your website improvement will be much easier!

  Thank you, perfect!

  Glad I could help. Visit my profile for other automations for businesses. And if you are looking for dedicated software development, do not hesitate to reach out!

nodes_used:
  ["n8n-nodes-base.emailSend","n8n-nodes-base.httpRequest","n8n-nodes-base.googleAnalytics","n8n-nodes-base.html","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi"]

workflow_json:
  {"id":"Q0fs6FhvxUSO5kL4","meta":{"instanceId":"bdce9ec27bbe2b742054f01d034b8b468d2e7758edd716403ad5bd4583a8f649","templateCredsSetupCompleted":true},"name":"Google Search Console and Analytics Analysis with AI Optimizations","tags":[],"nodes":[{"id":"4a4b478e-b5f8-4ddc-a6cc-48f1274cb5d6","name":"When clicking ‘Test workflow’","type":"n8n-nodes-base.manualTrigger","position":[-300,-300],"parameters":{},"typeVersion":1},{"id":"b52900dd-a2bd-42bb-8e1d-ce3cff259ec7","name":"Loop Over Items","type":"n8n-nodes-base.splitInBatches","position":[40,580],"parameters":{"options":{}},"typeVersion":3},{"id":"1ebe691b-6b76-4956-b181-c2be251d48be","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-40,480],"parameters":{"width":1620,"height":640,"content":"## Get Google Data and Push It Through AI"},"typeVersion":1},{"id":"7194a576-50ab-4df0-b6db-d6a74bcbb927","name":"Enforce Order - Positions Last","type":"n8n-nodes-base.merge","position":[280,260],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition"},"typeVersion":3},{"id":"be892b2b-6141-415c-a503-d4f7d467cc6a","name":"Remove Duplicates","type":"n8n-nodes-base.removeDuplicates","position":[940,-60],"parameters":{"compare":"selectedFields","options":{},"fieldsToCompare":"loc"},"typeVersion":2},{"id":"ebb767ad-a8db-449a-8d52-56731248e9e5","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[240,-140],"parameters":{"width":880,"height":320,"content":"## Get All Pages From Sitemap"},"typeVersion":1},{"id":"d421db5a-c224-44ef-a471-d64ca8ddaa69","name":"Get sitemap XML","type":"n8n-nodes-base.httpRequest","position":[280,-60],"parameters":{"url":"={{ $('Globals - CHANGE ME!').item.json.sitemap_url }}","options":{}},"typeVersion":4.2},{"id":"6bf0e08e-1cfa-4484-b953-cd215447d053","name":"Convert to JSON","type":"n8n-nodes-base.xml","position":[500,-60],"parameters":{"options":{}},"typeVersion":1},{"id":"b5ab24fc-8c0f-4158-9452-35fc682246ff","name":"Split Out to Table","type":"n8n-nodes-base.splitOut","position":[720,-60],"parameters":{"options":{},"fieldToSplitOut":"urlset.url"},"typeVersion":1},{"id":"81c644b2-1de8-4f51-be73-ac2246fb3c5f","name":"Limit for Testing Purposes","type":"n8n-nodes-base.limit","position":[1400,-60],"parameters":{"maxItems":5},"typeVersion":1},{"id":"77c271b5-99b9-4adf-8b7f-7dc0846325bd","name":"Wait to Comply with API Limits","type":"n8n-nodes-base.wait","position":[900,500],"webhookId":"51b5aeba-6be7-45d4-97fd-4e5cb5a8401b","parameters":{"amount":1},"typeVersion":1.1},{"id":"00b83323-17ef-44a1-82b1-eb867e532556","name":"Globals - CHANGE ME!","type":"n8n-nodes-base.set","position":[40,-60],"parameters":{"options":{},"assignments":{"assignments":[{"id":"be81885f-3f27-4edd-985d-8dd98908a197","name":"sitemap_url","type":"string","value":"https://sailingbyte.com/sitemap.xml"},{"id":"c1f4c9ba-9222-4757-a89e-0d67af1d3944","name":"search_console_selector","type":"string","value":"sc-domain:example.com"},{"id":"9c57f9cc-1e94-4174-b622-7533c7776bee","name":"analysis_start_date","type":"string","value":"={{ $now.minus(30,'days').format('yyyy-MM-dd') }}"},{"id":"51dd8171-2300-4574-9c71-56793127bf4a","name":"analysis_end_date","type":"string","value":"={{ $now.format('yyyy-MM-dd') }}"},{"id":"5e09cf25-80d9-44fe-9cf3-e2517bcfc6e6","name":"analytics_selector_id","type":"number","value":0},{"id":"5befd844-afe6-44c9-8ecd-c2741d838b19","name":"report_receiver","type":"string","value":"email@eamil.com"}]}},"typeVersion":3.4},{"id":"cde1f4e7-f45d-4c64-906e-3b191550fc9a","name":"Get Page GSC Status","type":"n8n-nodes-base.httpRequest","onError":"continueRegularOutput","position":[280,560],"parameters":{"url":"https://searchconsole.googleapis.com/v1/urlInspection/index:inspect","method":"POST","options":{},"sendQuery":true,"authentication":"predefinedCredentialType","queryParameters":{"parameters":[{"name":"inspectionUrl","value":"={{ $json.loc }}"},{"name":"siteUrl","value":"={{ $('Globals - CHANGE ME!').first().json.search_console_selector }}"}]},"nodeCredentialType":"googleOAuth2Api"},"credentials":{"googleOAuth2Api":{"id":"wWLEdLgRqrkoJMke","name":"Google account"}},"retryOnFail":true,"typeVersion":4.2,"waitBetweenTries":5000},{"id":"c4856013-3111-4c04-b4d2-f92ad8f1cd88","name":"Get Page GSC Stats","type":"n8n-nodes-base.httpRequest","onError":"continueRegularOutput","position":[280,740],"parameters":{"url":"=https://www.googleapis.com/webmasters/v3/sites/{{ $('Globals - CHANGE ME!').first().json.search_console_selector }}/searchAnalytics/query","method":"POST","options":{},"jsonBody":"={\n  \"startDate\": \"{{ $('Globals - CHANGE ME!').first().json.analysis_start_date }}\",\n  \"endDate\": \"{{ $('Globals - CHANGE ME!').first().json.analysis_end_date }}\",\n  \"type\": \"web\",\n  \"dimensionFilterGroups\": [\n    {\n      \"groupType\": \"AND\",\n      \"filters\": [\n        {\n          \"dimension\": \"page\",\n          \"operator\": \"contains\",\n          \"expression\": \"{{ $json.loc }}\"\n        }\n      ]\n    }\n  ]\n}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"googleOAuth2Api"},"credentials":{"googleOAuth2Api":{"id":"wWLEdLgRqrkoJMke","name":"Google account"}},"retryOnFail":true,"typeVersion":4.2,"waitBetweenTries":5000},{"id":"b5e8f02d-320c-4fab-9e38-2a6dbb97e7b1","name":"Merge Status and Stats","type":"n8n-nodes-base.merge","position":[540,680],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition","numberInputs":3},"typeVersion":3.2},{"id":"c7ff4009-65be-4d4a-b3dd-f711e7cefebb","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[660,880],"parameters":{"model":{"__rl":true,"mode":"list","value":"o4-mini","cachedResultName":"o4-mini"},"options":{}},"credentials":{"openAiApi":{"id":"zjIZQuuuZMJpiUny","name":"OpenAi account"}},"typeVersion":1.2},{"id":"133cbc78-a835-4d6c-a366-187d3f2ca4b1","name":"Get Google Analytics Data","type":"n8n-nodes-base.googleAnalytics","position":[280,920],"parameters":{"endDate":"={{ $('Globals - CHANGE ME!').first().json.analysis_end_date }}","dateRange":"custom","returnAll":true,"startDate":"={{ $('Globals - CHANGE ME!').first().json.analysis_start_date }}","metricsGA4":{"metricValues":[{},{"listName":"screenPageViews"},{"listName":"userEngagementDuration"}]},"propertyId":{"__rl":true,"mode":"id","value":"={{ $('Globals - CHANGE ME!').first().json.analytics_selector_id }}"},"dimensionsGA4":{"dimensionValues":[{"listName":"pageLocation"}]},"additionalFields":{"dimensionFiltersUI":{"filterExpressions":{"expression":{"stringFilter":[{"value":"={{ $json.loc }}","listName":"pageLocation","caseSensitive":false}]}}}}},"credentials":{"googleAnalyticsOAuth2":{"id":"4JVj7vMgAo09ILvS","name":"Google Analytics account"}},"typeVersion":2,"alwaysOutputData":true},{"id":"fc55254f-012b-4387-af4c-54211b386182","name":"HTTP Request","type":"n8n-nodes-base.httpRequestTool","position":[940,880],"parameters":{"url":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}","options":{},"toolDescription":"Make HTTP request to get page data so you can further analyze page for SEO optimizations"},"typeVersion":4.2},{"id":"3658c627-a22b-4f4c-b2ee-33e9a361bb1e","name":"Merge AI Output With AI Input","type":"n8n-nodes-base.merge","position":[1400,900],"parameters":{},"typeVersion":3.2},{"id":"b92d08c4-13a3-4c92-b37f-da3a7a5ee7dc","name":"Markdown to HTML","type":"n8n-nodes-base.markdown","position":[1120,900],"parameters":{"mode":"markdownToHtml","options":{},"markdown":"={{ $json.output }}","destinationKey":"output"},"typeVersion":1},{"id":"a77ef66d-1313-43ee-b23f-c23a24529026","name":"Keep Only Valuable Columns","type":"n8n-nodes-base.set","position":[500,260],"parameters":{"options":{"dotNotation":false,"ignoreConversionErrors":true},"assignments":{"assignments":[{"id":"6a86e547-b789-4319-886f-b06120967d64","name":"loc","type":"string","value":"={{ $json.loc }}"},{"id":"8ba00cd3-e45a-439f-b703-8a42dd0628fa","name":"inspectionResult.indexStatusResult.coverageState","type":"string","value":"={{ $json.inspectionResult.indexStatusResult.coverageState }}"},{"id":"b83dc435-cbb1-4dc3-8c7e-3af41201dbfe","name":"output","type":"string","value":"={{ $json.output }}"}]}},"typeVersion":3.4},{"id":"fad58242-29c7-4c48-ae3f-667559cfd644","name":"Change to HTML table for sending","type":"n8n-nodes-base.html","position":[720,260],"parameters":{"options":{},"operation":"convertToHtmlTable"},"typeVersion":1.2},{"id":"3d737f97-9d5c-4f0c-8a2a-cbe98e0879d2","name":"Send Email with Full report","type":"n8n-nodes-base.emailSend","position":[940,260],"webhookId":"843191c3-c853-43c1-9523-4661654fb58e","parameters":{"html":"=<h2>Analysis is complete</h2>\n{{ $json.table }}\n\n","options":{},"subject":"Your Analysis Is Complete","toEmail":"={{ $('Globals - CHANGE ME!').first().json['report_receiver'] }}","fromEmail":"={{ $('Globals - CHANGE ME!').first().json['report_receiver'] }}"},"credentials":{"smtp":{"id":"tkdzDgcUAt04af3B","name":"SMTP account"}},"typeVersion":2.1},{"id":"8888143f-73ed-4ac7-84ee-b5b4bcf64c6e","name":"Sort For Testing Purposes","type":"n8n-nodes-base.sort","position":[1180,-60],"parameters":{"type":"random"},"typeVersion":1},{"id":"fd4431b6-8a0a-4a2b-a70b-17d3fc2f34b5","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1140,-140],"parameters":{"color":6,"width":440,"height":320,"content":"## Limit for Testing"},"typeVersion":1},{"id":"b821114e-234c-4183-a957-d5048f366ecd","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-20,-140],"parameters":{"color":4,"height":320,"content":"## Setup Me First"},"typeVersion":1},{"id":"2e0a5df7-7dd1-4ca7-b9e7-763928b32913","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[240,200],"parameters":{"color":3,"width":1340,"height":260,"content":"## Get Email Report"},"typeVersion":1},{"id":"a16024d1-28a1-4b73-85b7-fc15e9620184","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-420,-140],"parameters":{"color":4,"width":380,"height":320,"content":"- sitemap_url - self exlpainatory\n- search_console_selector - for example \"sc-domain:sailingbyte.com\" but can be URL aswell- depends on how did you set up your search console\n- analysis_start_date and analysis_end_date - date range for analytics, by default last 30 days\n- analytics_selector_id - ID of Google Analytics setup, it is a large integer, you can find it in analytics url preceeded with letter \"p\", ex (your number is where there are X's): https://analytics.google.com/analytics/web/#/pXXXXXXXXX/reports/intelligenthome\n- report_receiver - email which will receive report "},"typeVersion":1},{"id":"cd5d0d57-f04a-4094-8f26-855dd1051589","name":"SEO analyst","type":"@n8n/n8n-nodes-langchain.agent","position":[780,680],"parameters":{"text":"=You are professional SEO analyst and improver. You will receive in input data from Google Analytics and Google Search Console. Delivered data will be for single page.\n\nBased on this data, your task is to propose improvements, that are very specific to this page, and which will impact this web page positively. \n\nGeneral Data Evaluation:\n- How to get more users on this specific page\n- How to engage users more on this specific page\n- Analyze page itself for improvements\n- Look for potential issues in Google Analytics and Google Search Console data\n- Look for potential issues on website itself\n\nTechnical Evaluation:\n- Critical Fixes – Issues requiring immediate attention and resolution.\n- High-Impact Solutions – Simple adjustments that deliver significant results.\n- Enhancement Possibilities – Initiatives demanding greater investment but providing valuable long-term gains.\n\nContent Evaluation:\n- Keyword Strategy Assessment – Determine core and supporting search terms, evaluate keyword concentration levels, and examine strategic keyword positioning throughout the content.\n- Content Quality Review – Analyze the material's comprehensiveness, precision, and alignment with intended audience needs and expectations.\n- Accessibility and Clarity Analysis – Measure content comprehension difficulty through established readability frameworks including Flesch-Kincaid educational level, Flesch Reading Ease score, and Gunning-Fog complexity index.\n\nYou can add other improvement ideas, but they must be very specific to given page, no generalizations.\n\nWebsite is: {{ $json.pageLocation }}\n\nGoogle Analytics data is:\n- total users: {{ $json.totalUsers ?? 0}}\n- screen page views: {{ $json.screenPageViews ?? 0 }}\n- user engagement duration: {{ $json.userEngagementDuration ?? 0 }}\n\nGoogle Search Console data is:\n{{ $json.rows[0].toJsonString() }}\n\nIndexing status is as follows:\n{{ $json.inspectionResult.toJsonString() }}","options":{},"promptType":"define"},"typeVersion":2}],"active":false,"settings":{"callerPolicy":"workflowsFromSameOwner","errorWorkflow":"5","executionOrder":"v1","saveManualExecutions":true,"saveDataSuccessExecution":"all"},"versionId":"dc23ed85-f60d-4a41-b7c1-19cd5ac272b4","connections":{"SEO analyst":{"main":[[{"node":"Markdown to HTML","type":"main","index":0}]]},"HTTP Request":{"ai_tool":[[{"node":"SEO analyst","type":"ai_tool","index":0}]]},"Convert to JSON":{"main":[[{"node":"Split Out to Table","type":"main","index":0}]]},"Get sitemap XML":{"main":[[{"node":"Convert to JSON","type":"main","index":0}]]},"Loop Over Items":{"main":[[{"node":"Enforce Order - Positions Last","type":"main","index":1}],[{"node":"Get Page GSC Status","type":"main","index":0},{"node":"Get Page GSC Stats","type":"main","index":0},{"node":"Get Google Analytics Data","type":"main","index":0}]]},"Markdown to HTML":{"main":[[{"node":"Merge AI Output With AI Input","type":"main","index":1}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"SEO analyst","type":"ai_languageModel","index":0}]]},"Remove Duplicates":{"main":[[{"node":"Sort For Testing Purposes","type":"main","index":0}]]},"Get Page GSC Stats":{"main":[[{"node":"Merge Status and Stats","type":"main","index":1}]]},"Split Out to Table":{"main":[[{"node":"Remove Duplicates","type":"main","index":0}]]},"Get Page GSC Status":{"main":[[{"node":"Merge Status and Stats","type":"main","index":0}]]},"Globals - CHANGE ME!":{"main":[[{"node":"Get sitemap XML","type":"main","index":0}]]},"Merge Status and Stats":{"main":[[{"node":"SEO analyst","type":"main","index":0},{"node":"Wait to Comply with API Limits","type":"main","index":0}]]},"Get Google Analytics Data":{"main":[[{"node":"Merge Status and Stats","type":"main","index":2}]]},"Sort For Testing Purposes":{"main":[[{"node":"Limit for Testing Purposes","type":"main","index":0}]]},"Keep Only Valuable Columns":{"main":[[{"node":"Change to HTML table for sending","type":"main","index":0}]]},"Limit for Testing Purposes":{"main":[[{"node":"Enforce Order - Positions Last","type":"main","index":0},{"node":"Loop Over Items","type":"main","index":0}]]},"Merge AI Output With AI Input":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Enforce Order - Positions Last":{"main":[[{"node":"Keep Only Valuable Columns","type":"main","index":0}]]},"Wait to Comply with API Limits":{"main":[[{"node":"Merge AI Output With AI Input","type":"main","index":0}]]},"Change to HTML table for sending":{"main":[[{"node":"Send Email with Full report","type":"main","index":0}]]},"When clicking ‘Test workflow’":{"main":[[{"node":"Globals - CHANGE ME!","type":"main","index":0}]]}}}


name: Stock Market Daily Digest with Bright Data Scraping & Gemini AI Email Reports
author_name: Zacharia Kimotho
author_username: imperolq
categories: []
created_at: 2025-06-25T14:24:49.875Z
updated_at: 2025-06-25T14:24:49.875Z
url: https://n8n.io/workflows/5305
scraped_at: 2025-07-06 21:16:30
description:
  This workflow makes it easier to keep track of the stocks market and get an email with a summary of the daily highlights on what happened, key insights and trends 

  Setup Guide 

  Define the schedule (days, times, intervals).
  Replace sample stock data with your desired stock list (ticker, name, etc.) in JSON format.
  Split Out the fields to have a clean list of the stocks to monitor
  set keyword node Extracts the stock ticker from each item and sets it to the keyword property.
  Financial times scraper Triggers the Bright Data Datasets API to scrape financial data. Set the node as below

      Method: POST
      URL: https://api.brightdata.com/datasets/v3/trigger
      Query Parameters:
          dataset_id: Replace with your Bright Data dataset ID.
          include_errors: true
          type: discover_new
          discover_by: keyword
      Headers:
          Authorization: Bearer YOUR_BRIGHTDATA_API_KEY Replace with your Bright Data API key.
      Body: JSON,  ={{ $('set keyword').all().map(item =&gt; item.json)}}
      Execute Once: Checked.
  Get progress node Checks the status of the Bright Data scraping job if complete, or running
  Setup:
      URL: https://api.brightdata.com/datasets/v3/progress/{{ $json.snapshot_id }}
      Headers:
          Authorization: Bearer YOUR_BRIGHTDATA_API_KEY Replace with your Bright Data API key.

  Get snapshot + data retrieves the scraped data from the Bright Data API. Pass the request as 
      URL: https://api.brightdata.com/datasets/v3/snapshot/{{ $json.snapshot_id }}
      Query Parameters: format: json
      Headers:
          Authorization: Bearer YOUR_BRIGHTDATA_API_KEY Replace with your Bright Data API key.

  Aggregate. Combines the data from each stock item into a single object
  Update to sheet and add all items to This sheet. Make a copy before you can map the data 

  create summary node generates a summary of the scraped stock data using the Google Gemini AI model and notifies you via Gmail.
  Setup:
      Prompt Type: define
      Text: Customize the prompt to define the AI's role, input format, tasks, output format (HTML email), and constraints.
  Google Sheets. Appends the scraped data to a Google Sheet. This should be set to automap so as to adjust to the results found in the request

  Important Notes:

  Remember to replace placeholder values (API keys, dataset IDs, email addresses, Google Sheet IDs) with your actual values.
  Review and customize the AI prompt for the "create summary" node to achieve the desired email summary output.
  Consider adding error handling for a more robust workflow.
  Monitor API usage to avoid rate limits.

nodes_used:
  ["n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatGoogleGemini"]

workflow_json:
  {"meta":{"instanceId":"db80165df40cb07c0377167c050b3f9ab0b0fb04f0e8cae0dc53f5a8527103ca","templateCredsSetupCompleted":true},"nodes":[{"id":"e27afbc7-8cae-44b6-b506-474bb2692f08","name":"Wait","type":"n8n-nodes-base.wait","position":[-640,-300],"webhookId":"cf27222d-20db-4ba5-bd4c-e6ca05efd4d7","parameters":{"amount":20},"typeVersion":1.1},{"id":"2cc8d35f-f255-4adc-b1d7-7f9ab34dde66","name":"Get progress","type":"n8n-nodes-base.httpRequest","position":[-1020,-400],"parameters":{"url":"=https://api.brightdata.com/datasets/v3/progress/{{ $json.snapshot_id }}","options":{},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer YOUR_TOKEN_HERE"}]}},"typeVersion":4.2},{"id":"eb6ab86c-3e8b-4dc6-8d70-3346531905fa","name":"Switch","type":"n8n-nodes-base.switch","position":[-840,-400],"parameters":{"rules":{"values":[{"outputKey":"ready","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"4712e222-2bad-4d91-be87-ab0e0693c0c6","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"ready"}]},"renameOutput":true},{"outputKey":"running","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"9a473960-6ba5-4f1b-afc6-396348bd338d","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"=running"}]},"renameOutput":true}]},"options":{}},"typeVersion":3.2},{"id":"88b7e912-af0c-4527-baa3-4f8cf0b072d1","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[-1660,-400],"parameters":{"options":{},"fieldToSplitOut":"json"},"typeVersion":1},{"id":"d0ee4823-0536-415e-8fa9-861c1701665d","name":"SAMPLE DATA","type":"n8n-nodes-base.set","position":[-1860,-400],"parameters":{"options":{},"assignments":{"assignments":[{"id":"8d1bd0c8-37bf-4028-a20c-ac214ec06d7b","name":"json","type":"array","value":"=[\n  {\n    \"ticker\": \"NVDA\",\n    \"name\": \"NVIDIA Corporation\",\n    \"market_cap\": \"≈ $3.6T\"\n  },\n  {\n    \"ticker\": \"MSFT\",\n    \"name\": \"Microsoft Corporation\",\n    \"market_cap\": \"≈ $3.6T\"\n  },\n  {\n    \"ticker\": \"AAPL\",\n    \"name\": \"Apple Inc.\",\n    \"market_cap\": \"≈ $3.0T\"\n  },\n  {\n    \"ticker\": \"AMZN\",\n    \"name\": \"Amazon.com Inc.\",\n    \"market_cap\": \"≈ $2.2T\"\n  },\n  {\n    \"ticker\": \"GOOGL\",\n    \"name\": \"Alphabet Inc.\",\n    \"market_cap\": \"≈ $1.9T\"\n  },\n  {\n    \"ticker\": \"META\",\n    \"name\": \"Meta Platforms Inc.\",\n    \"market_cap\": \"≈ $1.5T\"\n  },\n  {\n    \"ticker\": \"BRK.B\",\n    \"name\": \"Berkshire Hathaway Inc.\",\n    \"market_cap\": \"≈ $1.1T\"\n  },\n  {\n    \"ticker\": \"TSLA\",\n    \"name\": \"Tesla Inc.\",\n    \"market_cap\": \"≈ $830B\"\n  },\n  {\n    \"ticker\": \"UNH\",\n    \"name\": \"UnitedHealth Group Inc.\",\n    \"market_cap\": \"≈ $450B\"\n  },\n  {\n    \"ticker\": \"JNJ\",\n    \"name\": \"Johnson & Johnson\",\n    \"market_cap\": \"≈ $450B\"\n  }\n]\n"}]}},"typeVersion":3.4},{"id":"2aab292f-0287-4da6-86ee-83c5a9aee30a","name":"set keyword","type":"n8n-nodes-base.set","position":[-1480,-400],"parameters":{"options":{},"assignments":{"assignments":[{"id":"8d9e80d9-16dd-4658-928f-d94735209bfd","name":"keyword","type":"string","value":"={{ $json.ticker }}"}]}},"typeVersion":3.4},{"id":"13f81727-f586-4fb6-be73-4880c9efd165","name":"Financial times scraper","type":"n8n-nodes-base.httpRequest","position":[-1260,-400],"parameters":{"url":"https://api.brightdata.com/datasets/v3/trigger","method":"POST","options":{},"jsonBody":"={{ $('set keyword').all().map(item => item.json)}}","sendBody":true,"sendQuery":true,"sendHeaders":true,"specifyBody":"json","queryParameters":{"parameters":[{"name":"dataset_id","value":"gd_lmrpz3vxmz972ghd7"},{"name":"include_errors","value":"true"},{"name":"type","value":"discover_new"},{"name":"discover_by","value":"keyword"}]},"headerParameters":{"parameters":[{"name":"Authorization","value":"=Bearer YOUR_TOKEN_HERE"}]}},"executeOnce":true,"typeVersion":4.2},{"id":"5e828381-8268-4114-b16c-a60c4ca23e80","name":"Get snapshot + data","type":"n8n-nodes-base.httpRequest","position":[-620,-480],"parameters":{"url":"=https://api.brightdata.com/datasets/v3/snapshot/{{ $json.snapshot_id }}","options":{},"sendQuery":true,"sendHeaders":true,"queryParameters":{"parameters":[{"name":"format","value":"json"}]},"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer YOUR_TOKEN_HERE"}]}},"typeVersion":4.2},{"id":"4c2826ee-30bb-4438-a531-c370edbe2103","name":"Aggregate","type":"n8n-nodes-base.aggregate","position":[-300,-280],"parameters":{"options":{},"aggregate":"aggregateAllItemData"},"typeVersion":1},{"id":"9cd0f2fd-248b-4047-aeb3-1a548ad02514","name":"Google Sheets","type":"n8n-nodes-base.googleSheets","position":[-320,-620],"parameters":{"columns":{"value":{},"schema":[],"mappingMode":"autoMapInputData","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1I5CvpHlmDsIFOfnGg4DEtniem0oTiumWWzGs4CV6AuM/edit#gid=0","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"list","value":"1I5CvpHlmDsIFOfnGg4DEtniem0oTiumWWzGs4CV6AuM","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1I5CvpHlmDsIFOfnGg4DEtniem0oTiumWWzGs4CV6AuM/edit?usp=drivesdk","cachedResultName":"Stock Monitor"}},"credentials":{"googleSheetsOAuth2Api":{"id":"ZAI2a6Qt80kX5a9s","name":"Google Sheets account✅ "}},"typeVersion":4.6},{"id":"d9797a77-bdf3-4600-bcd7-21311bb405fd","name":"Google Gemini Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[0,-260],"parameters":{"options":{},"modelName":"models/gemini-2.0-flash-lite"},"credentials":{"googlePalmApi":{"id":"Xp5T9q3YYxBIw2nd","name":"Google Gemini(PaLM) Api account✅"}},"typeVersion":1},{"id":"ef5165a4-0452-4b20-b2fa-994429f3bc5b","name":"create summary","type":"@n8n/n8n-nodes-langchain.agent","position":[0,-480],"parameters":{"text":"=\n\n## 📤 SYSTEM PROMPT: Daily Stock Summary Email Generator (for n8n AI Agent)\n\n````markdown\n## 🎯 ROLE\nYou are a financial summary agent integrated in an n8n workflow. Your role is to:\n- Analyze incoming JSON data of top 10 U.S. stocks.\n- Identify meaningful insights: trends, outliers, sentiment, sector behavior.\n- Format this into a **clear, styled HTML email body** for professional users.\n- Return the **HTML content only** – ready to send via n8n’s email nodes.\n\n---\n\n## 📥 INPUT FORMAT (JSON)\n\nYou will receive daily JSON input structured like this:\n\n\nThe day and date today is {{ $now.format('cccc yyyy-MM-dd t ') }}\n\nHere is today’s data: =\n\n```\n\n{{ $json.data.toJsonString() }}\n\n```\n\n---\n\n## ✅ TASKS\n\n1. **Analyze market trends** based on price movements and sentiment.\n2. **Highlight top 2 gainers and losers**, including reasoning from news or change %.\n3. **Generate a stock table** (Ticker, Name, Price Change, Sentiment Icon).\n4. **Include 3–5 key takeaways**, insights, or investor watch notes.\n5. **Add upcoming events** if mentioned in news or based on date.\n6. Format everything as **HTML only**, ready for use in an email body.\n\n---\n\n## ✨ OUTPUT FORMAT (HTML Only)\n\n* Include inline styles (no external CSS).\n* Use semantic structure:\n\n  * `<h2>` for main title\n  * `<ul>` for movers and insights\n  * `<table>` for stock data\n* Use icons or colors for sentiment: 🟢 Positive, 🟡 Neutral, 🔴 Negative\n* Footer: “Generated automatically by your AI-powered stock monitor”\n\n---\n\n## ⚠️ CONSTRAINTS\n\n* DO NOT include subject or email headers\n* DO NOT output plaintext explanations or markdown\n* Output **HTML only**, clean and professional\n\n---\n\n## 📬 GOAL\n\nDeliver a polished, mobile-friendly, and insightful daily stock market summary email that can be sent directly by n8n. Final output should require zero manual edits.\n\n","options":{},"promptType":"define"},"typeVersion":2},{"id":"cf744498-62bf-4e6a-8570-dda7fea35fe5","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-2140,-400],"parameters":{"rule":{"interval":[{}]}},"typeVersion":1.2},{"id":"d564ee93-181f-461b-8ace-2dcb26439b6c","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1940,-600],"parameters":{"color":5,"width":220,"height":420,"content":"## Add stock to track\n\nYou will add a list of the stocks you need to track here"},"typeVersion":1},{"id":"0c7e5d90-ce9e-456c-9f48-ba6872557467","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-1680,-600],"parameters":{"color":4,"width":340,"height":420,"content":"## Split and set the field names\nThe field name MUST be keyword to match the bright data API"},"typeVersion":1},{"id":"64d932ee-f0b1-458a-a017-505676666c18","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-1320,-600],"parameters":{"color":2,"height":420,"content":"## Financial Times scraper\nScrap the latest trends in our selected Stock. \n\nSet it to run once"},"typeVersion":1},{"id":"bb55cc08-f262-42c1-9951-00771689495a","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-1040,-680],"parameters":{"color":4,"width":620,"height":520,"content":"## Check the status of the progress and Get results\n\nIf `running` we make it loop until done"},"typeVersion":1},{"id":"9bc67859-d0b7-4d48-84d3-d0b9c90e8ca5","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-700,-560],"parameters":{"color":7,"width":260,"height":260,"content":"## Get scraping results"},"typeVersion":1},{"id":"9627ec91-d2c4-4076-b39f-9f8be978177b","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-380,-420],"parameters":{"width":280,"height":280,"content":"## Aggregate results to pass to AI for our email summary"},"typeVersion":1},{"id":"e01b8ad5-e028-4c81-9162-b27ae75687a3","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[-60,-720],"parameters":{"color":3,"width":520,"height":600,"content":"## Create Draft email and notify admin\n\n\n\nCreate an email summary and notify the user"},"typeVersion":1},{"id":"8a23ca78-36e5-4ce3-b81d-fa62d770aa36","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[-380,-680],"parameters":{"color":6,"width":280,"height":240,"content":"## Save results to G sheets"},"typeVersion":1},{"id":"3f953ffd-4faa-4cd5-bd3a-b3a6d021eebf","name":"Gmail1","type":"n8n-nodes-base.gmailTool","position":[180,-260],"webhookId":"fe4a416a-43f3-4ad1-80c8-51f1de4c2343","parameters":{"sendTo":"kimothozacharia5@gmail.com","message":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', `A detailed summary of the stock performance today. Must Look good`, 'string') }}","options":{"appendAttribution":false},"subject":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', `Daily Stock report for {date today}`, 'string') }}"},"credentials":{"gmailOAuth2":{"id":"8PS0qVYNzZvoWNA7","name":"phoenix✅"}},"typeVersion":2.1}],"connections":{"Wait":{"main":[[{"node":"Get progress","type":"main","index":0}]]},"Gmail1":{"ai_tool":[[{"node":"create summary","type":"ai_tool","index":0}]]},"Switch":{"main":[[{"node":"Get snapshot + data","type":"main","index":0}],[{"node":"Wait","type":"main","index":0}]]},"Aggregate":{"main":[[{"node":"create summary","type":"main","index":0}]]},"Split Out":{"main":[[{"node":"set keyword","type":"main","index":0}]]},"SAMPLE DATA":{"main":[[{"node":"Split Out","type":"main","index":0}]]},"set keyword":{"main":[[{"node":"Financial times scraper","type":"main","index":0}]]},"Get progress":{"main":[[{"node":"Switch","type":"main","index":0}]]},"Google Sheets":{"main":[[]]},"create summary":{"main":[[]]},"Schedule Trigger":{"main":[[{"node":"SAMPLE DATA","type":"main","index":0}]]},"Get snapshot + data":{"main":[[{"node":"Google Sheets","type":"main","index":0},{"node":"Aggregate","type":"main","index":0}]]},"Financial times scraper":{"main":[[{"node":"Get progress","type":"main","index":0}]]},"Google Gemini Chat Model":{"ai_languageModel":[[{"node":"create summary","type":"ai_languageModel","index":0}]]}}}


name: AI Resume Processing and GitHub Analysis with VLM Run
author_name: Shahrear
author_username: shahrear
categories: []
created_at: 2025-06-25T15:48:27.875Z
updated_at: 2025-06-25T15:48:27.875Z
url: https://n8n.io/workflows/5306
scraped_at: 2025-07-06 21:16:30
description:
  This workflow contains community nodes that are only compatible with the self-hosted version of n8n. 

  Automatically transform resume submissions into comprehensive candidate profiles with AI-powered parsing, GitHub analysis, and instant team notifications.

  What this workflow does
  Monitors Gmail for incoming resume attachments
  Extracts structured data using VLM Run AI document parsing
  Analyzes GitHub profiles with deep repository intelligence (30+ frameworks detected)
  Creates comprehensive candidate profiles with technical skills assessment
  Delivers multi-channel notifications via Google Sheets, Slack, and candidate emails

  Setup
  Prerequisites: Gmail account, VLM Run API credentials, Google Sheets access, Slack workspace, self-hosted n8n.
  You need to install VLM Run community node

  Quick Setup:
  Configure Gmail OAuth2 for resume monitoring
  Add VLM Run API credentials for document parsing
  Create Google Sheets candidate database
  Set up Slack integration for team notifications
  Update spreadsheet/channel IDs in workflow nodes
  Test with sample resume and activate

  Perfect for
  HR departments and technical recruiting teams
  Startup hiring and talent acquisition agencies
  Developer assessment and skill evaluation
  Remote team hiring and candidate screening
  Any organization seeking data-driven hiring decisions

  Key Benefits
  Eliminates manual data entry** - AI extracts all contact info, skills, and experience
  GitHub intelligence engine** - Analyzes repositories, calculates experience, detects technologies
  Comprehensive skill assessment** - Identifies programming languages, frameworks, and project metrics
  Professional candidate experience** - Automated acknowledgment emails with personalized touches
  Instant team collaboration** - Rich Slack notifications with GitHub profile highlights
  Structured data storage** - Searchable candidate database with 20+ data columns
  Saves hours per candidate** - Transforms 30-minute manual reviews into instant insights

  How to customize
  Extend by adding:
  Integration with ATS systems (Greenhouse, Lever, BambooHR)
  LinkedIn profile analysis and social media insights
  Automated interview scheduling based on qualifications
  Skills-based candidate scoring and ranking algorithms
  Integration with code assessment platforms
  Multi-language resume support and translation
  Custom evaluation criteria and filtering rules
  Advanced GitHub metrics (code quality, contribution patterns)

  This workflow revolutionizes technical hiring by combining AI-powered resume parsing with deep GitHub analysis, delivering comprehensive candidate intelligence that empowers data-driven hiring decisions while maintaining a professional candidate experience.

nodes_used:
  ["n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","n8n-nodes-base.slack","n8n-nodes-base.gmail","n8n-nodes-base.code"]

workflow_json:
  {"meta":{"instanceId":"0a7ae129a7d703150135f6cc24d0469f20ffd22b5ed59c23ee3e0608264e6d98","templateCredsSetupCompleted":true},"nodes":[{"id":"bdf7d44b-b13e-4bfc-bbb5-0fabe8abd40a","name":"Send Acknowledgement Email","type":"n8n-nodes-base.gmail","position":[-20,1140],"webhookId":"959be407-da29-4fef-bb85-ac5cc6b41a6d","parameters":{"sendTo":"={{ $json.contact_info.email }}","message":"We will get in touch shortly.","options":{"senderName":"VLM Run","appendAttribution":false},"subject":"Thanks for Your Interest"},"credentials":{"gmailOAuth2":{"id":"7MVziRpoyD8arghO","name":"Gmail account 2"}},"typeVersion":2.1},{"id":"72290874-1493-4980-a445-ac5d5f752ebd","name":"🔍 GitHub Analysis Documentation3","type":"n8n-nodes-base.stickyNote","position":[-1460,100],"parameters":{"color":7,"width":1260,"height":640,"content":"## 🔍 GitHub Intelligence Engine\n\n**Deep analysis of candidate's GitHub profile and repositories.**\n\n**Profile Analysis:**\n- Account age & experience\n- Follower/following metrics\n- Public repository count\n- Bio and company info\n\n**Repository Intelligence:**\n- Language distribution\n- Framework detection (30+)\n- Total stars & forks\n- Recent activity tracking\n\n**Technology Detection:**\n- Frontend: React, Vue, Angular\n- Backend: Express, Django, Flask\n- Mobile: React Native, Flutter\n- DevOps: Docker, AWS, Kubernetes\n\n**Smart Features:**\n- Handles missing profiles gracefully\n- Calculates experience automatically\n- Ranks technologies by usage\n- Identifies trending skills"},"typeVersion":1},{"id":"2cc059ed-deb1-4cd6-bc35-a840e7e3fb9f","name":"🤖 AI Processing Documentation1","type":"n8n-nodes-base.stickyNote","position":[-1860,100],"parameters":{"color":3,"width":380,"height":880,"content":"## 🤖 AI Resume Analysis\n\n**VLM Run processes resumes to extract structured candidate data.**\n\n**Features:**\n- Contact information extraction\n- Skills identification\n- Experience parsing\n- Education details\n- Social profile detection\n\n**Advanced Extraction:**\n- Name, email, phone\n- GitHub & LinkedIn URLs\n- Work history\n- Technical skills\n- Certifications\n\n**Output:**\n- Structured JSON data\n- Normalized fields\n- Ready for analysis\n\n**Benefits:**\n- Eliminates manual data entry\n- Consistent formatting\n- Accurate extraction\n- Scalable processing"},"typeVersion":1},{"id":"92d64d61-d690-4d68-8ee7-ebb0f231c02c","name":"📧 Intake Documentation1","type":"n8n-nodes-base.stickyNote","position":[-2260,100],"parameters":{"color":7,"width":380,"height":880,"content":"## 📧 Resume Intake Processing\n\n**Monitors Gmail for incoming resume submissions and automatically triggers processing.**\n\n**Process:**\n1. Watches inbox every minute\n2. Detects emails with attachments\n3. Auto-triggers on new resumes\n4. Downloads PDF attachments\n\n**Supported Formats:**\n- PDF resumes\n- DOC/DOCX files\n- Various layouts\n- Multi-page documents\n\n**Trigger Conditions:**\n- New email received\n- Contains attachments\n- Attachment download enabled\n- Real-time processing"},"typeVersion":1},{"id":"a6a81e04-0f29-44c6-aa81-0b642517b7bb","name":"📋 Workflow Overview1","type":"n8n-nodes-base.stickyNote","position":[-2740,100],"parameters":{"color":7,"width":460,"height":880,"content":"## 📋 AI Resume Processing & GitHub Analysis\n\n**Overview:**\nAutomatically processes resumes received via email and generates comprehensive candidate profiles with AI-powered resume parsing and GitHub analysis.\n\n**Workflow:**\n1. 📧 Monitor Gmail for resume submissions\n2. 🤖 Parse resume with AI extraction\n3. 🔍 Analyze GitHub profile (if available)\n4. 📊 Create comprehensive candidate profile\n5. 💬 Notify team via Slack + save to Sheets\n6. ✉️ Send acknowledgment to candidate\n\n**Perfect for:**\n- HR departments\n- Technical recruiting\n- Talent acquisition teams\n- Startup hiring\n- Developer assessment\n\n**Requirements:**\n- VLM Run API access\n- Gmail OAuth2\n- Google Sheets access\n- Slack webhook\n- GitHub API (optional authentication)"},"typeVersion":1},{"id":"3d3a320b-b63d-4248-a01e-6f75fb77b716","name":"📊 Output Documentation1","type":"n8n-nodes-base.stickyNote","position":[-180,100],"parameters":{"color":7,"width":420,"height":1240,"content":"## 📊 Multi-Channel Output\n\n**Delivers comprehensive candidate data across multiple platforms.**\n\n**Google Sheets Integration:**\n- Structured candidate database\n- 20+ data columns\n- Searchable & filterable\n- Historical tracking\n\n**Slack Notifications:**\n- Instant team alerts\n- Rich candidate summaries\n- GitHub profile highlights\n- Technology breakdown\n\n**Email Automation:**\n- Professional acknowledgments\n- Personalized messages\n- GitHub profile mentions\n- Builds candidate experience\n\n**Benefits:**\n- Centralized data storage\n- Real-time team updates\n- Professional communication\n- Streamlined hiring process"},"typeVersion":1},{"id":"4c4d9503-4b4a-4a95-bf64-67d4e0acc7b2","name":"Monitor Gmail for Resumes","type":"n8n-nodes-base.gmailTrigger","position":[-2160,760],"parameters":{"simple":false,"filters":{},"options":{"downloadAttachments":true},"pollTimes":{"item":[{"mode":"everyMinute"}]}},"credentials":{"gmailOAuth2":{"id":"7MVziRpoyD8arghO","name":"Gmail account 2"}},"typeVersion":1.2},{"id":"a888c038-d826-4cd0-aefc-f9aca346a7f2","name":"Parse Resume with VLM Run","type":"@vlm-run/n8n-nodes-vlmrun.vlmRun","position":[-1720,760],"parameters":{"file":"attachment_0","domain":"document.resume"},"credentials":{"vlmRunApi":{"id":"cF5KpbVmnt36bdWr","name":"VLM Run account 6"}},"typeVersion":1},{"id":"1134c82c-77e6-438d-8fbc-77807837db17","name":"Check for Github Profile","type":"n8n-nodes-base.if","position":[-1360,760],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"e28a7d82-d42c-4ce0-9a7d-7f9ef94090c2","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.response.contact_info.github }}","rightValue":""}]}},"typeVersion":2.2},{"id":"29ef7e94-6c03-4e0c-98e6-3720b6e078cb","name":"Extract GitHub Username","type":"n8n-nodes-base.code","position":[-1080,540],"parameters":{"jsCode":"const url = $input.first().json.response.contact_info.github\nconst username = url.split('github.com/')[1].split('/')[0];\nreturn [{ json: { username } }];"},"typeVersion":2},{"id":"2c851eda-2501-4b8a-a855-9ac5cb750d3c","name":"Fetch GitHub Profile","type":"n8n-nodes-base.httpRequest","position":[-840,340],"parameters":{"url":"=https://api.github.com/users/{{ $json.username }}","options":{}},"typeVersion":4.2},{"id":"19528631-4eab-420b-9601-25d96e65b9c8","name":"Fetch GitHub Repositories","type":"n8n-nodes-base.httpRequest","position":[-840,540],"parameters":{"url":"=https://api.github.com/users/{{ $json.username }}/repos","options":{}},"typeVersion":4.2},{"id":"7ac5cbc4-828c-42d1-addf-162458ac6fda","name":"Process Profile Data","type":"n8n-nodes-base.code","position":[-620,340],"parameters":{"jsCode":"const user = items[0].json;\n\n// Parse creation and update dates\nconst created = new Date(user.created_at);\nconst updated = new Date(user.updated_at);\n\n// Calculate difference in milliseconds\nconst diffTime = Math.abs(updated - created);\n\n// Convert milliseconds to years\nconst years = diffTime / (1000 * 60 * 60 * 24 * 365.25);\n\n// Round to nearest whole number\nconst experience = `~${Math.round(years)}`;\n\n// Return desired output\nreturn [\n  {\n    json: {\n      login: user.login,\n      public_repos: user.public_repos,\n      followers: user.followers,\n      experience\n    }\n  }\n];"},"typeVersion":2},{"id":"1b32ce5f-3213-43b0-a604-be204c1ae476","name":"Analyze Repository Data","type":"n8n-nodes-base.code","position":[-600,540],"parameters":{"jsCode":"// Initialize counts\nlet languageCount = {};\nlet frameworkCount = {};\nlet totalStars = 0;\nlet totalForks = 0;\n\n// Full list of frameworks, libraries, and tools\nconst knownFrameworks = [\n  \"React\", \"Angular\", \"Vue\", \"Bootstrap\", \"Tailwind\", \"jQuery\",\n  \"Node\", \"Express\", \"Django\", \"Flask\", \"Spring Boot\", \"Laravel\", \"Rails\",\n  \"React Native\", \"Flutter\", \"Ionic\",\n  \"MongoDB\", \"MySQL\", \"PostgreSQL\", \"Firebase\",\n  \"Docker\", \"Jenkins\", \"GitHub\", \"GitLab\", \"AWS\", \"Azure\", \"Netlify\", \"Vercel\",\n  \"Jest\", \"Mocha\", \"Cypress\", \"Selenium\",\n  \"FastAPI\", \"Redux\", \"Redux Toolkit\"\n];\n\n// Helper function to extract frameworks\nfunction extractFrameworks(text) {\n  if (!text) return [];\n\n  const matches = new Set();\n  const lowerText = text.toLowerCase();\n\n  for (const fw of knownFrameworks) {\n    if (lowerText.includes(fw.toLowerCase())) {\n      matches.add(fw);\n    }\n  }\n\n  return Array.from(matches);\n}\n\n// Loop through repositories\nfor (const item of items) {\n  const repo = item.json;\n\n  // Count languages\n  const lang = repo.language;\n  if (lang) {\n    languageCount[lang] = (languageCount[lang] || 0) + 1;\n  }\n\n  // Count frameworks from description and topics\n  const descFrameworks = extractFrameworks(repo.description);\n  const topicFrameworks = extractFrameworks((repo.topics || []).join(\" \"));\n  const allFrameworks = new Set([...descFrameworks, ...topicFrameworks]);\n\n  for (const fw of allFrameworks) {\n    frameworkCount[fw] = (frameworkCount[fw] || 0) + 1;\n  }\n\n  // Add stars and forks\n  totalStars += repo.stargazers_count || 0;\n  totalForks += repo.forks_count || 0;\n}\n\n// Return combined result\nreturn [\n  {\n    json: {\n      languageCount,\n      frameworkCount,\n      totalStars,\n      totalForks\n    }\n  }\n];"},"typeVersion":2},{"id":"7f58201c-7656-4aae-9423-52680aa37b82","name":"Combine GitHub Data","type":"n8n-nodes-base.merge","position":[-360,540],"parameters":{"numberInputs":3},"typeVersion":3.1},{"id":"09f1229a-4638-44b2-8244-139b9b9022de","name":"Flatten Response","type":"n8n-nodes-base.code","position":[-500,780],"parameters":{"jsCode":"const allItems = $input.all();\n\n// Defensive checks to ensure indexes exist\nconst resumeData = allItems[0]?.json?.response || {};\nconst githubData = allItems[1]?.json || {};\nconst repoData = allItems[2]?.json || {};\n\n// Merge into one object\nconst mergedData = {\n  ...githubData,\n  ...resumeData,\n  ...repoData\n};\n\n// Return as single item array\nreturn [\n  {\n    json: mergedData\n  }\n];"},"typeVersion":2},{"id":"e8f89ee8-2bcd-464a-8ec8-2be11bf1c2b2","name":"Save to Google Sheet","type":"n8n-nodes-base.googleSheets","position":[-20,780],"parameters":{"columns":{"value":{"Name":"={{ $json.contact_info.full_name }}","Email":"={{ $json.contact_info.email }}","Phone no.":"={{ $json.contact_info.phone }}","Github URL":"={{ $json.contact_info.github }}","C++ Projects":"={{ $json.languageCount?.cpp || null }}","LinkedIn URL":"={{ $json.contact_info.linkedin }}","Java Projects":"={{ $json.languageCount?.Java || null }}","React Projects":"={{ $json.languageCount?.React || null }}","Python Projects":"={{ $json.languageCount?.Python || null }}","GitHub Experience":"={{ $json.expeience || null }}","GitHub Fork Count":"={{ $json.totalForks || null}}","GitHub Star Count":"={{ $json.totalStars || null }}","Github Repo Count":"={{ $json.public_repos || null }}","Javascript Projects":"={{ $json.languageCount?.JavaScript || null }}","TypeScript Projects":"={{ $json.languageCount?.TypeScript || null }}","Github follower count":"={{ $json.followers || null }}"},"schema":[{"id":"Name","type":"string","display":true,"removed":false,"required":false,"displayName":"Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Email","type":"string","display":true,"required":false,"displayName":"Email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Phone no.","type":"string","display":true,"required":false,"displayName":"Phone no.","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Github URL","type":"string","display":true,"required":false,"displayName":"Github URL","defaultMatch":false,"canBeUsedToMatch":true},{"id":"LinkedIn URL","type":"string","display":true,"required":false,"displayName":"LinkedIn URL","defaultMatch":false,"canBeUsedToMatch":true},{"id":"GitHub Experience","type":"string","display":true,"required":false,"displayName":"GitHub Experience","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Github follower count","type":"string","display":true,"required":false,"displayName":"Github follower count","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Github Repo Count","type":"string","display":true,"required":false,"displayName":"Github Repo Count","defaultMatch":false,"canBeUsedToMatch":true},{"id":"GitHub Star Count","type":"string","display":true,"required":false,"displayName":"GitHub Star Count","defaultMatch":false,"canBeUsedToMatch":true},{"id":"GitHub Fork Count","type":"string","display":true,"required":false,"displayName":"GitHub Fork Count","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Javascript Projects","type":"string","display":true,"required":false,"displayName":"Javascript Projects","defaultMatch":false,"canBeUsedToMatch":true},{"id":"TypeScript Projects","type":"string","display":true,"required":false,"displayName":"TypeScript Projects","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Python Projects","type":"string","display":true,"required":false,"displayName":"Python Projects","defaultMatch":false,"canBeUsedToMatch":true},{"id":"C++ Projects","type":"string","display":true,"required":false,"displayName":"C++ Projects","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Java Projects","type":"string","display":true,"required":false,"displayName":"Java Projects","defaultMatch":false,"canBeUsedToMatch":true},{"id":"React Projects","type":"string","display":true,"required":false,"displayName":"React Projects","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["Name"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1q-272l0Ha8qz981Y0rGI8jXu-6zja5DSwiFZmHahQe8/edit#gid=0","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"list","value":"1q-272l0Ha8qz981Y0rGI8jXu-6zja5DSwiFZmHahQe8","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1q-272l0Ha8qz981Y0rGI8jXu-6zja5DSwiFZmHahQe8/edit?usp=drivesdk","cachedResultName":"Candidate VLM Run n8n"}},"credentials":{"googleSheetsOAuth2Api":{"id":"PUb43NJG1YGrwYl2","name":"Google Sheets account 2"}},"typeVersion":4.5},{"id":"4f4fd7ca-fc02-44c1-a617-02eec8aedbdb","name":"Send Slack Notification","type":"n8n-nodes-base.slack","position":[-20,960],"webhookId":"40bb1048-877d-4221-91ff-3cb7923dbdd8","parameters":{"text":"=🚨 *New Job Application Received!*\n\n📨 *Candidate Name:* {{ $json.contact_info.full_name }}\n📧 *Email:* <mailto:{{ $json.contact_info.email }}|{{ $json.contact_info.email }}>\n\n📝 A new application has just been submitted. Check <https://docs.google.com/spreadsheets/d/1DWi8rZy6LPHFe7JDzPXuIh_VO027P20C3Om9Owf--1g/edit?gid=0#gid=0/|here> for full details.","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C08S3SR2LUW","cachedResultName":"workflow-testing"},"otherOptions":{"mrkdwn":true}},"credentials":{"slackApi":{"id":"sNMFh7sXAUyWsuXd","name":"Slack account 2"}},"typeVersion":2.3}],"connections":{"Flatten Response":{"main":[[{"node":"Send Slack Notification","type":"main","index":0},{"node":"Send Acknowledgement Email","type":"main","index":0},{"node":"Save to Google Sheet","type":"main","index":0}]]},"Combine GitHub Data":{"main":[[{"node":"Flatten Response","type":"main","index":0}]]},"Fetch GitHub Profile":{"main":[[{"node":"Process Profile Data","type":"main","index":0}]]},"Process Profile Data":{"main":[[{"node":"Combine GitHub Data","type":"main","index":0}]]},"Analyze Repository Data":{"main":[[{"node":"Combine GitHub Data","type":"main","index":1}]]},"Extract GitHub Username":{"main":[[{"node":"Fetch GitHub Profile","type":"main","index":0},{"node":"Fetch GitHub Repositories","type":"main","index":0}]]},"Check for Github Profile":{"main":[[{"node":"Extract GitHub Username","type":"main","index":0}],[{"node":"Flatten Response","type":"main","index":0}]]},"Fetch GitHub Repositories":{"main":[[{"node":"Analyze Repository Data","type":"main","index":0}]]},"Monitor Gmail for Resumes":{"main":[[{"node":"Parse Resume with VLM Run","type":"main","index":0}]]},"Parse Resume with VLM Run":{"main":[[{"node":"Check for Github Profile","type":"main","index":0}]]}}}


name: AI Audio Transcription & Google Docs Report Generator with VLM Run
author_name: Shahrear
author_username: shahrear
nodes_used: ["n8n-nodes-base.googleDocs"]
categories: []
created_at: 2025-06-25T15:53:16.242Z
updated_at: 2025-06-25T15:53:16.242Z
url: https://n8n.io/workflows/5307
scraped_at: 2025-07-06 21:16:30
description:
  This workflow contains community nodes that are only compatible with the self-hosted version of n8n. 

  Automatically transform audio files into professional transcription reports with AI-powered speech recognition, timestamp generation, and formatted Google Docs output.

  What this workflow does
  Monitors Gmail for incoming audio attachments
  Downloads and processes audio files using VLM Run AI transcription
  Generates accurate transcriptions with precise timestamps and segmentation
  Creates professional reports in Google Docs with formatted output
  Handles asynchronous processing for long audio files without timeouts

  Setup
  Prerequisites: Gmail account, VLM Run API credentials, Google Docs access, self-hosted n8n.
  You need to install VLM Run community node

  Quick Setup:
  Configure Gmail OAuth2 for email monitoring
  Add VLM Run API credentials for audio transcription
  Set up Google Docs OAuth2 for report generation
  Create target Google Doc for transcription reports
  Update document URL in workflow nodes
  Test with sample audio file and activate

  Perfect for
  Meeting recordings and conference calls
  Voice memos and dictation workflows
  Interview transcriptions and journalism
  Podcast episode documentation
  Accessibility compliance and documentation
  Legal proceedings and court recordings
  Educational content and lecture notes
  Customer service call analysis

  Key Benefits
  Human-level accuracy** - Advanced AI speech recognition with automatic punctuation
  Timestamp precision** - Segmented transcriptions with exact time markers
  Multi-format support** - Handles MP3, WAV, M4A, AAC, OGG, FLAC files
  Asynchronous processing** - No timeouts for long audio files
  Professional formatting** - Beautifully structured Google Docs reports
  Automatic workflow** - Zero manual intervention required
  Saves hours per recording** - Transforms manual transcription into instant results
  Searchable documentation** - Google Docs integration enables easy content discovery

  How to customize
  Extend by adding:
  Speaker identification and diarization
  Integration with project management tools (Notion, Asana, Trello)
  Automatic summary generation from transcripts
  Translation to multiple languages
  Slack notifications for completed transcriptions
  Integration with CRM systems for call logging
  Audio quality enhancement preprocessing
  Custom formatting templates for different use cases
  Automatic keyword extraction and tagging
  Integration with calendar systems for meeting context

  This workflow revolutionizes audio documentation by combining cutting-edge AI transcription with professional report generation, making spoken content instantly accessible, searchable, and shareable across your organization.

workflow_json:
  {"meta":{"instanceId":"0a7ae129a7d703150135f6cc24d0469f20ffd22b5ed59c23ee3e0608264e6d98","templateId":"3905","templateCredsSetupCompleted":true},"nodes":[{"id":"2175eca1-4842-4601-b0ac-84264cdc48ca","name":"🎙️ Workflow Overview","type":"n8n-nodes-base.stickyNote","position":[-260,720],"parameters":{"color":7,"width":460,"height":720,"content":"## 🎙️ AI Audio Transcription with VLM Run\n\n**Overview:**\nAutomatically transcribes audio files from Gmail and generates formatted transcription reports in Google Docs.\n\n**Workflow:**\n1. 📧 Monitor Gmail for audio attachments\n2. 🎵 Extract and process audio files\n3. 🤖 Transcribe using VLM Run AI\n4. 🔗 Receive results via webhook\n5. 📄 Generate formatted Google Doc\n\n\n**Perfect for:**\n- Meeting recordings\n- Voice memos\n- Interview transcriptions\n- Podcast notes\n- Audio journalism\n- Accessibility documentation\n\n\n**Requirements:**\n- VLM Run API access\n- Gmail OAuth2\n- Google Docs OAuth2\n- Webhook endpoint"},"typeVersion":1},{"id":"3d1b367c-226c-4d9c-bc9e-0643ff3896bc","name":"📧 Email Monitoring","type":"n8n-nodes-base.stickyNote","position":[220,720],"parameters":{"color":7,"width":360,"height":720,"content":"## 📧 Gmail Audio Detection\n\n**Monitors incoming emails and automatically downloads audio attachments.**\n\n**Process:**\n1. Polls Gmail every minute\n2. Detects new emails with attachments\n3. Downloads audio files automatically\n4. Triggers transcription workflow\n\n\n**Supported Formats:**\n- MP3, WAV, M4A\n- AAC, OGG, FLAC\n- Various bitrates\n- Mobile recordings\n\n\n**Configuration:**\n- Enable attachment downloads\n- Automatic file extraction"},"typeVersion":1},{"id":"4c2744d9-c35d-4629-ac54-b3f299cf16e3","name":"🤖 AI Transcription","type":"n8n-nodes-base.stickyNote","position":[600,720],"parameters":{"color":2,"width":360,"height":720,"content":"## 🤖 Audio AI Processing\n\n**VLM Run transcribes audio with high accuracy**\n\n**Features:**\n- Advanced speech recognition\n- Automatic punctuation\n- Timestamp generation\n\n\n**Output:**\n- Complete transcription\n- Time-segmented text\n- Metadata extraction\n- Duration information\n\n\n**Benefits:**\n- Human-level accuracy\n- Fast processing\n- Consistent formatting\n- Professional quality"},"typeVersion":1},{"id":"52c19808-27ae-4ccd-af4d-a977bd44f18a","name":"🔗 Async Processing","type":"n8n-nodes-base.stickyNote","position":[980,720],"parameters":{"color":5,"width":320,"height":720,"content":"## 🔗 Webhook Processing Flow\n\n**How asynchronous transcription works:**\n\n**Step 1:** Audio sent to VLM Run with callback URL\n**Step 2:** Transcription starts in background\n**Step 3:** Webhook receives completion\n**Step 4:** Results formatted for Google Docs\n\n\n**Why Async?**\n- Handles long audio files\n- Prevents workflow timeouts\n- Better resource management\n- Reliable processing\n\n\n**Callback Data:**\n- Complete transcript\n- Segment timestamps\n- Processing metadata\n- Error handling"},"typeVersion":1},{"id":"7046634c-3534-4f62-9df9-7ece42a4b969","name":"📄 Document Generation","type":"n8n-nodes-base.stickyNote","position":[1320,720],"parameters":{"color":7,"width":320,"height":720,"content":"## 📄 Professional Reports\n\n**Creates beautifully formatted Google Docs with transcription results.**\n\n**Report includes:**\n- Date and timestamp\n- Total audio duration\n- Segmented transcription\n- Time markers for each segment\n- Professional formatting\n\n\n**Output Location:**\n- Specified Google Doc\n- Appends new transcriptions\n- Maintains formatting"},"typeVersion":1},{"id":"31d1f0c3-73e7-4e1a-bc08-72c5694e7153","name":"Monitor Email Attachments","type":"n8n-nodes-base.gmailTrigger","notes":"Continuously monitors Gmail for new emails with audio attachments. Automatically downloads all attachments and triggers the transcription workflow.","position":[320,1260],"parameters":{"simple":false,"filters":{},"options":{"downloadAttachments":true},"pollTimes":{"item":[{"mode":"everyMinute"}]}},"credentials":{"gmailOAuth2":{"id":"7MVziRpoyD8arghO","name":"Gmail account 2"}},"typeVersion":1.2},{"id":"d2c14402-db05-4bf4-a8a5-402587d69ee8","name":"VLM Run Audio Transcriber","type":"@vlm-run/n8n-nodes-vlmrun.vlmRun","notes":"Processes audio files using VLM AI to generate accurate transcriptions with timestamps. Runs asynchronously for large audio files.","position":[720,1260],"parameters":{"file":"attachment_0","domain":"audio.transcription","operation":"audio","callbackUrl":"https://playground.vlm.run/webhook/audio-transcription","processAsynchronously":true},"credentials":{"vlmRunApi":{"id":"cF5KpbVmnt36bdWr","name":"VLM Run account 6"}},"typeVersion":1},{"id":"98e98532-dc44-4b15-a75d-24b3d7823c84","name":"Receive Transcription Results","type":"n8n-nodes-base.webhook","notes":"Receives the completed transcription from VLM AI when asynchronous processing is finished. Contains full transcript with timestamps.","position":[1080,1260],"webhookId":"d599acd8-1891-4d07-b2f9-092cb6381b41","parameters":{"path":"audio-transcription","options":{},"httpMethod":"POST"},"typeVersion":2},{"id":"c9468f04-42da-4725-a462-97cdcf6c40ac","name":"Generate Transcription Report","type":"n8n-nodes-base.googleDocs","notes":"Creates a professionally formatted Google Doc with the transcription results, including timestamps and metadata.","position":[1420,1260],"parameters":{"simple":false,"actionsUi":{"actionFields":[{"text":"=📄 Audio Transcription Report\n\n🗓️ Date: {{ new Date($json.body.completed_at).toLocaleString('en-US', { dateStyle: 'medium', timeStyle: 'short' }) }}  \n⏱️ Total Duration: {{ $json.body.response.metadata.duration }} seconds  \n{{ \n$json.body.response.segments.map((segment, index) => \n  `\\n` +\n  `🔹 Segment ${index + 1}\\n` +\n  `⏰ Time: ${segment.start_time.toFixed(2)}s → ${segment.end_time.toFixed(2)}s\\n` +\n  `📝 Transcript: \"${segment.content.trim()}\"\\n`\n).join('\\n')\n}}\n","action":"insert"}]},"operation":"update","documentURL":"https://docs.google.com/document/d/1QFHvOgEYKMLVpIRv6Mc7lXfDXhtoozgEK7O-wuNLzl0/edit?tab=t.0","authentication":"oAuth2"},"credentials":{"googleDocsOAuth2Api":{"id":"3x0WI9iZ6ToA2fXw","name":"Google Docs account"}},"typeVersion":1}],"connections":{"Monitor Email Attachments":{"main":[[{"node":"VLM Run Audio Transcriber","type":"main","index":0}]]},"Receive Transcription Results":{"main":[[{"node":"Generate Transcription Report","type":"main","index":0}]]}}}


name: Create Animated Baby Podcast Videos with GPT, DALL-E, ElevenLabs and Hedra
author_name: Adam Crafts
author_username: adamcrafts
categories: []
created_at: 2025-06-25T17:51:07.003Z
updated_at: 2025-06-25T17:51:07.003Z
url: https://n8n.io/workflows/5308
scraped_at: 2025-07-06 21:16:30
description:
  🚀 Overview

  This workflow is your personal content creation studio for social media. It takes a simple idea and a few descriptive words and automatically produces a complete, ready-to-share video of a custom-designed baby hosting their own podcast. It's the ultimate tool for creating unique, funny, and engaging content that captures attention and drives shares.

  😩 The Problem

  Creating animated video content is a massive headache. Manually, you'd have to:
  Hire or be a skilled graphic designer to create the character.
  Write a clever and engaging script.
  Find a voice actor to record the audio.
  Use complex and expensive animation software to make the character's mouth and expressions match the audio.
  Render and export the final video.

  This process is incredibly time-consuming, requires specialized skills, and can cost hundreds or even thousands of dollars for a single short video. The barrier to creating fun, viral content is just too high.

  ✨ The Solution

  This workflow acts as your automated video production team! It elegantly handles the entire creation process from start to finish. Here’s how it works:

  🎙️ Design Your Star: You start by filling out a simple form to design your baby podcaster. You choose their ethnicity, hair style, outfit, and even how chubby their cheeks are. You also give them a topic to discuss.
  ✍️ Generate a Script & Image: Instantly, the automation writes a short podcast script using OpenAI (GPT-4) and generates a unique, photorealistic image of your baby with DALL-E.
  🗣️ Bring it to Life: It then creates a voice for your baby using the script (via ElevenLabs) and animates the baby's face to talk and express themselves perfectly in sync with the audio (via Hedra).
  📂 Deliver the Final Cut: The final, ready-to-post video is automatically rendered and saved directly into a designated Google Drive folder. Your viral video is ready to be shared with the world in just a few minutes!

  ⚙️ Simple Setup

  This workflow is a pre-built blueprint, designed to be up and running in minutes!

  Upload:** Simply upload the provided JSON file into your n8n instance.
  Detailed Setup:** Follow all the instructions of the Detailed Setup.
  Activate:** Turn the workflow on, and it's ready to go! Let your new automated employee get to work.

  🌐 Explore more workflows
  ❤️ Buy more workflows at: adamcrafts
  automations
  🦾 Custom workflows at: adamcrafts@cloudysoftwares.com
  adamaicrafts@gmail.com


  &gt; Build once, customize endlessly, and scale your video content like never before.

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.googleDrive","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.openAi"]

workflow_json:
  {"meta":{"instanceId":"2d54f61dfd963457efb86a8690aae457934e92fb9e4b8b6490ca74fc37094458","templateCredsSetupCompleted":true},"nodes":[{"id":"8b5a4bd2-d1a7-4fdd-8c18-5fa70bf7d245","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-3940,1000],"parameters":{"content":""},"typeVersion":1},{"id":"4a31dc2b-a72d-4edb-b6f4-ffbb967b17df","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[-3280,1000],"parameters":{"content":""},"typeVersion":1},{"id":"737d3569-14f4-4b32-b020-a8dd726d75ee","name":"Merge","type":"n8n-nodes-base.merge","position":[-1880,2440],"parameters":{},"typeVersion":3.1},{"id":"2c6dc4c6-21ae-4cd4-b274-1649d4a739c3","name":"Merge1","type":"n8n-nodes-base.merge","position":[-1420,1900],"parameters":{},"typeVersion":3.1},{"id":"3e3baaf3-3fa0-4cc0-9fc9-852c23e8f734","name":"Merge2","type":"n8n-nodes-base.merge","position":[-1140,2700],"parameters":{},"typeVersion":3.1},{"id":"31ba976b-0e53-4a8a-bb69-aa59cb08c369","name":"Code2","type":"n8n-nodes-base.code","position":[-1920,3040],"parameters":{},"typeVersion":2},{"id":"04b27209-3e6c-434a-bf8f-bdef3e9356d2","name":"Extract And Combine Binary and Array","type":"n8n-nodes-base.code","position":[-1120,1900],"parameters":{},"typeVersion":2},{"id":"0c96872e-1589-4656-a0f6-3c2c5b6ac85f","name":"Extract And Combine Binary and Array1","type":"n8n-nodes-base.code","position":[-1900,2720],"parameters":{},"typeVersion":2},{"id":"dc3236f8-5842-4a3a-8e96-42bc640bebc9","name":"Baby Image Generator","type":"@n8n/n8n-nodes-langchain.openAi","onError":"continueRegularOutput","position":[-3100,2460],"parameters":{},"typeVersion":1.8,"alwaysOutputData":true},{"id":"54cc15cc-6e41-4c1a-913f-ae1ea6c8c18c","name":"Open AI Generate Image","type":"n8n-nodes-base.httpRequest","position":[-2720,2460],"parameters":{},"typeVersion":4.2},{"id":"4a3997c6-3aee-40b0-986a-0c9cdce030b5","name":"Generate Baby Podcast","type":"n8n-nodes-base.formTrigger","position":[-3000,1840],"webhookId":"ff55e4d7-6f89-44ed-8b5c-c1f0f309b315","parameters":{},"typeVersion":2.2},{"id":"802ff9b4-5147-4112-b9cd-b5a1b1760b98","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-3120,2340],"parameters":{"content":""},"typeVersion":1},{"id":"ea68c73c-7285-4564-a03d-cf3549afd67d","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-2820,1580],"parameters":{"content":""},"typeVersion":1},{"id":"538063b5-3c2e-4ac9-9b00-96749ce857f0","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-1940,3260],"parameters":{"content":""},"typeVersion":1},{"id":"da20cfbc-6dd8-4f48-9577-f81be2d9ac0e","name":"Create Image Asset For Hedra","type":"n8n-nodes-base.httpRequest","position":[-2120,2280],"parameters":{},"typeVersion":4.2},{"id":"d70aeea5-70da-43bf-b40b-7afab8a786f7","name":"Create Audio Asset For Hedra","type":"n8n-nodes-base.httpRequest","position":[-1700,1760],"parameters":{},"typeVersion":4.2},{"id":"07be74e4-16ee-4810-ab6f-a5b43db3416a","name":"B64 String to File","type":"n8n-nodes-base.convertToFile","position":[-2480,2460],"parameters":{},"typeVersion":1.1},{"id":"7ce8fa36-18da-4289-9c82-cf406a5d50dd","name":"Post Open AI Image To Hedra","type":"n8n-nodes-base.httpRequest","position":[-1680,2720],"parameters":{},"typeVersion":4.2},{"id":"eafac296-44b4-4c42-b129-21f8ad76e465","name":"Generate Video Asset Hedra","type":"n8n-nodes-base.httpRequest","position":[-1660,3040],"parameters":{},"typeVersion":4.2},{"id":"6507cd5a-608c-4c33-93f9-9462c9b6921c","name":"Get Our Baby Video File From Hedra","type":"n8n-nodes-base.httpRequest","position":[-1400,3040],"parameters":{},"typeVersion":4.2,"alwaysOutputData":true},{"id":"10a3558f-7fb1-4c43-92c0-df529f7ad0f6","name":"Download Our Video","type":"n8n-nodes-base.httpRequest","position":[-1140,3040],"parameters":{},"typeVersion":4.2},{"id":"8bbfab60-3fb8-46a0-9cb7-2339d33bae60","name":"Upload Bin File To Conver In Google Drive","type":"n8n-nodes-base.googleDrive","position":[-900,3040],"parameters":{},"typeVersion":3},{"id":"7b88e294-e9ba-48e6-9283-d114fc58c67f","name":"Download Video","type":"n8n-nodes-base.googleDrive","position":[-660,3040],"parameters":{},"typeVersion":3},{"id":"1972d340-51ed-4581-bce8-81a44a81d1f7","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-1420,1560],"parameters":{"content":""},"typeVersion":1},{"id":"f7c6845a-aa17-4b7f-8700-916270908970","name":"Script","type":"@n8n/n8n-nodes-langchain.openAi","onError":"continueRegularOutput","position":[-2680,1840],"parameters":{},"typeVersion":1.8,"alwaysOutputData":true},{"id":"3dfa2397-7612-4f37-a478-f3767dd43529","name":"Audio Creation","type":"n8n-nodes-base.httpRequest","position":[-2280,1840],"parameters":{},"typeVersion":4.2},{"id":"7db2da63-a00f-4ee8-9170-4c9116cf5087","name":"Audio To Hedra","type":"n8n-nodes-base.httpRequest","position":[-860,1900],"parameters":{},"typeVersion":4.2}],"connections":{"Code2":{"main":[[{"node":"Generate Video Asset Hedra","type":"main","index":0}]]},"Merge":{"main":[[{"node":"Extract And Combine Binary and Array1","type":"main","index":0}]]},"Merge1":{"main":[[{"node":"Extract And Combine Binary and Array","type":"main","index":0}]]},"Merge2":{"main":[[{"node":"Code2","type":"main","index":0}]]},"Script":{"main":[[{"node":"Audio Creation","type":"main","index":0}]]},"Audio Creation":{"main":[[{"node":"Create Audio Asset For Hedra","type":"main","index":0},{"node":"Merge1","type":"main","index":1}]]},"Audio To Hedra":{"main":[[{"node":"Merge2","type":"main","index":0}]]},"B64 String to File":{"main":[[{"node":"Merge","type":"main","index":1},{"node":"Create Image Asset For Hedra","type":"main","index":0}]]},"Download Our Video":{"main":[[{"node":"Upload Bin File To Conver In Google Drive","type":"main","index":0}]]},"Baby Image Generator":{"main":[[{"node":"Open AI Generate Image","type":"main","index":0}]]},"Generate Baby Podcast":{"main":[[{"node":"Baby Image Generator","type":"main","index":0},{"node":"Script","type":"main","index":0}]]},"Open AI Generate Image":{"main":[[{"node":"B64 String to File","type":"main","index":0}]]},"Generate Video Asset Hedra":{"main":[[{"node":"Get Our Baby Video File From Hedra","type":"main","index":0}]]},"Post Open AI Image To Hedra":{"main":[[{"node":"Merge2","type":"main","index":1}]]},"Create Audio Asset For Hedra":{"main":[[{"node":"Merge1","type":"main","index":0}]]},"Create Image Asset For Hedra":{"main":[[{"node":"Merge","type":"main","index":0}]]},"Get Our Baby Video File From Hedra":{"main":[[{"node":"Download Our Video","type":"main","index":0}]]},"Extract And Combine Binary and Array":{"main":[[{"node":"Audio To Hedra","type":"main","index":0}]]},"Extract And Combine Binary and Array1":{"main":[[{"node":"Post Open AI Image To Hedra","type":"main","index":0}]]},"Upload Bin File To Conver In Google Drive":{"main":[[{"node":"Download Video","type":"main","index":0}]]}}}


name: Vacation Planning Agent
author_name: Tamer
author_username: tamerelzein
categories: []
created_at: 2025-06-25T17:52:46.960Z
updated_at: 2025-06-25T17:52:46.960Z
url: https://n8n.io/workflows/5309
scraped_at: 2025-07-06 21:16:30
description:
  Vacation Planning Agent - n8n Workflow

  Overview

  This n8n workflow creates an intelligent vacation planning chatbot that helps users find and book the perfect hotel accommodations. The agent acts as a professional travel consultant, systematically gathering travel requirements and providing personalized hotel recommendations through an interactive chat interface.

  Core Functionality

  The workflow provides a conversational AI agent that:

  Conducts structured information gathering** through natural conversation
  Automatically searches for hotels** using real-time data from Google Hotels
  Provides personalized recommendations** with detailed hotel information
  Maintains conversation context** throughout the planning process
  Delivers professional travel consultation** in a friendly, accessible format

  User Experience Flow

  Initial Interaction
  Users are greeted with a warm welcome message in German: "Hallo! Ich helfe dir, deinen perfekten Urlaub zu planen. Bitte beanworte mir die folgenden Fragen :)"

  Information Collection Process
  The agent systematically collects essential travel details:

  Destination - City and country/state
  Travel Dates - Check-in and check-out dates
  Guest Count - Number of travelers
  Room Requirements - Number of rooms needed
  Budget Preferences - Optional price range

  Automated Hotel Search
  Once core information is gathered, the agent automatically searches for available accommodations without requiring user permission.

  Recommendation Delivery
  Results are presented in a structured format including:
  Hotel names and star ratings
  Pricing information
  Location details
  Guest ratings and reviews
  Key amenities and highlights
  Direct booking links

  Required Integrations

  OpenAI API
  Purpose**: Powers the conversational AI agent
  Model**: GPT-4o-mini for cost-effective, intelligent responses
  Requirement**: Valid OpenAI API credentials

  SerpAPI (Google Hotels)
  Purpose**: Real-time hotel search and pricing data
  Service**: Google Hotels search engine integration
  Requirement**: Active SerpAPI account and API key

  Key Features

  Intelligent Conversation Management
  Maintains conversation context with 20-message memory buffer
  Handles edge cases like no available hotels or unclear responses
  Provides alternative suggestions when initial searches yield limited results

  Flexible Search Parameters
  Supports location-based searches worldwide
  Accommodates date range specifications
  Handles guest count and room quantity requirements
  Optional budget filtering (min/max price ranges)
  Currency customization support

  Professional Presentation
  Structured hotel recommendation format
  Clear pricing and availability information
  Contextual explanations for recommendations
  Additional destination insights when relevant

  Use Cases

  This workflow is ideal for:

  Travel websites** seeking to add AI-powered hotel booking assistance
  Travel agencies** wanting to automate initial consultation processes
  Hospitality businesses** providing customer service automation
  Personal travel planning** applications
  Customer support** for travel-related inquiries

  User Benefits

  Time-saving**: Eliminates manual hotel research
  Personalized results**: Tailored recommendations based on specific needs
  Real-time data**: Current pricing and availability information
  Professional guidance**: Expert-level travel consultation
  Seamless experience**: Natural conversation flow without complex forms

  Technical Requirements

  Essential Services
  n8n workflow automation platform
  OpenAI API access (GPT-4o-mini model)
  SerpAPI account with Google Hotels access

  Configuration Needs
  API credential setup for both OpenAI and SerpAPI
  Webhook endpoint configuration for chat trigger
  Memory buffer configuration for conversation context

  Optional Enhancements
  Custom branding for chat interface
  Additional language support beyond German greeting
  Integration with booking platforms for direct reservations
  Analytics tracking for usage insights

nodes_used:
[cell repeats an earlier one in this file: 120 characters]

workflow_json:
  {"id":"7J9FeS334LVe2BQG","meta":{"instanceId":"b5a944ba8839572df11fe1edab9898c0cc0a8b920d79a8a9e1ccb59618a73552","templateCredsSetupCompleted":true},"name":"Vacation Planning Agent","tags":[],"nodes":[{"id":"7bb2c020-3495-4794-9e36-3028d4b7eb40","name":"Chat Trigger","type":"@n8n/n8n-nodes-langchain.chatTrigger","position":[780,0],"webhookId":"urlaubsplaner-multi-step","parameters":{"public":true,"options":{},"initialMessages":"Hallo! Ich helfe dir, deinen perfekten Urlaub zu planen. Bitte beanworte mir die folgenden Fragen :)"},"typeVersion":1.1},{"id":"1a833e37-4d77-4667-af98-be8283ab4c1b","name":"AI Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[1080,0],"parameters":{"options":{"systemMessage":"# Vacation Planner Agent Prompt\n\nYou are a professional vacation planner assistant that helps users find the perfect hotel accommodations. Your goal is to gather essential travel information and provide personalized hotel recommendations using the Search for Hotels tool.\n\n## Available Tools\n\nYou have access to a **Search for Hotels** tool that searches for accommodations using SerpAPI Google Hotels. Use this tool automatically once you have gathered the essential information (destination, dates, guests, rooms). You do not need to ask permission or confirm with the user before using the tool.\n- Act as a friendly, knowledgeable travel consultant\n- Ask questions systematically to understand user needs\n- Provide clear, helpful hotel recommendations based on search results\n- Maintain a conversational yet professional tone\n\n## Information Gathering Process\n\n### Step 1: Initial Greeting\nGreet the user warmly and explain that you'll help them find the perfect hotel for their trip.\n\n### Step 2: Collect Essential Details\nAsk these questions one at a time, waiting for each response:\n\n1. **Destination**: \"Where would you like to travel? Please provide the city and country (or state if in the US).\"\n\n2. **Travel Dates**: \"During which time period are you planning to travel? Please provide your check-in and check-out dates.\"\n\n3. **Number of Guests**: \"How many people will be traveling?\"\n\n4. **Room Requirements**: \"How many rooms would you need?\"\n\n5. **Budget Range** (Optional): \"Do you have a preferred budget range per night? This will help me find options that fit your needs.\"\n\n### Step 3: Automatic Hotel Search\nOnce you have collected the essential information (destination, check-in/check-out dates, number of guests, and rooms), immediately use the Search for Hotels tool to find available accommodations. You do not need user permission to proceed with the search.\n\n### Step 4: Additional Preferences (Optional)\nIf the user seems open to it, you may ask:\n- \"Are there any specific amenities you're looking for? (pool, gym, free breakfast, etc.)\"\n- \"Do you prefer to stay in a particular area of the city?\"\n- \"Any hotel star rating preference?\"\n\n## Your Role\n\n### When presenting hotel options:\n\n1. **Lead with the best matches** - Present 3-5 top recommendations\n2. **Include key details for each hotel**:\n   - Hotel name and star rating\n   - Price per night\n   - Location/neighborhood\n   - Guest rating/review score\n   - Key amenities\n   - Brief description of why it's a good fit\n\n3. **Format recommendations clearly**:\n   ```\n   🏨 **Hotel Name** (4-star)\n   📍 Location: [Neighborhood/Area]\n   💰 Price: $X per night\n   ⭐ Rating: X.X/10 (based on X reviews)\n   ✨ Highlights: [2-3 key features]\n   🔗 Book now: [Hotel booking URL]\n   ```\n\n4. **Provide context**: Explain why each hotel was selected based on their stated preferences\n\n5. **Offer alternatives**: Mention if there are budget-friendly or luxury alternatives available\n\n## Response Style Guidelines\n\n- **Be conversational**: Use natural, friendly language\n- **Be concise but informative**: Provide essential details without overwhelming\n- **Show enthusiasm**: Express genuine interest in helping them have a great trip\n- **Be helpful**: Offer additional tips or insights about the destination when relevant\n- **Handle edge cases**: If no good options are found, explain why and suggest alternatives (different dates, nearby cities, etc.)\n\n## Example Interaction Flow\n\n**Agent**: \"Hello! I'm here to help you find the perfect hotel for your upcoming trip. Let me ask you a few questions to get started. Where would you like to travel?\"\n\n**User**: \"Paris, France\"\n\n**Agent**: \"Wonderful choice! Paris is amazing. When are you planning to visit? Please let me know your check-in and check-out dates.\"\n\n[Continue gathering information...]\n\n**Agent**: \"Perfect! Let me search for the best hotels in Paris for your stay from [dates] for [number] guests needing [rooms] room(s).\"\n\n[Automatically uses Search for Hotels tool]\n\n[After receiving search results...]\n\n**Agent**: \"Great news! I found some excellent options for your Paris trip. Here are my top recommendations:\n\n[Present formatted hotel recommendations]\n\nWould you like more details about any of these hotels, or would you prefer to see additional options?\"\n\n## Important Notes\n\n- Always confirm the search parameters before presenting results\n- If search results are limited, explain potential reasons (peak season, sold out, etc.)\n- Be prepared to adjust recommendations based on user feedback\n- End with a clear call-to-action or next steps"}},"typeVersion":2},{"id":"8acfa2ee-4d85-40bc-8999-5f14f19b11a3","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[960,260],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o-mini","cachedResultName":"gpt-4o-mini"},"options":{}},"credentials":{"openAiApi":{"id":"PInyzlnaqujHVKEB","name":"n8n free OpenAI API credits"}},"typeVersion":1.2},{"id":"f1f925af-21b9-4f4e-afe9-c2685ae581cf","name":"Simple Memory","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[1120,260],"parameters":{"contextWindowLength":20},"typeVersion":1.3},{"id":"666d267e-577d-47cf-bd42-c6d245f009ff","name":"Search for hotels","type":"n8n-nodes-base.httpRequestTool","position":[1280,260],"parameters":{"url":"https://serpapi.com/search","options":{},"sendQuery":true,"authentication":"predefinedCredentialType","queryParameters":{"parameters":[{"name":"q","value":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `Parameter defines the search query. You can use anything that you would use in a regular Google Hotels search.`, 'string') }}"},{"name":"check_in_date","value":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Value', `Parameter defines the check-in date. The format is YYYY-MM-DD. e.g. 2025-06-20`, 'string') }}"},{"name":"check_out_date","value":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters2_Value', `Parameter defines the check-out date. The format is YYYY-MM-DD. e.g. 2025-06-21`, 'string') }}"},{"name":"min_price","value":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters3_Value', `Optional\nParameter defines the lower bound of price range.`, 'string') }}"},{"name":"max_price","value":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters4_Value', `Optional\n\nParameter defines the upper bound of price range.`, 'string') }}"},{"name":"currency","value":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters5_Value', `Optional\n\nParameter defines the currency of the returned prices. Default to USD. Head to the Google Travel Currencies page for a full list of supported currency codes.`, 'string') }}"},{"name":"gl","value":"de"},{"name":"engine","value":"google_hotels"}]},"toolDescription":"This tool searches for hotels based on user query and returns response","nodeCredentialType":"serpApi"},"credentials":{"serpApi":{"id":"3vKCVyplnh1Grx9T","name":"SerpAPI account"}},"typeVersion":4.2}],"active":false,"settings":{"executionOrder":"v1"},"versionId":"e84fa65e-8a74-413a-b1cf-79984369b2e8","connections":{"Chat Trigger":{"main":[[{"node":"AI Agent","type":"main","index":0}]]},"Simple Memory":{"ai_memory":[[{"node":"AI Agent","type":"ai_memory","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"AI Agent","type":"ai_languageModel","index":0}]]},"Search for hotels":{"ai_tool":[[{"node":"AI Agent","type":"ai_tool","index":0}]]}}}


name: 🤖 AI Customer Support Agent - Never Sleep, Never Miss a Customer Again!
author_name: Amanda Benks
author_username: amanda
categories: []
created_at: 2025-06-25T18:44:00.112Z
updated_at: 2025-06-25T18:44:00.112Z
url: https://n8n.io/workflows/5310
scraped_at: 2025-07-06 21:16:30
description:
  This workflow contains community nodes that are only compatible with the self-hosted version of n8n. 

  24/7 AI Support Agent: Handle 10x More Customers While You Sleep! 💰

  🚀 Transform Your Customer Support Into a Profit Machine

  Stop losing customers to slow responses! 

  This revolutionary AI Customer Support Agent workflow turns your n8n into a 24/7 customer service powerhouse that:

  ✅ Handles unlimited customers simultaneously  
  ✅ Responds in under 3 seconds across ALL channels  
  ✅ Reduces support costs by 70% (proven ROI)  
  ✅ Works while you sleep - never miss another sale  
  ✅ Escalates complex issues to humans automatically  

  💎 What You Get

  ⚡ The Workflow
  Multi-Channel Integration**: WhatsApp, Telegram, Email, Website Chat
  GPT-4 Powered Intelligence**: Context-aware, professional responses
  Smart Escalation System**: Knows when humans are needed
  Conversation Memory**: Remembers every customer interaction
  Analytics Dashboard**: Track performance and ROI

  📋 Setup Materials
  Complete JSON Workflow** (drag & drop installation)
  Step-by-Step PDF Guide** (non-technical friendly)
  Troubleshooting Guide** (solve any issue)

  🔥 Why This Workflow is a Game-Changer

  Problem It Solves:
  Lost Sales**: 67% of customers abandon purchases due to poor support
  High Costs**: Average support agent costs $50,000+/year
  Limited Hours**: Miss 60% of inquiries outside business hours
  Inconsistent Quality**: Human agents have bad days
  Scaling Issues**: Can't hire fast enough for growth

  The Solution:
  Zero Response Delays**: Instant replies 24/7/365
  Consistent Excellence**: Perfect responses every time
  Unlimited Scaling**: Handle 1 or 10,000 customers
  Massive Cost Savings**: $500/month vs $50,000/year per agent
  Never Misses Anything**: Catches every single inquiry

  🛠️ Integrations & Tools Used

  AI & Automation:
  OpenAI GPT-4 Turbo** - Industry-leading AI responses
  n8n Workflow Engine** - Reliable automation backbone
  Smart Decision Trees** - Perfect escalation logic

  Communication Channels:
  WhatsApp Business API** - Reach 2+ billion users
  Telegram Bot API** - Lightning-fast messaging
  IMAP/SMTP Email** - Professional email support
  Webhook Integration** - Connect any chat widget

  Data & Analytics:
  Notion Database** - Conversation history & analytics
  Slack Integration** - Instant team notifications
  Custom Webhooks** - Connect to any CRM/tool

  Advanced Features:
  Multi-language Support** - Serve global customers
  Sentiment Analysis** - Detect frustrated customers
  Auto-categorization** - Organize inquiries automatically
  Performance Metrics** - Track ROI and efficiency

  🎯 Perfect For:

  E-commerce Businesses
  Handle pre-sale questions instantly
  Provide order status updates
  Resolve shipping inquiries
  Increase conversion rates by 34%

  SaaS Companies
  Technical support automation
  Onboarding assistance
  Feature explanations
  Reduce churn by 28%

  Service Businesses
  Appointment scheduling
  Service inquiries
  Quote requests
  Increase booking rates by 45%

  Digital Agencies
  Client communication
  Project updates
  Scope clarifications
  Improve client satisfaction by 52%

  ⚡ Installation is RIDICULOUSLY Easy

  Step 1: Import JSON (2 minutes)
  Download the workflow file
  Import into your n8n instance
  Activate the workflow

  Step 2: Configure APIs (10 minutes)
  Add your OpenAI API key
  Connect your messaging accounts
  Set up email credentials

  Step 3: Test & Launch (5 minutes)
  Send test messages
  Verify responses
  Go live and start saving money!

  Total Setup Time: Under 20 minutes  
  Technical Skill Required: None (detailed guide included)  

  🔒 Enterprise-Grade Security & Reliability

  Security Features:
  End-to-end encryption** for all communications
  API rate limiting** to prevent abuse
  Data privacy compliance** (GDPR ready)
  Secure credential storage** in n8n vault

  Reliability Features:
  99.9% uptime** with proper n8n hosting
  Automatic error handling** and recovery
  Failover to human agents** when needed
  Complete conversation logging** for compliance

  Scalability:
  Handles 1000+ concurrent chats**
  Processes 10,000+ messages/day**
  Auto-scales with your business**
  No performance degradation**

nodes_used:
  ["n8n-nodes-base.emailSend","n8n-nodes-base.httpRequest","n8n-nodes-base.notion","n8n-nodes-base.openAi"]

workflow_json:
  {"name":"AI Customer Support Agent Multi-Channel","tags":[{"id":"ai-agent","name":"AI Agent","createdAt":"2025-01-01T00:00:00.000Z","updatedAt":"2025-01-01T00:00:00.000Z"},{"id":"customer-support","name":"Customer Support","createdAt":"2025-01-01T00:00:00.000Z","updatedAt":"2025-01-01T00:00:00.000Z"},{"id":"automation","name":"Automation","createdAt":"2025-01-01T00:00:00.000Z","updatedAt":"2025-01-01T00:00:00.000Z"}],"nodes":[{"id":"sticky_note_intro","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-200,200],"parameters":{"content":""},"typeVersion":1},{"id":"whatsapp_webhook","name":"WhatsApp Webhook","type":"n8n-nodes-base.webhook","position":[200,300],"webhookId":"whatsapp-support-webhook","parameters":{},"typeVersion":2},{"id":"telegram_webhook","name":"Telegram Webhook","type":"n8n-nodes-base.webhook","position":[200,450],"webhookId":"telegram-support-webhook","parameters":{},"typeVersion":2},{"id":"email_trigger","name":"Email Trigger","type":"n8n-nodes-base.emailReadImap","position":[200,600],"parameters":{},"typeVersion":2},{"id":"normalize_data","name":"Normalize Message Data","type":"n8n-nodes-base.set","position":[500,450],"parameters":{},"typeVersion":3.4},{"id":"get_conversation_history","name":"Get Conversation History","type":"n8n-nodes-base.notion","position":[800,450],"parameters":{},"typeVersion":2},{"id":"sticky_memory","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[780,200],"parameters":{"content":""},"typeVersion":1},{"id":"openai_agent","name":"OpenAI Support Agent","type":"n8n-nodes-base.openAi","position":[1100,450],"parameters":{},"typeVersion":1.3},{"id":"sticky_ai","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1080,80],"parameters":{"content":""},"typeVersion":1},{"id":"check_escalation","name":"Check if Escalation Needed","type":"n8n-nodes-base.if","position":[1400,450],"parameters":{},"typeVersion":2},{"id":"format_response","name":"Format AI Response","type":"n8n-nodes-base.set","position":[1700,350],"parameters":{},"typeVersion":3.4},{"id":"send_whatsapp_response","name":"Send WhatsApp Response","type":"n8n-nodes-base.httpRequest","position":[2000,200],"parameters":{},"typeVersion":4.2},{"id":"send_telegram_response","name":"Send Telegram Response","type":"n8n-nodes-base.httpRequest","position":[2000,350],"parameters":{},"typeVersion":4.2},{"id":"send_email_response","name":"Send Email Response","type":"n8n-nodes-base.emailSend","position":[2000,500],"parameters":{},"typeVersion":2.1},{"id":"save_conversation","name":"Save Conversation","type":"n8n-nodes-base.notion","position":[2300,450],"parameters":{},"typeVersion":2},{"id":"notify_human_agents","name":"Notify Human Agents","type":"n8n-nodes-base.httpRequest","position":[1700,600],"parameters":{},"typeVersion":4.2},{"id":"sticky_escalation","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1620,720],"parameters":{"content":""},"typeVersion":1},{"id":"sticky_analytics","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[2280,200],"parameters":{"content":""},"typeVersion":1},{"id":"webhook_response","name":"Webhook Response","type":"n8n-nodes-base.respondToWebhook","position":[2600,450],"parameters":{},"typeVersion":1.1}],"settings":{"executionOrder":"v1"},"updatedAt":"2025-01-01T00:00:00.000Z","versionId":"1","staticData":null,"connections":{"openai_agent":{"main":[[{"node":"check_escalation","type":"main","index":0}]]},"email_trigger":{"main":[[{"node":"normalize_data","type":"main","index":0}]]},"normalize_data":{"main":[[{"node":"get_conversation_history","type":"main","index":0}]]},"format_response":{"main":[[{"node":"send_whatsapp_response","type":"main","index":0},{"node":"send_telegram_response","type":"main","index":0},{"node":"send_email_response","type":"main","index":0}]]},"check_escalation":{"main":[[{"node":"format_response","type":"main","index":0}],[{"node":"format_response","type":"main","index":0},{"node":"notify_human_agents","type":"main","index":0}]]},"telegram_webhook":{"main":[[{"node":"normalize_data","type":"main","index":0}]]},"whatsapp_webhook":{"main":[[{"node":"normalize_data","type":"main","index":0}]]},"save_conversation":{"main":[[{"node":"webhook_response","type":"main","index":0}]]},"send_email_response":{"main":[[{"node":"save_conversation","type":"main","index":0}]]},"send_telegram_response":{"main":[[{"node":"save_conversation","type":"main","index":0}]]},"send_whatsapp_response":{"main":[[{"node":"save_conversation","type":"main","index":0}]]},"get_conversation_history":{"main":[[{"node":"openai_agent","type":"main","index":0}]]}},"triggerCount":3}


name: AI-Powered Telegram & WhatsApp Business Agent Workflow
author_name: Amanda Benks
author_username: amanda
categories: []
created_at: 2025-06-25T18:51:37.067Z
updated_at: 2025-06-25T18:51:37.067Z
url: https://n8n.io/workflows/5311
scraped_at: 2025-07-06 21:16:30
description:
  This workflow contains community nodes that are only compatible with the self-hosted version of n8n. 

  Deliver seamless, AI-driven customer support on Telegram and WhatsApp—powered by GPT-4 Turbo and n8n.

  🌟 Key Features
  Unified Messaging:** Receive and normalize messages from both Telegram (via Bot Trigger) and WhatsApp (via Webhook).  
  Contextual AI Responses:** Build customer context from Google Sheets, then craft personalized replies with GPT-4 Turbo.  
  Smart Routing:** Automatically detect platform and send replies with platform-appropriate formatting (HTML for Telegram, plain for WhatsApp).  
  Intent Detection & Escalation:** Flag orders, appointments or complex queries and trigger Slack notifications for human handoff.  
  Comprehensive Logging:** Append every interaction to a “conversations” sheet and upsert customer profiles in a “customers” sheet.  

  📋 Prerequisites
  n8n instance (self-hosted or n8n Cloud)  
  Credentials:
     OpenAI API key  
     Telegram Bot Token  
     WhatsApp Business API credentials (WHATSAPP_PHONE_ID)  
     Google Sheets service-account credentials  
     Slack Incoming Webhook URL  
  Google Sheets Setup:
     customers sheet with columns: user_id, user_name, previousOrders, lastInteraction, preferences, conversationHistory  
     conversations sheet with columns: user_id, user_name, platform, message, ai_response, timestamp, needs_escalation, is_order, is_appointment  

  🚀 Setup & Usage
  Import the provided JSON into your n8n editor.  
  Configure each node’s credentials in n8n’s Credentials panel.  
  Set the following Workflow Variables:
     GOOGLE_SHEET_ID  
     WHATSAPP_PHONE_ID  
  Activate the Telegram Bot Trigger and WhatsApp Webhook nodes.  
  Test by messaging your bot on Telegram and WhatsApp.  

  🔍 How It Works
  Trigger: Listens for new Telegram updates or WhatsApp webhook calls.  
  Normalize Message: Standardizes payload into { user_id, user_name, message_text, platform, chat_id, timestamp }.  
  Get Customer Data: Reads from “customers” sheet to fetch past history and order count.  
  Build AI Context: Merges incoming message with customer info and history.  
  AI Assistant: Sends context to GPT-4 Turbo (temperature 0.8, maxTokens 800).  
  Process Response: Cleans formatting, identifies intents (order, appointment), and sets escalation flags.  
  Platform Router: Routes reply to the appropriate “Send Telegram” or “Send WhatsApp” node.  
  Log Conversation: Appends each message and response to the “conversations” sheet.  
  Update Customer: Increments previousOrders, updates last interaction timestamp, and saves a snippet of the latest message.  
  Escalation: If flagged, posts a formatted alert to your Slack channel for immediate attention.  

  Empower your business with 24/7 AI-powered support—save time, increase conversions, and ensure no customer inquiry goes unanswered.

nodes_used:
  ["n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","n8n-nodes-base.telegram","n8n-nodes-base.code","n8n-nodes-base.openAi"]

workflow_json:
  {"name":"AI Telegram & WhatsApp Business Agent","tags":[{"id":"telegram","name":"Telegram","createdAt":"2025-01-01T00:00:00.000Z","updatedAt":"2025-01-01T00:00:00.000Z"},{"id":"whatsapp","name":"WhatsApp","createdAt":"2025-01-01T00:00:00.000Z","updatedAt":"2025-01-01T00:00:00.000Z"},{"id":"ai-agent","name":"AI Agent","createdAt":"2025-01-01T00:00:00.000Z","updatedAt":"2025-01-01T00:00:00.000Z"},{"id":"customer-service","name":"Customer Service","createdAt":"2025-01-01T00:00:00.000Z","updatedAt":"2025-01-01T00:00:00.000Z"}],"nodes":[{"id":"intro_sticky","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-240,180],"parameters":{"content":""},"typeVersion":1},{"id":"telegram_trigger","name":"Telegram Bot","type":"n8n-nodes-base.telegramTrigger","position":[160,280],"webhookId":"telegram-ai-agent","parameters":{},"typeVersion":1.1},{"id":"whatsapp_webhook","name":"WhatsApp Webhook","type":"n8n-nodes-base.webhook","position":[160,420],"webhookId":"whatsapp-ai-webhook","parameters":{},"typeVersion":2},{"id":"normalize_message","name":"Normalize Message Data","type":"n8n-nodes-base.set","position":[460,350],"parameters":{},"typeVersion":3.4},{"id":"processing_sticky","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[440,20],"parameters":{"content":""},"typeVersion":1},{"id":"get_customer_data","name":"Get Customer History","type":"n8n-nodes-base.googleSheets","position":[760,350],"parameters":{},"typeVersion":4.4},{"id":"build_context","name":"Build AI Context","type":"n8n-nodes-base.code","position":[1060,350],"parameters":{},"typeVersion":2},{"id":"intelligence_sticky","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[740,40],"parameters":{"content":""},"typeVersion":1},{"id":"ai_assistant","name":"AI Business Assistant","type":"n8n-nodes-base.openAi","position":[1360,350],"parameters":{},"typeVersion":1.3},{"id":"ai_sticky","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1340,-20],"parameters":{"content":""},"typeVersion":1},{"id":"process_response","name":"Process AI Response","type":"n8n-nodes-base.code","position":[1660,350],"parameters":{},"typeVersion":2},{"id":"platform_router","name":"Platform Router","type":"n8n-nodes-base.if","position":[1960,350],"parameters":{},"typeVersion":2},{"id":"send_telegram","name":"Send Telegram Message","type":"n8n-nodes-base.telegram","position":[2260,280],"parameters":{},"typeVersion":1.2},{"id":"send_whatsapp","name":"Send WhatsApp Message","type":"n8n-nodes-base.httpRequest","position":[2260,420],"parameters":{},"typeVersion":4.2},{"id":"delivery_sticky","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[2240,60],"parameters":{"content":""},"typeVersion":1},{"id":"log_conversation","name":"Log Conversation","type":"n8n-nodes-base.googleSheets","position":[2560,350],"parameters":{},"typeVersion":4.4},{"id":"update_customer","name":"Update Customer Record","type":"n8n-nodes-base.googleSheets","position":[2860,350],"parameters":{},"typeVersion":4.4},{"id":"check_escalation","name":"Check Escalation","type":"n8n-nodes-base.if","position":[2560,200],"parameters":{},"typeVersion":2},{"id":"notify_team","name":"Notify Support Team","type":"n8n-nodes-base.httpRequest","position":[2860,200],"parameters":{},"typeVersion":4.2},{"id":"analytics_sticky","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[2540,480],"parameters":{"content":""},"typeVersion":1},{"id":"webhook_response","name":"Webhook Response","type":"n8n-nodes-base.respondToWebhook","position":[3160,420],"parameters":{},"typeVersion":1.1}],"settings":{"executionOrder":"v1"},"updatedAt":"2025-01-01T00:00:00.000Z","versionId":"1","staticData":null,"connections":{"ai_assistant":{"main":[[{"node":"process_response","type":"main","index":0}]]},"build_context":{"main":[[{"node":"ai_assistant","type":"main","index":0}]]},"send_telegram":{"main":[[{"node":"log_conversation","type":"main","index":0}]]},"send_whatsapp":{"main":[[{"node":"log_conversation","type":"main","index":0}]]},"platform_router":{"main":[[{"node":"send_telegram","type":"main","index":0}],[{"node":"send_whatsapp","type":"main","index":0}]]},"update_customer":{"main":[[{"node":"webhook_response","type":"main","index":0}]]},"check_escalation":{"main":[[{"node":"notify_team","type":"main","index":0}],[]]},"log_conversation":{"main":[[{"node":"update_customer","type":"main","index":0}]]},"process_response":{"main":[[{"node":"platform_router","type":"main","index":0},{"node":"check_escalation","type":"main","index":0}]]},"telegram_trigger":{"main":[[{"node":"normalize_message","type":"main","index":0}]]},"whatsapp_webhook":{"main":[[{"node":"normalize_message","type":"main","index":0}]]},"get_customer_data":{"main":[[{"node":"build_context","type":"main","index":0}]]},"normalize_message":{"main":[[{"node":"get_customer_data","type":"main","index":0}]]}},"triggerCount":2}


name: Generate Viral Bigfoot Vlog Videos with Veo 3
author_name: Lucas Walter
author_username: lucaswalter
categories: []
created_at: 2025-06-25T19:57:53.096Z
updated_at: 2025-06-25T19:57:53.096Z
url: https://n8n.io/workflows/5312
scraped_at: 2025-07-06 21:16:30
description:
  Transform simple ideas into viral-ready Bigfoot vlogs! This automated workflow creates charming 8-scene video content featuring "Sam" the Bigfoot - a lovable, outdoorsy character inspired by popular YouTube adventure channels.

  How It Works

  The workflow transforms your creative concept into professional video content through three automated stages:
  Story Generation - AI creates an 8-scene narrative arc featuring Sam the Bigfoot, complete with character-consistent dialogue and engaging plot development
  Human Approval - Review and approve the generated storyline via Slack before proceeding to video production
  Video Production - Each scene is automatically converted into 8-second video clips using Google's VEO 3 AI, then uploaded to Google Drive for easy access

  Required Credentials

  Anthropic API - Add your Claude API key for story generation
  FAL API - Configure your FAL.ai key for VEO 3 video generation
  Slack OAuth - Set up Slack app with channel permissions for approvals
  Google Drive OAuth - Connect your Google Drive for video storage

  Configuration Steps

  Import the workflow into your n8n instance
  Update Slack channel ID in the notification nodes to match your desired channel
  Set Google Drive folder - Update the folder ID where videos should be stored
  Test the form trigger - The workflow starts with a web form for video ideas
  Customize character (optional) - Modify Sam's personality in the narrative prompts

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.slack","n8n-nodes-base.googleDrive","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.lmChatAnthropic","@n8n/n8n-nodes-langchain.outputParserStructured"]

workflow_json:
  {"id":"iwOnqM2DwVwn5nmh","meta":{"instanceId":"06e5009344f682419c20ccd4ecdcb5223bbb91761882af93ac6d468dbc2cbf8d","templateCredsSetupCompleted":true},"name":"The Recap AI - VEO 3 Bigfoot Video Generator","tags":[{"id":"aZMw5JzELHKfaOAb","name":"YouTube Video","createdAt":"2025-06-09T22:48:17.291Z","updatedAt":"2025-06-09T22:48:17.291Z"}],"nodes":[{"id":"44414dae-70c3-4fb8-afcd-add84d3441be","name":"form_trigger","type":"n8n-nodes-base.formTrigger","position":[-40,0],"webhookId":"fd4a4cba-2667-4694-9c5e-00808d9a217b","parameters":{"options":{},"formTitle":"Bigfoot Video Idea","formFields":{"values":[{"fieldLabel":"Bigfoot Video Idea","placeholder":"Describe the high level idea for your bigfoot vlog","requiredField":true}]}},"typeVersion":2.2},{"id":"c14d5bcf-fa03-40c2-b0b2-48fa2261b8b4","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-60,-100],"parameters":{"color":4,"width":1780,"height":600,"content":"## 1. Write Video Script"},"typeVersion":1},{"id":"08670923-c438-4b7b-b2f3-3d49cadd20ec","name":"claude-4-sonnet","type":"@n8n/n8n-nodes-langchain.lmChatAnthropic","position":[740,360],"parameters":{"model":{"__rl":true,"mode":"list","value":"claude-sonnet-4-20250514","cachedResultName":"Claude 4 Sonnet"},"options":{}},"credentials":{"anthropicApi":{"id":"l40BD4ZshdbnRGbC","name":"Anthropic"}},"typeVersion":1.3},{"id":"158f12ec-94a0-43d5-b9dd-13c60b529ebd","name":"split_scenes","type":"n8n-nodes-base.splitOut","position":[740,0],"parameters":{"options":{},"fieldToSplitOut":"output.scenes"},"typeVersion":1},{"id":"6da1699e-5ae9-4979-8007-aa80353d91e3","name":"scene_director","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[1120,0],"parameters":{"text":"=### **IDENTITY & GOAL**\n\nYou are an expert Scene Director for a YouTube video series. Your sole function is to take a simple `Scene Brief` and expand it into a detailed, production-ready video script. You must strictly adhere to the `Character Bible`, `Series Style Guide`, and `Output Template` provided below.\n\n### **THE SERIES BIBLE**\n\nThis is the non-negotiable source of truth for the series' character and style.\n\n#### **[Character Bible: \"Sam\" the Bigfoot]**\n\n* **Identity:** A gentle giant named \"Sam.\" He is an endlessly curious, optimistic, and friendly explorer discovering the human world.\n* **Vibe:** A heartwarming, slightly clumsy, outdoorsy influencer. He finds joy in small details and is filled with childlike wonder. His dialog and lines MUST be based around the \"Outdoor Boys\" YouTube channel and he must speak like the main character from that Channel. Avoid super generic language.\n* **Voice & Tone:** Consistently jolly and warm. His language is simple, and he sometimes gently misuses human slang (e.g., \"keep the quads poppin'\"). PG-rated; mild exasperations like \"geez\" or \"oh, nuts\" are authentic.\n* **Core Physicality (Lock Across All Scenes):**\n    * **Species:** 8-foot male Bigfoot.\n    * **Fur:** Shaggy, cedar-brown (`#6d6048`) with faint moss specks. The fur on his cheeks and shoulders is fluffier, creating a soft, \"huggable\" silhouette.\n    * **Face:** Features soft, medium-amber eyes with natural catch-lights only (no artificial glow). He has rounded cheeks, a broad nose, and short, blunt lower canines visible when he smiles.\n    * **Hands:** Dark leathery palms with 4-inch black claws. One paw is always holding his selfie stick.\n\n#### **[Series Style Guide]**\n\n* **Primary Directive:** Every scene must create audience affection for Sam by showcasing his charm, gentle humor, or vulnerability.\n* **Camera:** All shots are 16:9 horizontal from a selfie-stick perspective held by Sam. The camera is always on *him*, not a POV shot from his eyes.\n* **Scene Duration and Length:** All scenes must be EXACTLY 8 seconds in length. Scenes may not be longer than 8 seconds.\n* **Visual Style:** Must feel like authentic, slightly shaky \"found footage.\" The hand-held wobble amplitude should match the reference clip provided in the example. I would expect Sam the bigfoot to be walking and there to be movement in some scenes.\n* **Core Technical Specs (Lock Across All Scenes):**\n    * **Resolution & Framerate:** 4K UHD @ 29.97 fps.\n    * **Lens & Shutter:** 24mm equivalent lens at ƒ/2.8, with a 1/60s shutter to create subtle motion blur.\n    * **Captions / Subtitles:** You MUST NOT include captions or subtitles in your final rendered output.\n\nIT IS EXTREMELY IMPORTANT THAT YOU DO NOT INCLUDE ANY SUBTITLES, CLOSED CAPTIONS, CAPTIONS OR ANY OTHER SORT OF TEXT THAT APPEARS WHEN THE SAM CHARACTER IS SPEAKING.\n\nIT IS ALSO EXTREMELY IMPORTANT THAT YOU AVOID ADDING ANY LABELS TO THE FINAL VIDEO SUCH AS THE SCENE TITLE AND TIMESTAMPS.\n\n### **TASK: GENERATE SCENE SCRIPT**\n\n1.  You will be given a `[Scene Brief]` containing the core idea.\n2.  Your output must be a single, complete scene script that perfectly matches the structure, formatting, and markdown of the `[Output Template]` below. Do not add any conversational text before or after the script.\n\n### **[Output Template]**\n\n```markdown\n# Scene {SceneNumber}  ▸  \"{SceneTitle}\"  ▸  {StartTime} – {EndTime} s\n#\n# {OneLineSummary}\n# {CharacterAction}. Must speak the line verbatim. Maintains all [Character Bible] and [Series Style Guide] attributes.\n\nSCENE DESCRIPTION\n-----------------\n{DetailedParagraphDescription: Setting, character action, mood, and interaction with the environment.}\n\nTECHNICAL SPECS\n---------------\n• Duration {Duration} s • 29.97 fps • 4 K UHD • 16 : 9 horizontal  \n• Lens 24 mm eq, ƒ/2.8 • Shutter 1/60 s (subtle motion blur)  \n• Hand-held wobble amplitude identical to reference clip.\n\nSUBJECT DETAILS  (LOCK ACROSS ALL CUTS)\n---------------------------------------\n• 8-ft male Bigfoot, cedar-brown shaggy fur #6d6048 with faint moss specks.  \n• Fluffier cheek & shoulder fur → plush, huggable silhouette.  \n• Eyes: soft medium-amber, natural catch-lights only (no glow).  \n• Face: rounded cheeks, gentle smile crease; broad flat nose; short blunt lower canines.  \n• Hands: dark leathery palms, 4-in black claws; **{PawDescription: e.g., right paw holds object, left paw holds selfie stick}**\n• Friendly, lovable, gentle vibe.\n\nCAMERA MOTION\n-------------\n{TimestampedCameraMovement: A bulleted or timed list of camera actions.}\n\nLIGHTING & GRADE\n----------------\n{LightingAndColorDescription: Time of day, light source, color palette, and any lens effects like grain or smudges.}\n\nATMOSPHERE FX\n-------------\n• {AtmosphericEffect1}  \n• {AtmosphericEffect2}\n\nAUDIO BED\n---------\n{AmbientSounds: A description of the background audio, environmental sounds, and non-speech character sounds.}\n\n### audio.speech  — MUST-SPEAK VERBATIM\nStart {SpeechStartTime} s — deep, gravelly yet warm male, neutral US accent, mild PG  \n\n\"{DialogueLine}\"\n\nEND FRAME\n---------\n{EndFrameDescription: What happens in the final moments, including any specific cuts or transitions.}\n\n### **[Scene Example #1]**\n\n# CUT 3  ▸  “Tree-Trunk Gym”  ▸  0 – 8 s\n#\n# Bigfoot balances on a fallen log while curling a hefty river-boulder,\n# selfie-stick POV.  Must speak BOTH short lines verbatim.  Maintains soft,\n# lovable design (natural amber eyes, plush fur) and reference-matched color grade.\n\nSCENE DESCRIPTION\n-----------------\nPOV selfie-stick vlog: In a sun-dappled glade, Bigfoot stands barefoot on a mossy\nfallen cedar trunk ~3 ft above ground.  He grips a 25-lb smooth river-boulder in\nhis right paw and performs a showy biceps curl while keeping balance.\n\nTECHNICAL SPECS\n---------------\n• Duration 8 s • 29.97 fps • 4 K UHD • 16 : 9 horizontal  \n• Lens 24 mm eq, ƒ/2.8 • Shutter 1/60 s (subtle motion blur)  \n• Hand-held wobble amplitude identical to reference clip.\n\nSUBJECT DETAILS  (LOCK ACROSS ALL CUTS)\n---------------------------------------\n• 8-ft male Bigfoot, cedar-brown shaggy fur #6d6048 with faint moss specks.  \n• Fluffier cheek & shoulder fur → plush, huggable silhouette.  \n• Eyes: soft medium-amber, natural catch-lights only (no glow).  \n• Face: rounded cheeks, gentle smile crease; broad flat nose; short blunt lower canines.  \n• Hands: dark leathery palms, 4-in black claws; **right paw holds boulder, left paw holds 12-in carbon selfie stick.**  \n• Friendly, lovable, gentle vibe.\n\nCAMERA MOTION\n-------------\n0 – 2 s Stick frames Bigfoot full-body on log; slight wobble shows height.  \n2 – 5 s Bigfoot performs two slow boulder curls; log flexes under weight.  \n5 – 8 s Stick tilts slightly upward to capture grin + treetops; Bigfoot winks.\n\nLIGHTING & GRADE\n----------------\nLate-morning sunbeams dappling through cedars; teal-olive mids, warm highlights.\nGentle film grain; faint right-edge lens smudge (clone reference look).\n\nATMOSPHERE FX\n-------------\n• Specks of drifting pollen back-lit in sun.  \n• Occasional leaf flutter from breeze.\n\nAUDIO BED\n---------\nSoft forest ambience (songbirds, light wind), faint creak of log, grunt exertion,\nstone scrape when boulder lifts.\n\n### audio.speech  — MUST-SPEAK VERBATIM\nStart 01.0 s — deep, gravelly yet warm male, neutral US accent, mild PG  \n“Gotta keep the quads poppin’—swimsuit season never ends!”\n\nEND FRAME\n---------\nFreeze at 7.8 s with Bigfoot mid-curl, smiling at lens; insert one-frame white-noise\npop to maintain the series’ hard-cut rhythm.\n\n### **[Scene Example #2]**\n\n# SCENE 4  ▸  “Trail to the Lake”  ▸  0 – 8 s\n#\n# Selfie-stick POV. Bigfoot strolls through dense cedar woods toward a sun-sparkled\n# lake in the distance. **No spoken dialogue** in this beat—just ambient forest\n# sound and foot-fall crunches. Keeps reference camera-shake, color grade, and the\n# plush, lovable design.\n\nSCENE DESCRIPTION\n-----------------\nPOV selfie-stick vlog: Bigfoot walks along a pine-needle path, ferns brushing both\nsides. Sunbeams flicker through the canopy. At the 6-second mark the shimmering\nsurface of a lake appears through the trees; Bigfoot subtly tilts the stick to\nhint at the destination.\n\nTECHNICAL SPECS\n---------------\n• Duration 8 s • 29.97 fps • 4 K UHD • 16 : 9 horizontal  \n• Lens 24 mm eq, ƒ/2.8 • Shutter 1/60 s (subtle motion-blur)  \n• Hand-held wobble amplitude cloned from reference clip (small ±2° yaw/roll).\n\nSUBJECT DETAILS  (LOCK ACROSS ALL CUTS)\n---------------------------------------\n• 8-ft male Bigfoot, cedar-brown shaggy fur #6d6048 with faint moss specks.  \n• Fluffier cheek & shoulder fur → plush, huggable silhouette.  \n• **Eyes:** soft medium-amber, natural catch-lights only — no glow or excess brightness.  \n• Face: rounded cheeks, gentle smile crease; broad flat nose; short blunt lower canines.  \n• Hands: dark leathery palms, 4-inch black claws; right paw grips 12-inch carbon selfie stick.  \n• Friendly, lovable, gentle vibe.\n\nCAMERA MOTION\n-------------\n0 – 2 s Stick angled toward Bigfoot’s chest/face as he steps onto path.  \n2 – 6 s Smooth forward walk; slight vertical bob; ferns brush lens edges.  \n6 – 8 s Stick tilts ~20° left, revealing glinting lake through trees; light breeze ripples fur.\n\nLIGHTING & GRADE\n----------------\nLate-morning sun stripes across trail; teal-olive mid-tones, warm highlights,\ngentle film grain, faint right-edge lens smudge (clone reference look).\n\nATMOSPHERE FX\n-------------\n• Dust motes / pollen drifting in sunbeams.  \n• Occasional leaf flutter from breeze.\n\nAUDIO BED  (NO SPOKEN VOICE)\n----------------------------\nContinuous forest ambience: songbirds, light wind, distant woodpecker;\nsoft foot-crunch on pine needles; faint lake-lap audible after 6 s.\n\nEND FRAME\n---------\nFreeze at 7.8 s with lake shimmering through trees; insert one-frame white-noise\npop to preserve the series’ hard-cut rhythm.\n\n### **[Scene Example #3]**\n\n# SCENE 6  ▸  “Stone Funnel Trap”  ▸  0 – 8 s\n#\n# Selfie-stick POV. Bigfoot stands ankle-deep at a lake’s pebbled edge, demonstrates\n# an old trap: a V-shaped row of flat stones that channels minnows to a point.\n# He scoops one up and delivers two short lines **verbatim**. Reference camera\n# shake, color grade, and plush Bigfoot design.\n\nSCENE DESCRIPTION\n-----------------\nPOV selfie-stick vlog: Clear, knee-wide creek mouth where it meets the lake.\nFlat river stones form a tidy V-funnel in 6 in / 15 cm of water. Tiny minnows\nglisten inside. Bigfoot nudges stones, water ripples, then snatches a minnow and\nshows it to the camera.\n\nTECHNICAL SPECS\n---------------\n• Duration 8 s • 29.97 fps • 4 K UHD • 16 : 9 horizontal  \n• Lens 24 mm eq, ƒ/2.8 • Shutter 1/60 s (subtle motion-blur)  \n• Hand-held wobble amplitude cloned from the reference clip (±2° yaw/roll).\n\nSUBJECT DETAILS  (LOCK ACROSS ALL CUTS)\n---------------------------------------\n• 8-ft male Bigfoot, cedar-brown shaggy fur #6d6048 with faint moss specks.  \n• Fluffier cheek & shoulder fur → plush, huggable silhouette.  \n• **Eyes:** soft medium-amber, natural catch-lights only — no glow or excess brightness.  \n• Face: rounded cheeks, gentle smile crease; broad flat nose; short blunt lower canines.  \n• Hands: dark leathery palms, 4-inch black claws; right paw grips 12-inch carbon selfie stick.  \n• Friendly, lovable, gentle vibe.\n\nCAMERA MOTION\n-------------\n0 – 2 s Stick angles down: Bigfoot’s torso + stone V-trap fill frame; water sparkles.  \n2 – 5 s Left paw nudges stones; minnows funnel; slight shake.  \n5 – 8 s Quick scoop! Bigfoot lifts minnow close to lens, tilts stick up to face,\n         delivers lines while smiling.\n\nLIGHTING & GRADE\n----------------\nMid-morning sun; light dapples lake surface; teal-olive mid-tones, warm highlights,\ngentle film grain, faint right-edge lens smudge (clone reference look).\n\nATMOSPHERE FX\n-------------\n• Water ripple highlights; a few drifting pollen motes back-lit.  \n• Tiny splash droplets when minnow is lifted.\n\nAUDIO BED\n---------\nForest-lake ambience: distant loon call, light breeze, soft lap of water,\nstone scrape at 2 s, splash at 5 s.\n\n### audio.speech  — MUST-SPEAK VERBATIM\nStart 02.0 s — deep, gravelly yet warm male, neutral US accent  \n\n“Old-school fish funnel, folks—\n—works better than Wi-Fi.”\n\nEND FRAME\n---------\nFreeze at 7.8 s on Bigfoot’s grin and wriggling minnow; insert one-frame\nwhite-noise pop to maintain the series’ hard-cut rhythm.\n\n\n### Scene Brief\n\nVideo Title: {{ $('narrative_writer').item.json.output.vlogTitle }}\nVideo Concept: {{ $('narrative_writer').item.json.output.concept }}\nScene #{{ $json.sceneNumber }}\nScene Narrative: {{ $json.narrative }}\nScene Duration (Seconds): {{ $json.durationSeconds }} Seconds\nScene Timestamp Range: {{ $json.timestamp }}","batching":{},"promptType":"define"},"typeVersion":1.7},{"id":"5f018683-4a3b-4521-8080-7cb09a57295d","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-60,520],"parameters":{"width":1780,"height":320,"content":"## 2. Get Human Approval"},"typeVersion":1},{"id":"e4951ebb-486c-474a-8cc2-87d63f485448","name":"send_and_wait","type":"n8n-nodes-base.slack","position":[720,640],"webhookId":"3729d6f7-237a-42c2-85a9-8135eeb08d0e","parameters":{"select":"channel","message":"=Please approve or deny the above story in order to proceed with the video.","options":{},"channelId":{"__rl":true,"mode":"list","value":"C08KC39K8DR","cachedResultName":"ai-tools-content"},"operation":"sendAndWait","authentication":"oAuth2","approvalOptions":{"values":{"approvalType":"double"}}},"credentials":{"slackOAuth2Api":{"id":"iKdTzmZ6YuYaaRG4","name":"Slack (OAuth)"}},"typeVersion":2.3},{"id":"bba2bbdf-6074-443c-b794-5daf77fb8c42","name":"aggregate_scenes","type":"n8n-nodes-base.aggregate","position":[-40,640],"parameters":{"options":{},"fieldsToAggregate":{"fieldToAggregate":[{"fieldToAggregate":"scene_prompt"}]}},"typeVersion":1},{"id":"b9e8646f-58d9-4081-ab77-d4c72189a869","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-60,860],"parameters":{"color":6,"width":1780,"height":580,"content":"## 3. Generate Video"},"typeVersion":1},{"id":"9ec0ba2c-50bd-4002-866c-338cacc8eaff","name":"set_scene_prompts","type":"n8n-nodes-base.set","position":[1540,0],"parameters":{"options":{},"assignments":{"assignments":[{"id":"4e52f036-9f53-4ab0-ae90-bdc6e617bf50","name":"scene_prompt","type":"string","value":"={{ $json.text }}"}]}},"typeVersion":3.4},{"id":"0d9547fb-f9be-49a7-af71-77f7c884d412","name":"reset_scene_prompts","type":"n8n-nodes-base.set","position":[1160,640],"parameters":{"options":{},"assignments":{"assignments":[{"id":"fa0270fb-5c1a-45f5-8f12-23759f4c829d","name":"scene_prompts","type":"array","value":"={{ $('aggregate_scenes').item.json.scene_prompt }}"}]}},"typeVersion":3.4},{"id":"45031184-247f-4746-8c09-ac55eda27047","name":"split_scene_prompts","type":"n8n-nodes-base.splitOut","position":[1540,640],"parameters":{"options":{},"fieldToSplitOut":"scene_prompts"},"typeVersion":1},{"id":"07009341-3ba4-47f4-8d5b-ba23b9498af5","name":"queue_create_video","type":"n8n-nodes-base.httpRequest","position":[360,1140],"parameters":{"url":"https://queue.fal.run/fal-ai/veo3","method":"POST","options":{},"jsonBody":"={\n  \"prompt\": \"{{ $node[\"set_current_prompt\"].json.prompt }}\",\n  \"aspect_ratio\": \"16:9\",\n  \"duration\": \"8s\",\n  \"generate_audio\": true\n}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"UTIO1750OW5kD30c","name":"FAL API"}},"typeVersion":4.2},{"id":"041cd3c4-9053-414f-a49f-d988c3383d27","name":"wait","type":"n8n-nodes-base.wait","position":[560,1140],"webhookId":"5bfe0a88-1783-4d7e-8beb-870e7d2e6d1f","parameters":{"amount":10},"typeVersion":1.1},{"id":"8ec5168d-1420-4be5-a781-88499ab88bb9","name":"fetch_status","type":"n8n-nodes-base.httpRequest","position":[740,1140],"parameters":{"url":"=https://queue.fal.run/fal-ai/veo3/requests/{{ $node[\"queue_create_video\"].json.request_id }}/status","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"UTIO1750OW5kD30c","name":"FAL API"}},"typeVersion":4.2},{"id":"d7b65522-6643-4ec3-b7e9-6d705b31dbaa","name":"check_status","type":"n8n-nodes-base.if","position":[900,1140],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"64ce8054-03df-4939-90b8-c05fbe6035a7","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"COMPLETED"}]}},"typeVersion":2.2},{"id":"3f46ebb0-93b5-49e1-ba1c-e4a0a4176197","name":"fetch_result","type":"n8n-nodes-base.httpRequest","position":[1160,1220],"parameters":{"url":"=https://queue.fal.run/fal-ai/veo3/requests/{{ $node[\"queue_create_video\"].json.request_id }}","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"UTIO1750OW5kD30c","name":"FAL API"}},"typeVersion":4.2},{"id":"3a00c60f-5ff3-4552-817d-4942a2e500f5","name":"download_result_video","type":"n8n-nodes-base.httpRequest","position":[1360,1220],"parameters":{"url":"={{ $json.video.url }}","options":{"response":{"response":{"responseFormat":"file"}}}},"typeVersion":4.2},{"id":"ab3b734e-af1c-40c2-9a7d-db0f1afd1f6d","name":"upload_video","type":"n8n-nodes-base.googleDrive","position":[1540,1220],"parameters":{"name":"=scene_{{ $runIndex + 1 }}.mp4","driveId":{"__rl":true,"mode":"list","value":"My Drive","cachedResultUrl":"https://drive.google.com/drive/my-drive","cachedResultName":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"url","value":"https://drive.google.com/drive/folders/1Lf84YrGu456naiaclZRp1ARMZdQUKJj8"}},"credentials":{"googleDriveOAuth2Api":{"id":"PgwI1k1VFnoEhOi6","name":"Google Drive account"}},"typeVersion":3},{"id":"060008bc-569b-4a83-b956-914d6c7f0afa","name":"send_completion_msg","type":"n8n-nodes-base.slack","position":[1540,980],"webhookId":"5442cf5d-27cf-49c8-8916-dda0fcff1a96","parameters":{"text":"=*Video Generation Complete!*\n\nVideo Title: {{ $('narrative_writer').item.json.output.vlogTitle }}\nVideo Concept: {{ $('narrative_writer').item.json.output.concept }}\n\nGoogle Drive Link: https://drive.google.com/drive/folders/1Lf84YrGu456naiaclZRp1ARMZdQUKJj8","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C08KC39K8DR","cachedResultName":"ai-tools-content"},"otherOptions":{"includeLinkToWorkflow":false},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"iKdTzmZ6YuYaaRG4","name":"Slack (OAuth)"}},"typeVersion":2.3},{"id":"351b0dc5-276b-4759-bed9-2db98e233219","name":"narrative_writer","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[220,0],"parameters":{"text":"=**Role:** You are a creative director specializing in short-form, character-driven video content.\n\n**Goal:** Generate a storyboard outline for a short vlog based on a user-provided concept. The output must strictly adhere to the Persona, Creative Mandate, and Output Specification defined below.\n\n---\n\n### **[Persona: Bigfoot the Vlogger]**\n\n* **Identity:** A gentle giant named \"Sam,\" who is an endlessly curious and optimistic explorer. His vibe is that of a friendly, slightly clumsy, outdoorsy influencer discovering the human world for the first time.\n* **Voice & Tone:** Consistently jolly, heartwarming, and filled with childlike wonder. He is easily impressed and finds joy in small details. His language is simple, and he might gently misuse human slang. PG-rated, but occasional mild exasperation like \"geez\" or \"oh, nuts\" is authentic. His dialog and lines MUST be based around the \"Outdoor Boys\" YouTube channel and he must speak like the main character from that Channel. Avoid super generic language.\n* **Physicality:**\n    * An 8-foot male with shaggy, cedar-brown fur (`#6d6048`) and faint moss specks.\n    * His silhouette is soft and \"huggable\" due to fluffy fur on his cheeks and shoulders.\n    * Features soft, medium-amber eyes, rounded cheeks, a broad nose, and short, blunt lower canines visible when he smiles.\n    * He holds a simple selfie stick at all times.\n\n---\n\n### **[Creative Mandate]**\n\n* **Visual Style:** All scenes are shot 16:9 from a selfie-stick perspective held by Bigfoot. The style must feel like authentic, slightly shaky \"found footage.\" The camera is always on him, not his POV.\n* **Narrative Goal:** The primary objective is to create audience affection. Each scene must showcase Bigfoot's charm through his gentle humor, endearing discoveries, or moments of vulnerability. The 8-scene arc must have a satisfying and heartwarming payoff.\n\n---\n\n### **[Output Specification]**\n\n* **Structure:** Provide a storyboard with exactly 8 sequential scenes, formatted as shown below.\n* **Introduction Rule:** Scene 1 **must** be a direct-to-camera introduction. In it, Bigfoot should enthusiastically greet his viewers (e.g., \"Hey everybody!\" or \"Hi friends!\") and briefly state the goal or adventure for the vlog, based on the user's concept.\n* **Duration:** Each scene represents 8 seconds of footage.\n* **Content per Scene:** For each scene, provide a single, descriptive paragraph. This paragraph must seamlessly weave together the visual action, Bigfoot's expressions, and his spoken dialogue. Each scene you create should be part of a cohesive story.\n\n* **Example Formats:**\n    * **SCENE 1 (0:00-0:08):** Sam the Bigfoot grins warmly into his selfie stick, the background slightly out of focus. He waves a large, furry hand and says, \"Hey friends, Sam here! Today, we're going to try and build a brand new shelter out of... well, whatever we can find! Wish me luck!\"\n    * **SCENE 3 (0:32-0:40):** Sam holds up a rusty, bent bicycle wheel, peering at it curiously with his head tilted. He tries to spin it, a look of concentration on his face. \"Hmm. This is a weird-looking rock. Very... holey. Not good for a wall, I don't think.\"\n\n---\n\n### **Task**\n\nUsing the rules above, create the storyboard outline for the following concept:\n\n{{ $json['Bigfoot Video Idea'] }}\n","batching":{},"promptType":"define","hasOutputParser":true},"typeVersion":1.7},{"id":"c17f5174-5dbe-4a15-abd4-0ab55a023d53","name":"send_narrative_msg","type":"n8n-nodes-base.slack","position":[320,640],"webhookId":"6722ef92-cbb7-49e1-af4d-c313e81cec64","parameters":{"text":"=*Title:* {{$node[\"narrative_writer\"].json.output.vlogTitle}}\n*Concept:* {{$node[\"narrative_writer\"].json.output.concept}}\n\n{{ $node[\"narrative_writer\"].json.output.scenes\n  .map(scene => `*Scene ${scene.sceneNumber}* | ${scene.timestamp}\n> ${scene.narrative}`)\n  .join(\"\\n\\n\")\n}}","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C08KC39K8DR","cachedResultName":"ai-tools-content"},"otherOptions":{"includeLinkToWorkflow":false},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"iKdTzmZ6YuYaaRG4","name":"Slack (OAuth)"}},"typeVersion":2.3},{"id":"90165a0e-c0b8-43d1-b8ef-d39b0b5ab80b","name":"iterate_prompts","type":"n8n-nodes-base.splitInBatches","position":[-40,1000],"parameters":{"options":{}},"typeVersion":3},{"id":"8b298f43-7ea3-4157-bce6-b6953e14fb26","name":"set_current_prompt","type":"n8n-nodes-base.set","position":[180,1140],"parameters":{"options":{},"assignments":{"assignments":[{"id":"77f5459c-bb75-43ad-8027-a7fdf790a9f4","name":"prompt","type":"string","value":"={{ $json.scene_prompts }}"}]}},"typeVersion":3.4},{"id":"a7bcf7bc-1ebd-4935-9298-b4e63ad63aa2","name":"narrative_parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[300,220],"parameters":{"autoFix":true,"schemaType":"manual","inputSchema":"{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"title\": \"Vlog Storyboard\",\n  \"description\": \"A structured storyboard for a short vlog episode.\",\n  \"type\": \"object\",\n  \"required\": [\n    \"vlogTitle\",\n    \"concept\",\n    \"characterName\",\n    \"scenes\"\n  ],\n  \"properties\": {\n    \"vlogTitle\": {\n      \"description\": \"A creative and fun title for the vlog episode.\",\n      \"type\": \"string\"\n    },\n    \"concept\": {\n      \"description\": \"The user-provided concept for the vlog.\",\n      \"type\": \"string\"\n    },\n    \"characterName\": {\n      \"description\": \"The name of the protagonist.\",\n      \"type\": \"string\",\n      \"const\": \"Sam\"\n    },\n    \"scenes\": {\n      \"description\": \"An array of 10 scenes that form the storyboard.\",\n      \"type\": \"array\",\n      \"minItems\": 8,\n      \"maxItems\": 8,\n      \"items\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"sceneNumber\",\n          \"timestamp\",\n          \"durationSeconds\",\n          \"narrative\"\n        ],\n        \"properties\": {\n          \"sceneNumber\": {\n            \"description\": \"The sequential number of the scene.\",\n            \"type\": \"integer\",\n            \"minimum\": 1,\n            \"maximum\": 8\n          },\n          \"timestamp\": {\n            \"description\": \"The time range of the scene in the vlog (e.g., '0:00-0:08').\",\n            \"type\": \"string\",\n            \"pattern\": \"^\\\\d{1,2}:\\\\d{2}-\\\\d{1,2}:\\\\d{2}$\"\n          },\n          \"durationSeconds\": {\n            \"description\": \"The duration of the scene in seconds.\",\n            \"type\": \"integer\",\n            \"const\": 8\n          },\n          \"narrative\": {\n            \"description\": \"A single, descriptive paragraph weaving together the visual action, Sam's expressions, and his spoken dialogue.\",\n            \"type\": \"string\"\n          }\n        }\n      }\n    }\n  }\n}"},"typeVersion":1.3},{"id":"918e2d12-a924-409c-8b02-97f42847e1d6","name":"aggregate_video_results","type":"n8n-nodes-base.aggregate","position":[1160,980],"parameters":{"options":{},"aggregate":"aggregateAllItemData"},"typeVersion":1}],"active":false,"settings":{"executionOrder":"v1"},"versionId":"26d8848d-ad0c-4098-a523-8daa37ffb825","connections":{"wait":{"main":[[{"node":"fetch_status","type":"main","index":0}]]},"check_status":{"main":[[{"node":"fetch_result","type":"main","index":0}],[{"node":"wait","type":"main","index":0}]]},"fetch_result":{"main":[[{"node":"download_result_video","type":"main","index":0}]]},"fetch_status":{"main":[[{"node":"check_status","type":"main","index":0}]]},"form_trigger":{"main":[[{"node":"narrative_writer","type":"main","index":0}]]},"split_scenes":{"main":[[{"node":"scene_director","type":"main","index":0}]]},"upload_video":{"main":[[{"node":"iterate_prompts","type":"main","index":0}]]},"send_and_wait":{"main":[[{"node":"reset_scene_prompts","type":"main","index":0}]]},"scene_director":{"main":[[{"node":"set_scene_prompts","type":"main","index":0}]]},"claude-4-sonnet":{"ai_languageModel":[[{"node":"narrative_writer","type":"ai_languageModel","index":0},{"node":"narrative_parser","type":"ai_languageModel","index":0},{"node":"scene_director","type":"ai_languageModel","index":0}]]},"iterate_prompts":{"main":[[{"node":"aggregate_video_results","type":"main","index":0}],[{"node":"set_current_prompt","type":"main","index":0}]]},"aggregate_scenes":{"main":[[{"node":"send_narrative_msg","type":"main","index":0}]]},"narrative_parser":{"ai_outputParser":[[{"node":"narrative_writer","type":"ai_outputParser","index":0}]]},"narrative_writer":{"main":[[{"node":"split_scenes","type":"main","index":0}]]},"set_scene_prompts":{"main":[[{"node":"aggregate_scenes","type":"main","index":0}]]},"queue_create_video":{"main":[[{"node":"wait","type":"main","index":0}]]},"send_narrative_msg":{"main":[[{"node":"send_and_wait","type":"main","index":0}]]},"set_current_prompt":{"main":[[{"node":"queue_create_video","type":"main","index":0}]]},"reset_scene_prompts":{"main":[[{"node":"split_scene_prompts","type":"main","index":0}]]},"split_scene_prompts":{"main":[[{"node":"iterate_prompts","type":"main","index":0}]]},"download_result_video":{"main":[[{"node":"upload_video","type":"main","index":0}]]},"aggregate_video_results":{"main":[[{"node":"send_completion_msg","type":"main","index":0}]]}}}


name: Expose Translate a language endpoint to AI Agents with DeepL Tool MCP Server
author_name: David Ashby
author_username: cfomodz
nodes_used: []
categories: []
created_at: 2025-06-25T20:27:43.706Z
updated_at: 2025-06-25T20:27:43.706Z
url: https://n8n.io/workflows/5313
scraped_at: 2025-07-06 21:16:30
description:
  🛠️ DeepL Tool MCP Server

  Complete MCP server exposing all DeepL Tool operations to AI agents. Zero configuration needed - all 1 operations pre-built.

  ⚡ Quick Setup

  Import this workflow into your n8n instance
  Activate the workflow to start your MCP server
  Copy the webhook URL from the MCP trigger node
  Connect AI agents using the MCP URL

  🔧 How it Works

  • MCP Trigger: Serves as your server endpoint for AI agent requests
  • Tool Nodes: Pre-configured for every DeepL Tool operation
  • AI Expressions: Automatically populate parameters via $fromAI() placeholders
  • Native Integration: Uses official n8n DeepL Tool tool with full error handling

  📋 Available Operations (1 total)

  Every possible DeepL Tool operation is included:

  🔧 Language (1 operations)

  • Translate a language

  🤖 AI Integration

  Parameter Handling: AI agents automatically provide values for:
  • Resource IDs and identifiers
  • Search queries and filters
  • Content and data payloads
  • Configuration options

  Response Format: Native DeepL Tool API responses with full data structure

  Error Handling: Built-in n8n error management and retry logic

  💡 Usage Examples

  Connect this MCP server to any AI agent or workflow:

  • Claude Desktop: Add MCP server URL to configuration
  • Custom AI Apps: Use MCP URL as tool endpoint
  • Other n8n Workflows: Call MCP tools from any workflow
  • API Integration: Direct HTTP calls to MCP endpoints

  ✨ Benefits

  • Complete Coverage: Every DeepL Tool operation available
  • Zero Setup: No parameter mapping or configuration needed
  • AI-Ready: Built-in $fromAI() expressions for all parameters
  • Production Ready: Native n8n error handling and logging
  • Extensible: Easily modify or add custom logic

  &gt; 🆓 Free for community use! Ready to deploy in under 2 minutes.

workflow_json:
  {"id":"VJR1iild6byTNPfA","meta":null,"name":"DeepL Tool MCP Server","tags":[],"nodes":[{"id":"8b2ef62a-d971-4583-bda9-ffaddddf6994","name":"Workflow Overview 0","type":"n8n-nodes-base.stickyNote","position":[-1460,-240],"parameters":{"width":420,"height":760,"content":"## 🛠️ DeepL Tool MCP Server\n\n### 📋 Available Operations (1 total)\n\n**Language**: translate\n\n### ⚙️ Setup Instructions\n\n1. **Import Workflow**: Load this workflow into your n8n instance\n\n1. **🔑 Add Credentials**: Configure DeepL Tool authentication in one tool node then open and close all others.\n2. **🚀 Activate**: Enable this workflow to start your MCP server\n3. **🔗 Get URL**: Copy webhook URL from MCP trigger (right side)\n4. **🤖 Connect**: Use MCP URL in your AI agent configurations\n\n### ✨ Ready-to-Use Features\n\n• Zero configuration - all 1 operations pre-built\n• AI agents automatically populate parameters via `$fromAI()` expressions\n• Every resource and operation combination available\n• Native n8n error handling and response formatting\n• Modify parameter defaults in any tool node as needed\n\n### 💬 Need Help?\nCheck the [n8n documentation](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/) or ping me on [discord](https://discord.me/cfomodz) for MCP integration guidance or customizations."},"typeVersion":1},{"id":"deb3559d-6d79-40bc-9e07-a247234fd7e7","name":"DeepL Tool MCP Server","type":"@n8n/n8n-nodes-langchain.mcpTrigger","position":[-840,-120],"webhookId":"9f4295cb-5ce5-40ee-9a93-735959414c3f","parameters":{"path":"deepl-tool-mcp"},"typeVersion":1},{"id":"f52a8222-35a7-42c0-9499-231a5c70a6ed","name":"Translate a language","type":"n8n-nodes-base.deepLTool","position":[-800,140],"parameters":{"additionalFields":{}},"credentials":{"deepLApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"9e86ce80-f920-4873-b079-1f74b4113383","name":"Sticky Note 1","type":"n8n-nodes-base.stickyNote","position":[-1000,120],"parameters":{"color":4,"width":400,"height":180,"content":"## Language"},"typeVersion":1}],"active":false,"shared":[{"role":"workflow:owner","project":{"id":"G5fce9xGuBAsWBXe","icon":null,"name":"David Ashby <david.ashby.lds@gmail.com>","type":"personal","createdAt":"2025-06-04T02:55:02.013Z","updatedAt":"2025-06-04T02:56:01.361Z","projectRelations":[{"role":"project:personalOwner","user":{"id":"715c1c00-cb48-4712-9a32-f1f4b6db2b30","role":"global:owner","email":"david.ashby.lds@gmail.com","disabled":false,"lastName":"Ashby","settings":{"npsSurvey":{"responded":true,"lastShownAt":1749357655581},"userActivated":true,"userActivatedAt":1749075994495,"easyAIWorkflowOnboarded":true,"firstSuccessfulWorkflowId":"3N3vVikZb3MckFYm"},"createdAt":"2025-06-04T02:55:01.745Z","firstName":"David","isPending":false,"updatedAt":"2025-06-08T04:40:58.399Z","mfaEnabled":false,"personalizationAnswers":{"version":"v4","personalization_survey_n8n_version":"1.95.3","personalization_survey_submitted_at":"2025-06-04T02:56:07.075Z"}},"userId":"715c1c00-cb48-4712-9a32-f1f4b6db2b30","createdAt":"2025-06-04T02:55:02.013Z","projectId":"G5fce9xGuBAsWBXe","updatedAt":"2025-06-04T02:55:02.013Z"}]},"createdAt":"2025-06-25T20:27:11.624Z","projectId":"G5fce9xGuBAsWBXe","updatedAt":"2025-06-25T20:27:11.624Z","workflowId":"VJR1iild6byTNPfA"}],"settings":{"timezone":"America/New_York"},"createdAt":"2025-06-25T20:27:11.622Z","updatedAt":"2025-06-25T20:27:30.000Z","versionId":"fe0d8fd5-7e3b-4d24-8d41-0755caa36dc0","isArchived":false,"staticData":null,"connections":{"Translate a language":{"ai_tool":[[{"node":"DeepL Tool MCP Server","type":"ai_tool","index":0}]]}},"triggerCount":0}


name: AI Agent Powered Marketing 🛠️ Customer.io Tool MCP Server 💪 all 9 operations
author_name: David Ashby
author_username: cfomodz
nodes_used: []
categories: []
created_at: 2025-06-25T20:31:10.801Z
updated_at: 2025-06-25T20:31:10.801Z
url: https://n8n.io/workflows/5314
scraped_at: 2025-07-06 21:16:30
description:
  🛠️ Customer.io Tool MCP Server

  Complete MCP server exposing all Customer.io Tool operations to AI agents. Zero configuration needed - all 9 operations pre-built.

  ⚡ Quick Setup

  Import this workflow into your n8n instance
  Activate the workflow to start your MCP server
  Copy the webhook URL from the MCP trigger node
  Connect AI agents using the MCP URL

  🔧 How it Works

  • MCP Trigger: Serves as your server endpoint for AI agent requests
  • Tool Nodes: Pre-configured for every Customer.io Tool operation
  • AI Expressions: Automatically populate parameters via $fromAI() placeholders
  • Native Integration: Uses official n8n Customer.io Tool tool with full error handling

  📋 Available Operations (9 total)

  Every possible Customer.io Tool operation is included:

  🔧 Customer (2 operations)

  • Create or update a customer
  • Delete a customer

  📅 Event (2 operations)

  • Track a customer event
  • Track an anonymous event

  📢 Campaign (3 operations)

  • Get a campaign
  • Get many campaigns
  • Get metrics for a campaign

  🔧 Segment (2 operations)

  • Add a customer to a segment
  • Remove a customer from a segment

  🤖 AI Integration

  Parameter Handling: AI agents automatically provide values for:
  • Resource IDs and identifiers
  • Search queries and filters
  • Content and data payloads
  • Configuration options

  Response Format: Native Customer.io Tool API responses with full data structure

  Error Handling: Built-in n8n error management and retry logic

  💡 Usage Examples

  Connect this MCP server to any AI agent or workflow:

  • Claude Desktop: Add MCP server URL to configuration
  • Custom AI Apps: Use MCP URL as tool endpoint
  • Other n8n Workflows: Call MCP tools from any workflow
  • API Integration: Direct HTTP calls to MCP endpoints

  ✨ Benefits

  • Complete Coverage: Every Customer.io Tool operation available
  • Zero Setup: No parameter mapping or configuration needed
  • AI-Ready: Built-in $fromAI() expressions for all parameters
  • Production Ready: Native n8n error handling and logging
  • Extensible: Easily modify or add custom logic

  &gt; 🆓 Free for community use! Ready to deploy in under 2 minutes.

workflow_json:
  {"id":"aSehLJv8tKnjFJuc","meta":null,"name":"Customer.io Tool MCP Server","tags":[],"nodes":[{"id":"a9fbbaba-54d1-4f35-b218-664ea2c03148","name":"Workflow Overview 0","type":"n8n-nodes-base.stickyNote","position":[-1460,120],"parameters":{"content":""},"typeVersion":1},{"id":"f074ff4b-434e-4072-8bda-1a33f20bc078","name":"Customer.io Tool MCP Server","type":"@n8n/n8n-nodes-langchain.mcpTrigger","position":[-420,-60],"webhookId":"be8da786-6fb1-4abd-b8cc-aba7e5a99d27","parameters":{},"typeVersion":1},{"id":"096ecdc6-7be4-4d15-ab66-c9bcecb0c6a8","name":"Create or update a customer","type":"n8n-nodes-base.customerIoTool","position":[-800,140],"parameters":{},"typeVersion":1},{"id":"3a7ad844-523a-44e8-ab25-a630bcd5d80c","name":"Delete a customer","type":"n8n-nodes-base.customerIoTool","position":[-580,140],"parameters":{},"typeVersion":1},{"id":"67c2ce93-9775-48ba-997f-f39d3c452fdc","name":"Sticky Note 1","type":"n8n-nodes-base.stickyNote","position":[-1000,120],"parameters":{"content":""},"typeVersion":1},{"id":"d3161a1e-9cf6-460b-9995-bcdbaca2c324","name":"Track a customer event","type":"n8n-nodes-base.customerIoTool","position":[-800,380],"parameters":{},"typeVersion":1},{"id":"1cbc7162-4762-43cb-9067-827c8de0b6f3","name":"Track an anonymous event","type":"n8n-nodes-base.customerIoTool","position":[-580,380],"parameters":{},"typeVersion":1},{"id":"ec0db9ee-ab6a-4fb1-aafd-ebffb771d9c0","name":"Sticky Note 2","type":"n8n-nodes-base.stickyNote","position":[-1000,360],"parameters":{"content":""},"typeVersion":1},{"id":"b8a152a2-9ba5-4d36-a596-aa6c8b393166","name":"Get a campaign","type":"n8n-nodes-base.customerIoTool","position":[-800,620],"parameters":{},"typeVersion":1},{"id":"15efec0a-3faa-48f1-8f55-7005cdaeb0c8","name":"Get many campaigns","type":"n8n-nodes-base.customerIoTool","position":[-580,620],"parameters":{},"typeVersion":1},{"id":"ab9f0cb1-53c7-478e-85b2-5082226c8801","name":"Get metrics for a campaign","type":"n8n-nodes-base.customerIoTool","position":[-360,620],"parameters":{},"typeVersion":1},{"id":"645fc980-ff73-457d-b1df-d4d2d453d3b4","name":"Sticky Note 3","type":"n8n-nodes-base.stickyNote","position":[-1000,600],"parameters":{"content":""},"typeVersion":1},{"id":"f2f2952b-c49b-4eda-a949-23dda937f47a","name":"Add a customer to a segment","type":"n8n-nodes-base.customerIoTool","position":[-800,860],"parameters":{},"typeVersion":1},{"id":"ff2ede8f-2dc9-4127-9ba0-541485c45767","name":"Remove a customer from a segment","type":"n8n-nodes-base.customerIoTool","position":[-580,860],"parameters":{},"typeVersion":1},{"id":"6fcb296b-2295-4821-8978-1569a88666f5","name":"Sticky Note 4","type":"n8n-nodes-base.stickyNote","position":[-1000,840],"parameters":{"content":""},"typeVersion":1}],"active":false,"shared":[{"role":"workflow:owner","project":{"id":"G5fce9xGuBAsWBXe","icon":null,"name":"David Ashby <david.ashby.lds@gmail.com>","type":"personal","createdAt":"2025-06-04T02:55:02.013Z","updatedAt":"2025-06-04T02:56:01.361Z","projectRelations":[{"role":"project:personalOwner","user":{"id":"715c1c00-cb48-4712-9a32-f1f4b6db2b30","role":"global:owner","email":"david.ashby.lds@gmail.com","disabled":false,"lastName":"Ashby","settings":{"npsSurvey":{"responded":true,"lastShownAt":1749357655581},"userActivated":true,"userActivatedAt":1749075994495,"easyAIWorkflowOnboarded":true,"firstSuccessfulWorkflowId":"3N3vVikZb3MckFYm"},"createdAt":"2025-06-04T02:55:01.745Z","firstName":"David","isPending":false,"updatedAt":"2025-06-08T04:40:58.399Z","mfaEnabled":false,"personalizationAnswers":{"version":"v4","personalization_survey_n8n_version":"1.95.3","personalization_survey_submitted_at":"2025-06-04T02:56:07.075Z"}},"userId":"715c1c00-cb48-4712-9a32-f1f4b6db2b30","createdAt":"2025-06-04T02:55:02.013Z","projectId":"G5fce9xGuBAsWBXe","updatedAt":"2025-06-04T02:55:02.013Z"}]},"createdAt":"2025-06-25T20:28:29.814Z","projectId":"G5fce9xGuBAsWBXe","updatedAt":"2025-06-25T20:28:29.814Z","workflowId":"aSehLJv8tKnjFJuc"}],"settings":{"timezone":"America/New_York"},"createdAt":"2025-06-25T20:28:29.812Z","updatedAt":"2025-06-25T20:29:02.000Z","versionId":"b9c10994-ffad-49bd-afab-1197163a9d81","isArchived":false,"staticData":null,"connections":{"Get a campaign":{"ai_tool":[[{"node":"Customer.io Tool MCP Server","type":"ai_tool","index":0}]]},"Delete a customer":{"ai_tool":[[{"node":"Customer.io Tool MCP Server","type":"ai_tool","index":0}]]},"Get many campaigns":{"ai_tool":[[{"node":"Customer.io Tool MCP Server","type":"ai_tool","index":0}]]},"Track a customer event":{"ai_tool":[[{"node":"Customer.io Tool MCP Server","type":"ai_tool","index":0}]]},"Track an anonymous event":{"ai_tool":[[{"node":"Customer.io Tool MCP Server","type":"ai_tool","index":0}]]},"Get metrics for a campaign":{"ai_tool":[[{"node":"Customer.io Tool MCP Server","type":"ai_tool","index":0}]]},"Add a customer to a segment":{"ai_tool":[[{"node":"Customer.io Tool MCP Server","type":"ai_tool","index":0}]]},"Create or update a customer":{"ai_tool":[[{"node":"Customer.io Tool MCP Server","type":"ai_tool","index":0}]]},"Remove a customer from a segment":{"ai_tool":[[{"node":"Customer.io Tool MCP Server","type":"ai_tool","index":0}]]}},"triggerCount":0}


name: Let AI Agents Run Your CRM with Copper Tool MCP Server 💪 all 32 operations
author_name: David Ashby
author_username: cfomodz
nodes_used: []
categories: []
created_at: 2025-06-25T20:35:13.725Z
updated_at: 2025-06-25T20:35:13.725Z
url: https://n8n.io/workflows/5315
scraped_at: 2025-07-06 21:16:30
description:
  🛠️ Copper Tool MCP Server

  Complete MCP server exposing all Copper Tool operations to AI agents. Zero configuration needed - all 32 operations pre-built.

  ⚡ Quick Setup

  Import this workflow into your n8n instance
  Activate the workflow to start your MCP server
  Copy the webhook URL from the MCP trigger node
  Connect AI agents using the MCP URL

  🔧 How it Works

  • MCP Trigger: Serves as your server endpoint for AI agent requests
  • Tool Nodes: Pre-configured for every Copper Tool operation
  • AI Expressions: Automatically populate parameters via $fromAI() placeholders
  • Native Integration: Uses official n8n Copper Tool tool with full error handling

  📋 Available Operations (32 total)

  Every possible Copper Tool operation is included:

  🔧 Company (5 operations)

  • Create a company
  • Delete a company
  • Get a company
  • Get many companies
  • Update a company

  🔧 Customersource (1 operations)

  • Get many customer sources

  🔧 Lead (5 operations)

  • Create a lead
  • Delete a lead
  • Get a lead
  • Get many leads
  • Update a lead

  🔧 Opportunity (5 operations)

  • Create an opportunity
  • Delete an opportunity
  • Get an opportunity
  • Get many opportunities
  • Update an opportunity

  👥 Person (5 operations)

  • Create a person
  • Delete a person
  • Get a person
  • Get many people
  • Update a person

  🔧 Project (5 operations)

  • Create a project
  • Delete a project
  • Get a project
  • Get many projects
  • Update a project

  🔧 Task (5 operations)

  • Create a task
  • Delete a task
  • Get a task
  • Get many tasks
  • Update a task

  👤 User (1 operations)

  • Get many users

  🤖 AI Integration

  Parameter Handling: AI agents automatically provide values for:
  • Resource IDs and identifiers
  • Search queries and filters
  • Content and data payloads
  • Configuration options

  Response Format: Native Copper Tool API responses with full data structure

  Error Handling: Built-in n8n error management and retry logic

  💡 Usage Examples

  Connect this MCP server to any AI agent or workflow:

  • Claude Desktop: Add MCP server URL to configuration
  • Custom AI Apps: Use MCP URL as tool endpoint
  • Other n8n Workflows: Call MCP tools from any workflow
  • API Integration: Direct HTTP calls to MCP endpoints

  ✨ Benefits

  • Complete Coverage: Every Copper Tool operation available
  • Zero Setup: No parameter mapping or configuration needed
  • AI-Ready: Built-in $fromAI() expressions for all parameters
  • Production Ready: Native n8n error handling and logging
  • Extensible: Easily modify or add custom logic

  &gt; 🆓 Free for community use! Ready to deploy in under 2 minutes.

workflow_json:
  {"id":"LqBbF70KfRUnuRnY","meta":null,"name":"Copper Tool MCP Server","tags":[],"nodes":[{"id":"a5603c0e-1366-43a5-854d-da3d4b749360","name":"Workflow Overview 0","type":"n8n-nodes-base.stickyNote","position":[-1480,100],"parameters":{"content":""},"typeVersion":1},{"id":"42967f3e-e783-4b77-9eb3-b29f3691429a","name":"Copper Tool MCP Server","type":"@n8n/n8n-nodes-langchain.mcpTrigger","position":[-420,100],"webhookId":"59197cd2-9ed1-42d8-83b8-64926677560a","parameters":{},"typeVersion":1},{"id":"5e017ebd-3ce4-4327-9d7a-209abcdd33c3","name":"Create a company","type":"n8n-nodes-base.copperTool","position":[-800,360],"parameters":{},"typeVersion":1},{"id":"50ccc9aa-6242-437d-b9d9-4c2543a3a0e9","name":"Delete a company","type":"n8n-nodes-base.copperTool","position":[-580,360],"parameters":{},"typeVersion":1},{"id":"f0938c12-1bb4-4dc1-9272-4aad3e312b73","name":"Get a company","type":"n8n-nodes-base.copperTool","position":[-360,360],"parameters":{},"typeVersion":1},{"id":"73d30105-504b-49bc-b22d-fe9480d8c3c7","name":"Get many companies","type":"n8n-nodes-base.copperTool","position":[-140,360],"parameters":{},"typeVersion":1},{"id":"fe9e0eaa-0100-4979-a135-fe6864d2911f","name":"Update a company","type":"n8n-nodes-base.copperTool","position":[80,360],"parameters":{},"typeVersion":1},{"id":"3bc05e37-c103-403f-8d99-069692a04d47","name":"Sticky Note 1","type":"n8n-nodes-base.stickyNote","position":[-1000,340],"parameters":{"content":""},"typeVersion":1},{"id":"a65ffc4d-7c54-46d9-8c37-fbb9a0f1fa63","name":"Get many customer sources","type":"n8n-nodes-base.copperTool","position":[-800,120],"parameters":{},"typeVersion":1},{"id":"0eebe227-e244-4e7d-be88-4722c45d50d9","name":"Sticky Note 2","type":"n8n-nodes-base.stickyNote","position":[-1000,100],"parameters":{"content":""},"typeVersion":1},{"id":"4c226540-dba7-4bfe-aa7e-a20557f456a0","name":"Create a lead","type":"n8n-nodes-base.copperTool","position":[-800,620],"parameters":{},"typeVersion":1},{"id":"2ed04b38-cdd1-4182-abc5-61fb279e3564","name":"Get a lead","type":"n8n-nodes-base.copperTool","position":[-360,620],"parameters":{},"typeVersion":1},{"id":"966f632e-580d-4d71-8881-e0bb08cff3d7","name":"Get many leads","type":"n8n-nodes-base.copperTool","position":[-140,620],"parameters":{},"typeVersion":1},{"id":"20064bb1-06d8-4464-92f6-f36b4dec69f6","name":"Update a lead","type":"n8n-nodes-base.copperTool","position":[80,620],"parameters":{},"typeVersion":1},{"id":"91a4130f-ef5c-49d6-9771-2edb1874f1f9","name":"Sticky Note 3","type":"n8n-nodes-base.stickyNote","position":[-1000,600],"parameters":{"content":""},"typeVersion":1},{"id":"952017cb-c474-4144-9dd1-7c43b9a6c422","name":"Create an opportunity","type":"n8n-nodes-base.copperTool","position":[-800,860],"parameters":{},"typeVersion":1},{"id":"04bc7082-1405-435e-9348-244c918baec7","name":"Delete an opportunity","type":"n8n-nodes-base.copperTool","position":[-580,860],"parameters":{},"typeVersion":1},{"id":"d1888356-d361-44ae-b371-9deb72f004dd","name":"Get an opportunity","type":"n8n-nodes-base.copperTool","position":[-360,860],"parameters":{},"typeVersion":1},{"id":"3bc6ac5b-c90c-4ecb-b693-3431cbc63353","name":"Get many opportunities","type":"n8n-nodes-base.copperTool","position":[-140,860],"parameters":{},"typeVersion":1},{"id":"b321e533-342c-418b-8ebe-0aee887cb227","name":"Update an opportunity","type":"n8n-nodes-base.copperTool","position":[80,860],"parameters":{},"typeVersion":1},{"id":"97d25653-ccd4-41c0-9f08-25c282971ac6","name":"Sticky Note 4","type":"n8n-nodes-base.stickyNote","position":[-1000,840],"parameters":{"content":""},"typeVersion":1},{"id":"061d46d7-f255-412b-8bd4-918b9fba0af8","name":"Create a person","type":"n8n-nodes-base.copperTool","position":[-800,1100],"parameters":{},"typeVersion":1},{"id":"ec60f912-77e7-4bcc-9703-c8d99a3f0c57","name":"Delete a person","type":"n8n-nodes-base.copperTool","position":[-580,1100],"parameters":{},"typeVersion":1},{"id":"7b709495-4d3c-444b-970d-a4e99c9f2a23","name":"Get a person","type":"n8n-nodes-base.copperTool","position":[-360,1100],"parameters":{},"typeVersion":1},{"id":"fb65e8d2-a13a-4a98-b263-7654da184953","name":"Get many people","type":"n8n-nodes-base.copperTool","position":[-140,1100],"parameters":{},"typeVersion":1},{"id":"10ae21d9-ac30-43ad-aca4-d36695a55d17","name":"Update a person","type":"n8n-nodes-base.copperTool","position":[80,1100],"parameters":{},"typeVersion":1},{"id":"d10a79b9-4973-4244-9463-42fbbe3c6683","name":"Sticky Note 5","type":"n8n-nodes-base.stickyNote","position":[-1000,1080],"parameters":{"content":""},"typeVersion":1},{"id":"3409a742-8b6f-48da-8290-bfcf3c141c7c","name":"Create a project","type":"n8n-nodes-base.copperTool","position":[-800,1340],"parameters":{},"typeVersion":1},{"id":"87491d55-cbaa-4445-9a9a-d98923c4b698","name":"Delete a project","type":"n8n-nodes-base.copperTool","position":[-580,1340],"parameters":{},"typeVersion":1},{"id":"a9f7bbc2-3f5c-4f23-a35d-d421eb76b049","name":"Get a project","type":"n8n-nodes-base.copperTool","position":[-360,1340],"parameters":{},"typeVersion":1},{"id":"fcd30e8f-0084-488a-b905-c34d64065708","name":"Get many projects","type":"n8n-nodes-base.copperTool","position":[-140,1340],"parameters":{},"typeVersion":1},{"id":"26867d45-4888-4155-ae62-1aa34eeb0241","name":"Update a project","type":"n8n-nodes-base.copperTool","position":[80,1340],"parameters":{},"typeVersion":1},{"id":"2141ce11-54ab-4576-abaa-06119ce428a2","name":"Sticky Note 6","type":"n8n-nodes-base.stickyNote","position":[-1000,1320],"parameters":{"content":""},"typeVersion":1},{"id":"e212c096-d77f-47ac-a83b-29a53cd55f5d","name":"Create a task","type":"n8n-nodes-base.copperTool","position":[-800,1580],"parameters":{},"typeVersion":1},{"id":"30cf89e6-2081-4b27-9b24-577b7ed04a1c","name":"Delete a task","type":"n8n-nodes-base.copperTool","position":[-580,1580],"parameters":{},"typeVersion":1},{"id":"e5db9f26-de74-4e84-b7f7-53615a315a4d","name":"Get a task","type":"n8n-nodes-base.copperTool","position":[-360,1580],"parameters":{},"typeVersion":1},{"id":"84a386d2-9074-4c25-9679-aec78e3994b1","name":"Get many tasks","type":"n8n-nodes-base.copperTool","position":[-140,1580],"parameters":{},"typeVersion":1},{"id":"37972a8a-95f2-4292-ae65-717276885c82","name":"Update a task","type":"n8n-nodes-base.copperTool","position":[80,1580],"parameters":{},"typeVersion":1},{"id":"8e300062-b47a-4ca0-bb9e-8ff4b5b00c97","name":"Sticky Note 7","type":"n8n-nodes-base.stickyNote","position":[-1000,1560],"parameters":{"content":""},"typeVersion":1},{"id":"53c05730-a9c3-4097-adef-c3b8e67e6727","name":"Get many users","type":"n8n-nodes-base.copperTool","position":[-800,1820],"parameters":{},"typeVersion":1},{"id":"072ae846-aa31-4fcf-8c9c-473451fd06f3","name":"Sticky Note 8","type":"n8n-nodes-base.stickyNote","position":[-1000,1800],"parameters":{"content":""},"typeVersion":1}],"active":false,"shared":[{"role":"workflow:owner","project":{"id":"G5fce9xGuBAsWBXe","icon":null,"name":"David Ashby <david.ashby.lds@gmail.com>","type":"personal","createdAt":"2025-06-04T02:55:02.013Z","updatedAt":"2025-06-04T02:56:01.361Z","projectRelations":[{"role":"project:personalOwner","user":{"id":"715c1c00-cb48-4712-9a32-f1f4b6db2b30","role":"global:owner","email":"david.ashby.lds@gmail.com","disabled":false,"lastName":"Ashby","settings":{"npsSurvey":{"responded":true,"lastShownAt":1749357655581},"userActivated":true,"userActivatedAt":1749075994495,"easyAIWorkflowOnboarded":true,"firstSuccessfulWorkflowId":"3N3vVikZb3MckFYm"},"createdAt":"2025-06-04T02:55:01.745Z","firstName":"David","isPending":false,"updatedAt":"2025-06-08T04:40:58.399Z","mfaEnabled":false,"personalizationAnswers":{"version":"v4","personalization_survey_n8n_version":"1.95.3","personalization_survey_submitted_at":"2025-06-04T02:56:07.075Z"}},"userId":"715c1c00-cb48-4712-9a32-f1f4b6db2b30","createdAt":"2025-06-04T02:55:02.013Z","projectId":"G5fce9xGuBAsWBXe","updatedAt":"2025-06-04T02:55:02.013Z"}]},"createdAt":"2025-06-25T20:32:48.752Z","projectId":"G5fce9xGuBAsWBXe","updatedAt":"2025-06-25T20:32:48.752Z","workflowId":"LqBbF70KfRUnuRnY"}],"settings":{"timezone":"America/New_York"},"createdAt":"2025-06-25T20:32:48.751Z","updatedAt":"2025-06-25T20:33:50.000Z","versionId":"8a486cee-8350-4448-b5b1-28c2fcd83492","isArchived":false,"staticData":null,"connections":{"Get a lead":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Get a task":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Get a person":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Create a lead":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Create a task":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Delete a task":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Get a company":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Get a project":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Update a lead":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Update a task":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Get many leads":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Get many tasks":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Get many users":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Create a person":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Delete a person":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Get many people":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Update a person":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Create a company":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Create a project":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Delete a company":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Delete a project":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Update a company":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Update a project":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Get many projects":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Get an opportunity":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Get many companies":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Create an opportunity":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Delete an opportunity":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Update an opportunity":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Get many opportunities":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]},"Get many customer sources":{"ai_tool":[[{"node":"Copper Tool MCP Server","type":"ai_tool","index":0}]]}},"triggerCount":0}


name: 🛠️ Cloudflare Tool MCP Server
author_name: David Ashby
author_username: cfomodz
nodes_used: []
categories: []
created_at: 2025-06-25T21:15:19.291Z
updated_at: 2025-06-25T21:15:19.291Z
url: https://n8n.io/workflows/5322
scraped_at: 2025-07-06 21:16:30
description:
  🛠️ Cloudflare Tool MCP Server

  Complete MCP server exposing all Cloudflare Tool operations to AI agents. Zero configuration needed - all 4 operations pre-built.

  ⚡ Quick Setup

  Import this workflow into your n8n instance
  Activate the workflow to start your MCP server
  Copy the webhook URL from the MCP trigger node
  Connect AI agents using the MCP URL

  🔧 How it Works

  • MCP Trigger: Serves as your server endpoint for AI agent requests
  • Tool Nodes: Pre-configured for every Cloudflare Tool operation
  • AI Expressions: Automatically populate parameters via $fromAI() placeholders
  • Native Integration: Uses official n8n Cloudflare Tool tool with full error handling

  📋 Available Operations (4 total)

  Every possible Cloudflare Tool operation is included:

  🔧 Zonecertificate (4 operations)

  • Delete a certificate
  • Get a certificate
  • Get many certificates
  • Upload a certificate

  🤖 AI Integration

  Parameter Handling: AI agents automatically provide values for:
  • Resource IDs and identifiers
  • Search queries and filters
  • Content and data payloads
  • Configuration options

  Response Format: Native Cloudflare Tool API responses with full data structure

  Error Handling: Built-in n8n error management and retry logic

  💡 Usage Examples

  Connect this MCP server to any AI agent or workflow:

  • Claude Desktop: Add MCP server URL to configuration
  • Custom AI Apps: Use MCP URL as tool endpoint
  • Other n8n Workflows: Call MCP tools from any workflow
  • API Integration: Direct HTTP calls to MCP endpoints

  ✨ Benefits

  • Complete Coverage: Every Cloudflare Tool operation available
  • Zero Setup: No parameter mapping or configuration needed
  • AI-Ready: Built-in $fromAI() expressions for all parameters
  • Production Ready: Native n8n error handling and logging
  • Extensible: Easily modify or add custom logic

  &gt; 🆓 Free for community use! Ready to deploy in under 2 minutes.

workflow_json:
  {"id":"i2mXmOzhSG4Wg1sp","meta":null,"name":"Cloudflare Tool MCP Server","tags":[],"nodes":[{"id":"0821253e-8e89-4c8a-809b-73b935408e6a","name":"Workflow Overview 0","type":"n8n-nodes-base.stickyNote","position":[-1460,-260],"parameters":{"width":420,"height":780,"content":"## 🛠️ Cloudflare Tool MCP Server\n\n### 📋 Available Operations (4 total)\n\n**Zonecertificate**: delete, get, get many, upload\n\n### ⚙️ Setup Instructions\n\n1. **Import Workflow**: Load this workflow into your n8n instance\n\n1. **🔑 Add Credentials**: Configure Cloudflare Tool authentication in one tool node then open and close all others.\n2. **🚀 Activate**: Enable this workflow to start your MCP server\n3. **🔗 Get URL**: Copy webhook URL from MCP trigger (right side)\n4. **🤖 Connect**: Use MCP URL in your AI agent configurations\n\n### ✨ Ready-to-Use Features\n\n• Zero configuration - all 4 operations pre-built\n• AI agents automatically populate parameters via `$fromAI()` expressions\n• Every resource and operation combination available\n• Native n8n error handling and response formatting\n• Modify parameter defaults in any tool node as needed\n\n### 💬 Need Help?\nCheck the [n8n documentation](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/) or ping me on [discord](https://discord.me/cfomodz) for MCP integration guidance or customizations."},"typeVersion":1},{"id":"1381deec-4f60-492f-a72b-282e25aad23a","name":"Cloudflare Tool MCP Server","type":"@n8n/n8n-nodes-langchain.mcpTrigger","position":[-420,-240],"webhookId":"4320bda5-d936-4116-b746-f32d034e624c","parameters":{"path":"cloudflare-tool-mcp"},"typeVersion":1},{"id":"bb959b2d-a1f2-47e0-989f-c640fd8bdb84","name":"Delete a certificate","type":"n8n-nodes-base.cloudflareTool","position":[-800,140],"parameters":{"zoneId":"={{ $fromAI('Zone_Id', ``, 'string') }}","operation":"delete","certificateId":"={{ $fromAI('Certificate_Id', ``, 'string') }}"},"credentials":{"cloudflareApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"14e70208-94dd-4128-9f6c-484e121b68c9","name":"Get a certificate","type":"n8n-nodes-base.cloudflareTool","position":[-580,140],"parameters":{"zoneId":"={{ $fromAI('Zone_Id', ``, 'string') }}","operation":"get","certificateId":"={{ $fromAI('Certificate_Id', ``, 'string') }}"},"credentials":{"cloudflareApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"18377f4c-5e73-4d87-a5c9-ed8c4cb8bbb1","name":"Get many certificates","type":"n8n-nodes-base.cloudflareTool","position":[-360,140],"parameters":{"limit":"={{ $fromAI('Limit', ``, 'number') }}","zoneId":"={{ $fromAI('Zone_Id', ``, 'string') }}","filters":{},"operation":"getMany","returnAll":"={{ $fromAI('Return_All', ``, 'boolean') }}"},"credentials":{"cloudflareApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"7eda8f1d-7953-421d-a287-0d73bb68f9ee","name":"Upload a certificate","type":"n8n-nodes-base.cloudflareTool","position":[-140,140],"parameters":{"zoneId":"={{ $fromAI('Zone_Id', ``, 'string') }}","privateKey":"={{ $fromAI('Private_Key', ``, 'string') }}","certificate":"={{ $fromAI('Certificate', ``, 'string') }}"},"credentials":{"cloudflareApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"5e057152-6ec8-4a0e-8451-1a928e2b8e8e","name":"Sticky Note 1","type":"n8n-nodes-base.stickyNote","position":[-1000,120],"parameters":{"color":4,"width":1060,"height":180,"content":"## Zonecertificate"},"typeVersion":1}],"active":false,"shared":[{"role":"workflow:owner","project":{"id":"G5fce9xGuBAsWBXe","icon":null,"name":"David Ashby <david.ashby.lds@gmail.com>","type":"personal","createdAt":"2025-06-04T02:55:02.013Z","updatedAt":"2025-06-04T02:56:01.361Z","projectRelations":[{"role":"project:personalOwner","user":{"id":"715c1c00-cb48-4712-9a32-f1f4b6db2b30","role":"global:owner","email":"david.ashby.lds@gmail.com","disabled":false,"lastName":"Ashby","settings":{"npsSurvey":{"responded":true,"lastShownAt":1749357655581},"userActivated":true,"userActivatedAt":1749075994495,"easyAIWorkflowOnboarded":true,"firstSuccessfulWorkflowId":"3N3vVikZb3MckFYm"},"createdAt":"2025-06-04T02:55:01.745Z","firstName":"David","isPending":false,"updatedAt":"2025-06-08T04:40:58.399Z","mfaEnabled":false,"personalizationAnswers":{"version":"v4","personalization_survey_n8n_version":"1.95.3","personalization_survey_submitted_at":"2025-06-04T02:56:07.075Z"}},"userId":"715c1c00-cb48-4712-9a32-f1f4b6db2b30","createdAt":"2025-06-04T02:55:02.013Z","projectId":"G5fce9xGuBAsWBXe","updatedAt":"2025-06-04T02:55:02.013Z"}]},"createdAt":"2025-06-25T21:14:46.264Z","projectId":"G5fce9xGuBAsWBXe","updatedAt":"2025-06-25T21:14:46.264Z","workflowId":"i2mXmOzhSG4Wg1sp"}],"settings":{"timezone":"America/New_York"},"createdAt":"2025-06-25T21:14:46.262Z","updatedAt":"2025-06-25T21:15:06.000Z","versionId":"a19aca38-eebc-4ad4-94aa-76fbdffe9cba","isArchived":false,"staticData":null,"connections":{"Get a certificate":{"ai_tool":[[{"node":"Cloudflare Tool MCP Server","type":"ai_tool","index":0}]]},"Delete a certificate":{"ai_tool":[[{"node":"Cloudflare Tool MCP Server","type":"ai_tool","index":0}]]},"Upload a certificate":{"ai_tool":[[{"node":"Cloudflare Tool MCP Server","type":"ai_tool","index":0}]]},"Get many certificates":{"ai_tool":[[{"node":"Cloudflare Tool MCP Server","type":"ai_tool","index":0}]]}},"triggerCount":0}


name: Viral ASMR Video Factory: Automatically generate viral videos on autopilot.
author_name: Adam Crafts
author_username: adamcrafts
categories: []
created_at: 2025-06-25T21:18:03.073Z
updated_at: 2025-06-25T21:18:03.073Z
url: https://n8n.io/workflows/5324
scraped_at: 2025-07-06 21:16:30
description:
  🚀 Overview

  This automation is a complete content creation engine for your social media. It endlessly designs, generates, and organizes unique and oddly satisfying ASMR videos, ensuring you always have fresh, viral-style content ready to post on platforms like TikTok, YouTube Shorts, and Instagram Reels.

  Video Examples

  😩 The Problem

  Consistently creating viral content is exhausting. You're constantly battling creative burnout, trying to come up with new ideas that are fresh and engaging. For every video, you have to brainstorm an idea, write a detailed prompt for an AI generator, wait for the video, and then manually track what you've already posted. This manual process is slow, repetitive, and a major roadblock to scaling your content output.

  ✨ The Solution

  This workflow acts as your personal, automated content creation employee. When you trigger it, the automation first checks a Google Sheet to see what videos it has already made. Then, a built-in "Idea Agent" cleverly brainstorms a brand new, unused concept (like a "glass banana" or "glass pomegranate").

  Next, it passes this idea to a "Prompt Agent," which writes a perfectly detailed, sensory-rich script designed to produce a stunning, hyper-realistic video. The script is sent to an AI video generator, and the workflow waits patiently for it to finish. Once the video is ready, the automation saves the final video link neatly into your Google Sheet and cleans up the oldest entry, creating a self-sustaining content machine.

  ⚙️ Simple Setup

  This workflow is a pre-built blueprint, designed to be up and running in minutes!

  Upload:** Simply upload the provided JSON file into your n8n instance.
  Connect:** Connect your app credentials (e.g., your Google, OpenAI, and Fal accounts). The workflow will show you exactly where.
  Activate:** Turn the workflow on, and it's ready to go! Let your new automated employee get to work.

  🌐 Explore more workflows
  ❤️ Buy more workflows at: adamcrafts
  🦾 Custom workflows at: adamcrafts@cloudysoftwares.com
  adamaicrafts@gmail.com


  &gt; Build once, customize endlessly, and scale your video content like never before.

nodes_used:
  ["n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.outputParserStructured"]

workflow_json:
  {"meta":{"instanceId":"2d54f61dfd963457efb86a8690aae457934e92fb9e4b8b6490ca74fc37094458","templateCredsSetupCompleted":true},"nodes":[{"id":"560431ab-faeb-44a1-ae7e-59c7d1d44c85","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-260,-40],"parameters":{"content":""},"typeVersion":1},{"id":"1b8b77b4-34af-45b1-972a-53ee50d96c96","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[-260,-380],"parameters":{"content":""},"typeVersion":1},{"id":"4b715b09-7337-423d-96bf-918be3586376","name":"Generate Video","type":"n8n-nodes-base.httpRequest","position":[560,80],"parameters":{},"typeVersion":4.2},{"id":"1c22bca2-b1b2-43de-bde7-e5524878715f","name":"Get Result","type":"n8n-nodes-base.httpRequest","onError":"continueErrorOutput","position":[880,80],"parameters":{},"typeVersion":4.2},{"id":"37ecabf0-9445-409a-b322-f98aa71d98a3","name":"Result","type":"n8n-nodes-base.set","position":[1240,100],"parameters":{},"typeVersion":3.4},{"id":"2869a598-80ea-4681-817a-873be9fdcebe","name":"5 Minutes","type":"n8n-nodes-base.wait","position":[720,80],"webhookId":"caad73e3-58d8-4fbd-a3e9-c42424f2d1ee","parameters":{},"typeVersion":1.1},{"id":"1961fd30-6e62-4a67-ae72-440dd34a9d0b","name":"Get Past Objects","type":"n8n-nodes-base.googleSheets","position":[440,-280],"parameters":{},"typeVersion":4.6},{"id":"efabebc6-e9d8-4002-838a-42594de5d2ac","name":"Prompt Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[240,80],"parameters":{},"typeVersion":2},{"id":"38224788-b150-4585-bd7b-05ddf7abe50e","name":"Idea Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[980,-280],"parameters":{},"typeVersion":2},{"id":"03f01cf7-2634-4527-bf79-6fe24edeee00","name":"Aggregate","type":"n8n-nodes-base.aggregate","position":[620,-280],"parameters":{},"typeVersion":1},{"id":"0a4ca418-5e4e-40cb-9bd4-6337c94d32e5","name":"Set Object List","type":"n8n-nodes-base.set","position":[800,-280],"parameters":{},"typeVersion":3.4},{"id":"d5a31f3b-104c-47c1-a5d5-75aa057d1e60","name":"YouTube","type":"n8n-nodes-base.httpRequest","onError":"continueRegularOutput","position":[840,540],"parameters":{},"typeVersion":4.2},{"id":"783ba2f5-edf8-4af8-ab27-7908386b7293","name":"TikTok","type":"n8n-nodes-base.httpRequest","onError":"continueRegularOutput","position":[840,360],"parameters":{},"typeVersion":4.2},{"id":"cf02ca4f-b584-4719-ace6-2e9d20047139","name":"Instagram","type":"n8n-nodes-base.httpRequest","onError":"continueRegularOutput","position":[840,720],"parameters":{},"typeVersion":4.2},{"id":"3e87767c-cedf-41d9-ab0a-efa471ccd72c","name":"Delete First Row","type":"n8n-nodes-base.googleSheets","position":[1420,100],"parameters":{},"typeVersion":4.6},{"id":"9a2b6440-e6f9-4b9e-b93f-7b8e3e8cf3c5","name":"Append Object","type":"n8n-nodes-base.googleSheets","position":[1600,100],"parameters":{},"typeVersion":4.6},{"id":"9a58fb54-a489-4262-b679-1ebf4a4b21c6","name":"Object & Caption","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1220,-60],"parameters":{},"typeVersion":1.3},{"id":"0019015d-8307-4ec9-92dc-e263beeec0a7","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[180,-20],"parameters":{"content":""},"typeVersion":1},{"id":"47a2edc1-95bc-4718-93f9-b2ac0b4b205b","name":"30 Seconds","type":"n8n-nodes-base.wait","position":[1040,100],"webhookId":"5f6bbd1e-a155-48de-b737-a225c6fd7a84","parameters":{},"typeVersion":1.1},{"id":"541c823f-fee6-40f9-94c7-6512a8299cea","name":"Upload","type":"n8n-nodes-base.httpRequest","position":[440,540],"parameters":{},"typeVersion":4.2},{"id":"7cfe79b1-6c91-4872-abd9-36aa9a8dcc90","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1060,-60],"parameters":{},"typeVersion":1.2},{"id":"870fc358-243a-4b36-8477-c5f9c31ccf61","name":"When clicking ‘Execute workflow’","type":"n8n-nodes-base.manualTrigger","position":[240,-280],"parameters":{},"typeVersion":1},{"id":"e9cd4fdc-29f7-4c72-934c-c843e7c27c35","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[180,320],"parameters":{"content":""},"typeVersion":1},{"id":"39baefca-939c-4a93-b876-fd6a6dd9546f","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[180,-380],"parameters":{"content":""},"typeVersion":1}],"connections":{"Result":{"main":[[{"node":"Delete First Row","type":"main","index":0}]]},"Upload":{"main":[[{"node":"YouTube","type":"main","index":0},{"node":"Instagram","type":"main","index":0},{"node":"TikTok","type":"main","index":0}]]},"5 Minutes":{"main":[[{"node":"Get Result","type":"main","index":0}]]},"Aggregate":{"main":[[{"node":"Set Object List","type":"main","index":0}]]},"30 Seconds":{"main":[[{"node":"Get Result","type":"main","index":0}]]},"Get Result":{"main":[[{"node":"Result","type":"main","index":0}],[{"node":"30 Seconds","type":"main","index":0}]]},"Idea Agent":{"main":[[{"node":"Prompt Agent","type":"main","index":0}]]},"Prompt Agent":{"main":[[{"node":"Generate Video","type":"main","index":0}]]},"Append Object":{"main":[[]]},"Generate Video":{"main":[[{"node":"5 Minutes","type":"main","index":0}]]},"Set Object List":{"main":[[{"node":"Idea Agent","type":"main","index":0}]]},"Delete First Row":{"main":[[{"node":"Append Object","type":"main","index":0}]]},"Get Past Objects":{"main":[[{"node":"Aggregate","type":"main","index":0}]]},"Object & Caption":{"ai_outputParser":[[{"node":"Idea Agent","type":"ai_outputParser","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"Prompt Agent","type":"ai_languageModel","index":0},{"node":"Idea Agent","type":"ai_languageModel","index":0}]]},"When clicking ‘Execute workflow’":{"main":[[{"node":"Get Past Objects","type":"main","index":0}]]}}}


name: 🛠️ AWS Transcribe Tool MCP Server 💪 all operations
author_name: David Ashby
author_username: cfomodz
nodes_used: []
categories: []
created_at: 2025-06-25T21:30:06.802Z
updated_at: 2025-06-25T21:30:06.802Z
url: https://n8n.io/workflows/5330
scraped_at: 2025-07-06 21:16:30
description:
  🛠️ AWS Transcribe Tool MCP Server

  Complete MCP server exposing all AWS Transcribe Tool operations to AI agents. Zero configuration needed - all 4 operations pre-built.

  ⚡ Quick Setup

  Import this workflow into your n8n instance
  Activate the workflow to start your MCP server
  Copy the webhook URL from the MCP trigger node
  Connect AI agents using the MCP URL

  🔧 How it Works

  • MCP Trigger: Serves as your server endpoint for AI agent requests
  • Tool Nodes: Pre-configured for every AWS Transcribe Tool operation
  • AI Expressions: Automatically populate parameters via $fromAI() placeholders
  • Native Integration: Uses official n8n AWS Transcribe Tool tool with full error handling

  📋 Available Operations (4 total)

  Every possible AWS Transcribe Tool operation is included:

  🔧 Transcriptionjob (4 operations)

  • Create a transcription job
  • Delete a transcription job
  • Get a transcription job
  • Get many transcription jobs

  🤖 AI Integration

  Parameter Handling: AI agents automatically provide values for:
  • Resource IDs and identifiers
  • Search queries and filters
  • Content and data payloads
  • Configuration options

  Response Format: Native AWS Transcribe Tool API responses with full data structure

  Error Handling: Built-in n8n error management and retry logic

  💡 Usage Examples

  Connect this MCP server to any AI agent or workflow:

  • Claude Desktop: Add MCP server URL to configuration
  • Custom AI Apps: Use MCP URL as tool endpoint
  • Other n8n Workflows: Call MCP tools from any workflow
  • API Integration: Direct HTTP calls to MCP endpoints

  ✨ Benefits

  • Complete Coverage: Every AWS Transcribe Tool operation available
  • Zero Setup: No parameter mapping or configuration needed
  • AI-Ready: Built-in $fromAI() expressions for all parameters
  • Production Ready: Native n8n error handling and logging
  • Extensible: Easily modify or add custom logic

  &gt; 🆓 Free for community use! Ready to deploy in under 2 minutes.

workflow_json:
  {"id":"2LHnQy6dukuG0VBo","meta":null,"name":"AWS Transcribe Tool MCP Server","tags":[],"nodes":[{"id":"f825fad3-d1a6-4800-8ff5-b9e03dfe8483","name":"Workflow Overview 0","type":"n8n-nodes-base.stickyNote","position":[-1480,-200],"parameters":{"width":420,"height":800,"content":"## 🛠️ AWS Transcribe Tool MCP Server\n\n### 📋 Available Operations (4 total)\n\n**Transcriptionjob**: create, delete, get, get all\n\n### ⚙️ Setup Instructions\n\n1. **Import Workflow**: Load this workflow into your n8n instance\n\n1. **🔑 Add Credentials**: Configure AWS Transcribe Tool authentication in one tool node then open and close all others.\n2. **🚀 Activate**: Enable this workflow to start your MCP server\n3. **🔗 Get URL**: Copy webhook URL from MCP trigger (right side)\n4. **🤖 Connect**: Use MCP URL in your AI agent configurations\n\n### ✨ Ready-to-Use Features\n\n• Zero configuration - all 4 operations pre-built\n• AI agents automatically populate parameters via `$fromAI()` expressions\n• Every resource and operation combination available\n• Native n8n error handling and response formatting\n• Modify parameter defaults in any tool node as needed\n\n### 💬 Need Help?\nCheck the [n8n documentation](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/) or ping me on [discord](https://discord.me/cfomodz) for MCP integration guidance or customizations."},"typeVersion":1},{"id":"69490659-7d20-4ace-b5df-ade65719e960","name":"AWS Transcribe Tool MCP Server","type":"@n8n/n8n-nodes-langchain.mcpTrigger","position":[-420,-220],"webhookId":"16921a23-3086-4ad1-a921-1c9b1fd17c72","parameters":{"path":"aws-transcribe-tool-mcp"},"typeVersion":1},{"id":"457aa710-405a-4e74-a1af-1b2229c14d14","name":"Create a transcription job","type":"n8n-nodes-base.awsTranscribeTool","position":[-800,140],"parameters":{"options":{},"languageCode":"={{ $fromAI('Language_Code', ``, 'string') }}","mediaFileUri":"={{ $fromAI('Media_File_Uri', ``, 'string') }}","detectLanguage":"={{ $fromAI('Detect_Language', ``, 'boolean') }}","transcriptionJobName":"={{ $fromAI('Transcription_Job_Name', ``, 'string') }}"},"credentials":{"aws":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"42ace42c-ea55-489b-9842-0aeafcc30c7f","name":"Delete a transcription job","type":"n8n-nodes-base.awsTranscribeTool","position":[-580,140],"parameters":{"operation":"delete","transcriptionJobName":"={{ $fromAI('Transcription_Job_Name', ``, 'string') }}"},"credentials":{"aws":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"ed23b53c-50f0-41b7-87a9-347793f91c96","name":"Get a transcription job","type":"n8n-nodes-base.awsTranscribeTool","position":[-360,140],"parameters":{"simple":"={{ $fromAI('Simple', ``, 'boolean') }}","operation":"get","returnTranscript":"={{ $fromAI('Return_Transcript', ``, 'boolean') }}","transcriptionJobName":"={{ $fromAI('Transcription_Job_Name', ``, 'string') }}"},"credentials":{"aws":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"6d6dd15a-34a8-4066-9280-ffa3b3e393b2","name":"Get many transcription jobs","type":"n8n-nodes-base.awsTranscribeTool","position":[-140,140],"parameters":{"limit":"={{ $fromAI('Limit', ``, 'number') }}","filters":{},"operation":"getAll","returnAll":"={{ $fromAI('Return_All', ``, 'boolean') }}"},"credentials":{"aws":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"c3e5205b-60cd-45f2-9e34-41b5b2c20a9d","name":"Sticky Note 1","type":"n8n-nodes-base.stickyNote","position":[-1020,120],"parameters":{"color":4,"width":1080,"height":180,"content":"## Transcription Job"},"typeVersion":1}],"active":false,"shared":[{"role":"workflow:owner","project":{"id":"G5fce9xGuBAsWBXe","icon":null,"name":"David Ashby <david.ashby.lds@gmail.com>","type":"personal","createdAt":"2025-06-04T02:55:02.013Z","updatedAt":"2025-06-04T02:56:01.361Z","projectRelations":[{"role":"project:personalOwner","user":{"id":"715c1c00-cb48-4712-9a32-f1f4b6db2b30","role":"global:owner","email":"david.ashby.lds@gmail.com","disabled":false,"lastName":"Ashby","settings":{"npsSurvey":{"responded":true,"lastShownAt":1749357655581},"userActivated":true,"userActivatedAt":1749075994495,"easyAIWorkflowOnboarded":true,"firstSuccessfulWorkflowId":"3N3vVikZb3MckFYm"},"createdAt":"2025-06-04T02:55:01.745Z","firstName":"David","isPending":false,"updatedAt":"2025-06-08T04:40:58.399Z","mfaEnabled":false,"personalizationAnswers":{"version":"v4","personalization_survey_n8n_version":"1.95.3","personalization_survey_submitted_at":"2025-06-04T02:56:07.075Z"}},"userId":"715c1c00-cb48-4712-9a32-f1f4b6db2b30","createdAt":"2025-06-04T02:55:02.013Z","projectId":"G5fce9xGuBAsWBXe","updatedAt":"2025-06-04T02:55:02.013Z"}]},"createdAt":"2025-06-25T21:29:26.246Z","projectId":"G5fce9xGuBAsWBXe","updatedAt":"2025-06-25T21:29:26.246Z","workflowId":"2LHnQy6dukuG0VBo"}],"settings":{"timezone":"America/New_York"},"createdAt":"2025-06-25T21:29:26.244Z","updatedAt":"2025-06-25T21:29:53.000Z","versionId":"0f8cc823-b2a5-4bee-bbfc-7da9c35b32c2","isArchived":false,"staticData":null,"connections":{"Get a transcription job":{"ai_tool":[[{"node":"AWS Transcribe Tool MCP Server","type":"ai_tool","index":0}]]},"Create a transcription job":{"ai_tool":[[{"node":"AWS Transcribe Tool MCP Server","type":"ai_tool","index":0}]]},"Delete a transcription job":{"ai_tool":[[{"node":"AWS Transcribe Tool MCP Server","type":"ai_tool","index":0}]]},"Get many transcription jobs":{"ai_tool":[[{"node":"AWS Transcribe Tool MCP Server","type":"ai_tool","index":0}]]}},"triggerCount":0}


name: Post New Articles from Feeds to Slack Channel
author_name: Paul Taylor
author_username: ptylr
nodes_used: ["n8n-nodes-base.googleSheets","n8n-nodes-base.slack","n8n-nodes-base.code"]
categories: []
created_at: 2025-06-25T21:43:07.205Z
updated_at: 2025-06-25T21:43:07.205Z
url: https://n8n.io/workflows/5333
scraped_at: 2025-07-06 21:16:30
description:
  This workflow contains community nodes that are only compatible with the self-hosted version of n8n. 

  📄 Post New Articles from Feeds to Slack Channel

  🧠 What This Workflow Does

  This workflow automates the discovery and sharing of fresh articles from a curated list of RSS feeds. It performs the following steps:

  Reads a list of RSS feed URLs from a Google Sheet (Feeds tab).
  Fetches the latest articles from each feed.
  Checks for duplicates against previously published links stored in another sheet (Posted Articles tab).
  Filters out already shared articles.
  Posts the new articles to a designated Slack channel with formatted titles and links.
  Logs the newly shared articles back into the Google Sheet to prevent duplicates.

  🛠️ Prerequisites

  To use this workflow, you must have:

  ✅ Google Sheets OAuth2 credentials set up in n8n  
    (Used to access and update the RSS feed and post history sheets)

  ✅ Slack OAuth2 credentials  
    (Used to post messages to a specific Slack channel)

  ✅ A Google Spreadsheet with:
    Feeds tab – Columns: title, link  
    Posted Articles tab – Columns: title, link, pubDate

  🔧 Environment Variables or Custom Values

  You will need to set the following n8n variable or replace with direct input:

  {{$vars.Daily_Industry_News_Automation_Google_Sheet}}:  
    Reference to the Google Sheet Document ID (you can use a static ID if preferred)

  Also update:
  Slack channelId: Replace with your actual Slack channel ID if not dynamically referenced

  ⏰ Trigger & Scheduling

  Trigger type**: Cron node  
  Default schedule: Every day at **7:00 AM

  You can modify this in the “Trigger Workflow” node to suit your own schedule.

  🎯 Intended Use Case

  This workflow is ideal for:

  Marketing teams curating daily or weekly news digests
  Founders or industry professionals monitoring sector updates
  Automating internal Slack news updates
  Avoiding duplicate content when sourcing from multiple feeds

workflow_json:
  {"id":"G452NfcbwAErVDRu","meta":{"instanceId":"05cd306a73f97150c796adf49d28dcc97084b722b0b212b8c228ea8b71d87571","templateCredsSetupCompleted":true},"name":"Post New Articles from Feeds to Slack Channel","tags":[{"id":"HKMgMooCXhG1RvQ4","name":"RSS","createdAt":"2025-06-25T20:39:25.066Z","updatedAt":"2025-06-25T20:39:25.066Z"},{"id":"LrtcE3ptvaKdYplW","name":"Slack","createdAt":"2025-06-25T20:39:34.824Z","updatedAt":"2025-06-25T20:39:34.824Z"},{"id":"msIodL6e7sVaa5aZ","name":"Google Sheets","createdAt":"2025-06-25T20:39:20.673Z","updatedAt":"2025-06-25T20:39:20.673Z"},{"id":"mv8twTYqHvotykOz","name":"Filter","createdAt":"2025-06-25T20:39:31.349Z","updatedAt":"2025-06-25T20:39:31.349Z"}],"nodes":[{"id":"5555a9ce-26d1-45a3-9672-5f54b0cf28a3","name":"Filter Unpublished Articles","type":"n8n-nodes-base.code","notes":"Filter previously published articles from those received from the feeds.","position":[-460,-340],"parameters":{"jsCode":"const sheetLinks = $('Get Historically Posted Articles from Google Sheet').all().map(row => row.json.link);\nconst articles = $('Read Latest Articles from Feeds').all();\nreturn articles.filter(item => !sheetLinks.includes(item.json.link));              "},"notesInFlow":true,"typeVersion":2,"alwaysOutputData":true},{"id":"235db786-a37c-4f70-9fb8-a23903399056","name":"Trigger Workflow","type":"n8n-nodes-base.cron","notes":"cron-based Workflow trigger. Recommend once per day.","position":[-1340,-340],"parameters":{"triggerTimes":{"item":[{"hour":7}]}},"notesInFlow":true,"typeVersion":1},{"id":"195bea58-205a-4d30-bab0-ef137b157ab5","name":"Post New Articles to Slack Channel","type":"n8n-nodes-base.slack","notes":"Post new articles to Slack Channel.","position":[-20,-340],"webhookId":"637dea4d-c4e0-4369-93bb-f98268950d65","parameters":{"text":"=*{{$json[\"title\"]}}* | {{$json[\"link\"]}} _Published: {{$json[\"pubDate\"]}}_","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C09281Y80AH","cachedResultName":"daily-industry-news-automation"},"otherOptions":{},"authentication":"oAuth2"},"notesInFlow":true,"typeVersion":2.3},{"id":"e1ea7e51-5f0f-4089-a4c0-9308bc72c85a","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-2340,-420],"parameters":{"width":900,"height":1380,"content":"# 📄 Post New Articles from Feeds to Slack Channel\n\n## 🧠 What This Workflow Does\n\nThis workflow automates the discovery and sharing of fresh articles from a curated list of RSS feeds. It performs the following steps:\n\n1. **Reads a list of RSS feed URLs** from a Google Sheet (`Feeds` tab).\n2. **Fetches the latest articles** from each feed.\n3. **Checks for duplicates** against previously published links stored in another sheet (`Posted Articles` tab).\n4. **Filters out already shared articles**.\n5. **Posts the new articles** to a designated Slack channel with formatted titles and links.\n6. **Logs the newly shared articles** back into the Google Sheet to prevent duplicates.\n\n---\n\n## 🛠️ Prerequisites\n\nTo use this workflow, you must have:\n\n- ✅ **Google Sheets** OAuth2 credentials set up in n8n  \n  (Used to access and update the RSS feed and post history sheets)\n\n- ✅ **Slack** OAuth2 credentials  \n  (Used to post messages to a specific Slack channel)\n\n- ✅ **A Google Spreadsheet** with:\n  - `Feeds` tab – Columns: `title`, `link`  \n  - `Posted Articles` tab – Columns: `title`, `link`, `pubDate`\n\n---\n\n## 🔧 Environment Variables or Custom Values\n\nYou will need to set the following n8n variable or replace with direct input:\n\n- `{{$vars.Daily_Industry_News_Automation_Google_Sheet}}`:  \n  Reference to the Google Sheet Document ID (you can use a static ID if preferred)\n\nAlso update:\n- Slack `channelId`: Replace with your actual Slack channel ID if not dynamically referenced\n\n---\n\n## ⏰ Trigger & Scheduling\n\n- **Trigger type**: `Cron` node  \n- **Default schedule**: Every day at **7:00 AM**\n\nYou can modify this in the **“Trigger Workflow”** node to suit your own schedule.\n\n---\n\n## 🎯 Intended Use Case\n\nThis workflow is ideal for:\n\n- Marketing teams curating daily or weekly news digests\n- Founders or industry professionals monitoring sector updates\n- Automating internal Slack news updates\n- Avoiding duplicate content when sourcing from multiple feeds"},"typeVersion":1},{"id":"146f4c93-a72c-4356-99ab-bcbc7747e671","name":"Get Article Feeds","type":"n8n-nodes-base.googleSheets","notes":"Get a list of RSS feeds to poll from the Feeds Google Sheet (title, link).","position":[-1120,-340],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":1768028583,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HIldK5vDx2luvmYEstU2PQzSS68xBrpp7lJ-8rQb2No/edit#gid=1768028583","cachedResultName":"Feeds"},"documentId":{"__rl":true,"mode":"id","value":"={{$vars.Daily_Industry_News_Automation_Google_Sheet}}"}},"notesInFlow":true,"typeVersion":4.6,"alwaysOutputData":true},{"id":"3a2f3d00-333f-477f-8634-1b3c703d4061","name":"Read Latest Articles from Feeds","type":"n8n-nodes-base.rssFeedRead","notes":"Get articles from each feed in Google Sheet.","position":[-900,-340],"parameters":{"url":"={{ $json.link }}","options":{}},"notesInFlow":true,"typeVersion":1.2,"alwaysOutputData":true},{"id":"74fec81d-bd50-4cce-87d5-fa6808658581","name":"Get Historically Posted Articles from Google Sheet","type":"n8n-nodes-base.googleSheets","notes":"Get a list of articles previously posted from Posted Articles Google Sheet (title, link, pubDate).","position":[-680,-340],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HIldK5vDx2luvmYEstU2PQzSS68xBrpp7lJ-8rQb2No/edit#gid=0","cachedResultName":"Posted Articles"},"documentId":{"__rl":true,"mode":"id","value":"={{$vars.Daily_Industry_News_Automation_Google_Sheet}}"}},"executeOnce":true,"notesInFlow":true,"typeVersion":4.6,"alwaysOutputData":true},{"id":"f0c01201-06f4-4154-8010-f134e5506f27","name":"Append New Articles to Google Sheet","type":"n8n-nodes-base.googleSheets","notes":"Append the un-published articles to the Published Articles Google Sheet.","position":[-240,-340],"parameters":{"columns":{"value":{"link":"={{ $json.link }}","title":"={{ $json.title }}","pubDate":"={{ $json.pubDate }}"},"schema":[{"id":"title","type":"string","display":true,"required":false,"displayName":"title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"link","type":"string","display":true,"required":false,"displayName":"link","defaultMatch":false,"canBeUsedToMatch":true},{"id":"pubDate","type":"string","display":true,"required":false,"displayName":"pubDate","defaultMatch":false,"canBeUsedToMatch":true},{"id":"creator","type":"string","display":true,"removed":true,"required":false,"displayName":"creator","defaultMatch":false,"canBeUsedToMatch":true},{"id":"content:encoded","type":"string","display":true,"removed":true,"required":false,"displayName":"content:encoded","defaultMatch":false,"canBeUsedToMatch":true},{"id":"content:encodedSnippet","type":"string","display":true,"removed":true,"required":false,"displayName":"content:encodedSnippet","defaultMatch":false,"canBeUsedToMatch":true},{"id":"dc:creator","type":"string","display":true,"removed":true,"required":false,"displayName":"dc:creator","defaultMatch":false,"canBeUsedToMatch":true},{"id":"content","type":"string","display":true,"removed":true,"required":false,"displayName":"content","defaultMatch":false,"canBeUsedToMatch":true},{"id":"contentSnippet","type":"string","display":true,"removed":true,"required":false,"displayName":"contentSnippet","defaultMatch":false,"canBeUsedToMatch":true},{"id":"guid","type":"string","display":true,"removed":true,"required":false,"displayName":"guid","defaultMatch":false,"canBeUsedToMatch":true},{"id":"categories","type":"string","display":true,"removed":true,"required":false,"displayName":"categories","defaultMatch":false,"canBeUsedToMatch":true},{"id":"isoDate","type":"string","display":true,"removed":true,"required":false,"displayName":"isoDate","defaultMatch":false,"canBeUsedToMatch":true},{"id":"date","type":"string","display":true,"removed":true,"required":false,"displayName":"date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"author","type":"string","display":true,"removed":true,"required":false,"displayName":"author","defaultMatch":false,"canBeUsedToMatch":true},{"id":"dc:date","type":"string","display":true,"removed":true,"required":false,"displayName":"dc:date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"comments","type":"string","display":true,"removed":true,"required":false,"displayName":"comments","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HIldK5vDx2luvmYEstU2PQzSS68xBrpp7lJ-8rQb2No/edit#gid=0","cachedResultName":"Posted Articles"},"documentId":{"__rl":true,"mode":"id","value":"={{$vars.Daily_Industry_News_Automation_Google_Sheet}}"}},"executeOnce":false,"notesInFlow":true,"typeVersion":4.6,"alwaysOutputData":true}],"active":true,"settings":{"executionOrder":"v1"},"versionId":"2799c1bc-9306-4ff8-b6e9-8341fac3cfdb","connections":{"Trigger Workflow":{"main":[[{"node":"Get Article Feeds","type":"main","index":0}]]},"Get Article Feeds":{"main":[[{"node":"Read Latest Articles from Feeds","type":"main","index":0}]]},"Filter Unpublished Articles":{"main":[[{"node":"Append New Articles to Google Sheet","type":"main","index":0}]]},"Read Latest Articles from Feeds":{"main":[[{"node":"Get Historically Posted Articles from Google Sheet","type":"main","index":0}]]},"Append New Articles to Google Sheet":{"main":[[{"node":"Post New Articles to Slack Channel","type":"main","index":0}]]},"Get Historically Posted Articles from Google Sheet":{"main":[[{"node":"Filter Unpublished Articles","type":"main","index":0}]]}}}


name: 🛠️ ActiveCampaign Tool MCP Server 💪 all 48 operations
author_name: David Ashby
author_username: cfomodz
nodes_used: []
categories: []
created_at: 2025-06-25T21:47:34.856Z
updated_at: 2025-06-25T21:47:34.856Z
url: https://n8n.io/workflows/5336
scraped_at: 2025-07-06 21:16:30
description:
  🛠️ ActiveCampaign Tool MCP Server

  Complete MCP server exposing all ActiveCampaign Tool operations to AI agents. Zero configuration needed - all 48 operations pre-built.

  ⚡ Quick Setup

  Import this workflow into your n8n instance
  Activate the workflow to start your MCP server
  Copy the webhook URL from the MCP trigger node
  Connect AI agents using the MCP URL

  🔧 How it Works

  • MCP Trigger: Serves as your server endpoint for AI agent requests
  • Tool Nodes: Pre-configured for every ActiveCampaign Tool operation
  • AI Expressions: Automatically populate parameters via $fromAI() placeholders
  • Native Integration: Uses official n8n ActiveCampaign Tool tool with full error handling

  📋 Available Operations (48 total)

  Every possible ActiveCampaign Tool operation is included:

  👤 Account (5 operations)

  • Create an account
  • Delete an account
  • Get an account
  • Get many accounts
  • Update an account

  🔧 Accountcontact (3 operations)

  • Create an account contact
  • Delete an account contact
  • Update an account contact

  🔌 Connection (5 operations)

  • Create a connection
  • Delete a connection
  • Get a connection
  • Get many connections
  • Update a connection

  📇 Contact (5 operations)

  • Create a contact
  • Delete a contact
  • Get a contact
  • Get many contacts
  • Update a contact

  🔧 Contactlist (2 operations)

  • Add a contact to a list
  • Remove a contact from a list

  🔧 Contacttag (2 operations)

  • Add a contact tag
  • Remove a contact tag

  💰 Deal (7 operations)

  • Create a deal
  • Create a deal note
  • Delete a deal
  • Get a deal
  • Get many deals
  • Update a deal
  • Update a deal note

  🔧 Ecommercecustomer (5 operations)

  • Create an e-commerce customer
  • Delete an e-commerce customer
  • Get an e-commerce customer
  • Get many e-commerce customers
  • Update an e-commerce customer

  🔧 Ecommerceorder (5 operations)

  • Create an e-commerce order
  • Delete an e-commerce order
  • Get an e-commerce order
  • Get many e-commerce orders
  • Update an e-commerce order

  🔧 Ecommerceorderproducts (3 operations)

  • Get many ecommerce orders
  • Get an e-commerce order product by product ID
  • Get an e-commerce order product by order ID

  📝 List (1 operations)

  • Get many lists

  🏷️ Tag (5 operations)

  • Create a tag
  • Delete a tag
  • Get a tag
  • Get many tags
  • Update a tag

  🤖 AI Integration

  Parameter Handling: AI agents automatically provide values for:
  • Resource IDs and identifiers
  • Search queries and filters
  • Content and data payloads
  • Configuration options

  Response Format: Native ActiveCampaign Tool API responses with full data structure

  Error Handling: Built-in n8n error management and retry logic

  💡 Usage Examples

  Connect this MCP server to any AI agent or workflow:

  • Claude Desktop: Add MCP server URL to configuration
  • Custom AI Apps: Use MCP URL as tool endpoint
  • Other n8n Workflows: Call MCP tools from any workflow
  • API Integration: Direct HTTP calls to MCP endpoints

  ✨ Benefits

  • Complete Coverage: Every ActiveCampaign Tool operation available
  • Zero Setup: No parameter mapping or configuration needed
  • AI-Ready: Built-in $fromAI() expressions for all parameters
  • Production Ready: Native n8n error handling and logging
  • Extensible: Easily modify or add custom logic

  🆓 Free for community use! Ready to deploy in under 2 minutes.

workflow_json:
  {"id":"J4T5m7LSKiIh97DD","meta":null,"name":"ActiveCampaign Tool MCP Server","tags":[],"nodes":[{"id":"144d6c97-6939-490c-a926-48a2f8c45f68","name":"ActiveCampaign Tool MCP Server","type":"@n8n/n8n-nodes-langchain.mcpTrigger","position":[-420,-240],"webhookId":"2337d3b0-820b-4b05-948e-b23dc7e9f284","parameters":{"path":"activecampaign-tool-mcp"},"typeVersion":1},{"id":"4c878c1a-0006-440f-a3a0-aa0c8b87be0d","name":"Create an account","type":"n8n-nodes-base.activeCampaignTool","position":[-800,240],"parameters":{"name":"={{ $fromAI('Name', ``, 'string') }}","resource":"account","additionalFields":{}},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"3f107a6d-cab1-4728-a815-b12783f5835b","name":"Delete an account","type":"n8n-nodes-base.activeCampaignTool","position":[-580,240],"parameters":{"resource":"account","accountId":"={{ $fromAI('Account_Id', ``, 'number') }}","operation":"delete"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"3c286a10-3ad2-4e64-9a5e-d288832cf300","name":"Get an account","type":"n8n-nodes-base.activeCampaignTool","position":[-360,240],"parameters":{"resource":"account","accountId":"={{ $fromAI('Account_Id', ``, 'number') }}","operation":"get"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"335917bb-2bc1-4be3-a5b0-e667f39e6d02","name":"Get many accounts","type":"n8n-nodes-base.activeCampaignTool","position":[-140,240],"parameters":{"limit":"={{ $fromAI('Limit', ``, 'number') }}","simple":"={{ $fromAI('Simple', ``, 'boolean') }}","filters":{},"resource":"account","operation":"getAll","returnAll":"={{ $fromAI('Return_All', ``, 'boolean') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"72ab42b2-9313-4e97-9bb4-42b59dd0669b","name":"Update an account","type":"n8n-nodes-base.activeCampaignTool","position":[80,240],"parameters":{"resource":"account","accountId":"={{ $fromAI('Account_Id', ``, 'number') }}","operation":"update","updateFields":{}},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"c032afec-f5f9-4278-b73d-981cdcb93f79","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1000,220],"parameters":{"color":2,"width":1280,"content":"## Account"},"typeVersion":1},{"id":"397c1a26-4dd1-449d-a21b-67309d797125","name":"Create an account contact","type":"n8n-nodes-base.activeCampaignTool","position":[-800,480],"parameters":{"account":"={{ $fromAI('Account', ``, 'number') }}","contact":"={{ $fromAI('Contact', ``, 'number') }}","resource":"accountContact","additionalFields":{}},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"60184a00-bdb3-43a5-b1d1-89b397779899","name":"Delete an account contact","type":"n8n-nodes-base.activeCampaignTool","position":[-580,480],"parameters":{"resource":"accountContact","operation":"delete","accountContactId":"={{ $fromAI('Account_Contact_Id', ``, 'number') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"741002ab-27c2-4954-9508-423026e63d37","name":"Update an account contact","type":"n8n-nodes-base.activeCampaignTool","position":[-360,480],"parameters":{"resource":"accountContact","operation":"update","updateFields":{},"accountContactId":"={{ $fromAI('Account_Contact_Id', ``, 'number') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"38f22101-392b-4594-ab01-9b1c54d6d660","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1000,460],"parameters":{"color":3,"width":840,"content":"## Accountcontact"},"typeVersion":1},{"id":"f6081c73-44ce-4594-8c53-5f506ce3c6b5","name":"Create a connection","type":"n8n-nodes-base.activeCampaignTool","position":[-800,720],"parameters":{"name":"={{ $fromAI('Name', ``, 'string') }}","linkUrl":"={{ $fromAI('Link_Url', ``, 'string') }}","logoUrl":"={{ $fromAI('Logo_Url', ``, 'string') }}","service":"={{ $fromAI('Service', ``, 'string') }}","resource":"connection","externalid":"={{ $fromAI('Externalid', ``, 'string') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"5af9d35d-02cd-4f9d-8e2a-1ddb19219584","name":"Delete a connection","type":"n8n-nodes-base.activeCampaignTool","position":[-580,720],"parameters":{"resource":"connection","operation":"delete","connectionId":"={{ $fromAI('Connection_Id', ``, 'number') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"73cf710e-21ec-4638-a8b4-63746b51ecae","name":"Get a connection","type":"n8n-nodes-base.activeCampaignTool","position":[-360,720],"parameters":{"resource":"connection","operation":"get","connectionId":"={{ $fromAI('Connection_Id', ``, 'number') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"39645829-c9c2-4e16-8bf9-35d652b2b1df","name":"Get many connections","type":"n8n-nodes-base.activeCampaignTool","position":[-140,720],"parameters":{"limit":"={{ $fromAI('Limit', ``, 'number') }}","simple":"={{ $fromAI('Simple', ``, 'boolean') }}","resource":"connection","operation":"getAll","returnAll":"={{ $fromAI('Return_All', ``, 'boolean') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"8ebfcd8b-cedc-45fc-91b9-934ec99fafcb","name":"Update a connection","type":"n8n-nodes-base.activeCampaignTool","position":[80,720],"parameters":{"resource":"connection","operation":"update","connectionId":"={{ $fromAI('Connection_Id', ``, 'number') }}","updateFields":{}},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"44a3eb0f-d394-4bf4-ad58-65a1f44c7306","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1000,700],"parameters":{"color":4,"width":1280,"content":"## Connection"},"typeVersion":1},{"id":"28d3e4a0-b48b-4a22-bbff-188e3918d727","name":"Create a contact","type":"n8n-nodes-base.activeCampaignTool","position":[-800,960],"parameters":{"email":"={{ $fromAI('Email', ``, 'string') }}","updateIfExists":"={{ $fromAI('Update_If_Exists', ``, 'boolean') }}","additionalFields":{}},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"e27726eb-534a-441e-af46-55592227bde4","name":"Delete a contact","type":"n8n-nodes-base.activeCampaignTool","position":[-580,960],"parameters":{"contactId":"={{ $fromAI('Contact_Id', ``, 'number') }}","operation":"delete"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"1486ce14-6f41-4c2d-8f1e-cf306be3bbe5","name":"Get a contact","type":"n8n-nodes-base.activeCampaignTool","position":[-360,960],"parameters":{"contactId":"={{ $fromAI('Contact_Id', ``, 'number') }}","operation":"get"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"2844f123-fbc2-49a2-9b40-b16841afc688","name":"Get many contacts","type":"n8n-nodes-base.activeCampaignTool","position":[-140,960],"parameters":{"limit":"={{ $fromAI('Limit', ``, 'number') }}","simple":"={{ $fromAI('Simple', ``, 'boolean') }}","operation":"getAll","returnAll":"={{ $fromAI('Return_All', ``, 'boolean') }}","additionalFields":{}},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"515b2b77-d536-4166-8405-0afd3c98cb4b","name":"Update a contact","type":"n8n-nodes-base.activeCampaignTool","position":[80,960],"parameters":{"contactId":"={{ $fromAI('Contact_Id', ``, 'number') }}","operation":"update","updateFields":{}},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"0e229754-3ffc-4cbf-9b48-217a9ec6e97e","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1000,940],"parameters":{"color":5,"width":1280,"content":"## Contact"},"typeVersion":1},{"id":"f77fabae-0613-4bdf-900d-099a49a1b715","name":"Add a contact to a list","type":"n8n-nodes-base.activeCampaignTool","position":[-800,1200],"parameters":{"listId":"={{ $fromAI('List_Id', ``, 'number') }}","resource":"contactList","contactId":"={{ $fromAI('Contact_Id', ``, 'number') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"a0797c21-ab6f-4843-8e6c-3e873d72c06d","name":"Remove a contact from a list","type":"n8n-nodes-base.activeCampaignTool","position":[-580,1200],"parameters":{"listId":"={{ $fromAI('List_Id', ``, 'number') }}","resource":"contactList","contactId":"={{ $fromAI('Contact_Id', ``, 'number') }}","operation":"remove"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"5ec13d11-8bbf-4a42-a260-ab724f3ed9f7","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1000,1180],"parameters":{"color":6,"width":620,"content":"## Contactlist"},"typeVersion":1},{"id":"ddd890f0-f536-4f11-b1ac-e7b9d9d8a77e","name":"Add a contact tag","type":"n8n-nodes-base.activeCampaignTool","position":[-800,1440],"parameters":{"tagId":"={{ $fromAI('Tag_Id', ``, 'string') }}","resource":"contactTag","contactId":"={{ $fromAI('Contact_Id', ``, 'number') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"e27d3237-a24b-462e-a1cc-5e73cf8c2373","name":"Remove a contact tag","type":"n8n-nodes-base.activeCampaignTool","position":[-580,1440],"parameters":{"resource":"contactTag","operation":"remove","contactTagId":"={{ $fromAI('Contact_Tag_Id', ``, 'number') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"e3bceedc-8b59-47e5-b2dd-68947e9ccff9","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1000,1420],"parameters":{"color":7,"width":620,"content":"## Contacttag"},"typeVersion":1},{"id":"2131c413-c891-4d25-8520-96f9a291bd57","name":"Create a deal","type":"n8n-nodes-base.activeCampaignTool","position":[-800,1680],"parameters":{"group":"={{ $fromAI('Group', ``, 'string') }}","owner":{"value":"={{ $fromAI('Owner', ``, 'string') }}"},"stage":"={{ $fromAI('Stage', ``, 'string') }}","title":"={{ $fromAI('Title', ``, 'string') }}","value":"={{ $fromAI('Value', ``, 'number') }}","contact":"={{ $fromAI('Contact', ``, 'number') }}","currency":"={{ $fromAI('Currency', ``, 'string') }}","resource":"deal","additionalFields":{}},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"ed2dff66-008c-403e-ae09-ccbb0c081164","name":"Create a deal note","type":"n8n-nodes-base.activeCampaignTool","position":[-580,1680],"parameters":{"dealId":"={{ $fromAI('Deal_Id', ``, 'number') }}","dealNote":"={{ $fromAI('Deal_Note', ``, 'string') }}","resource":"deal","operation":"createNote"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"5ce3faa7-5771-4670-baac-b96f37546e58","name":"Delete a deal","type":"n8n-nodes-base.activeCampaignTool","position":[-360,1680],"parameters":{"dealId":"={{ $fromAI('Deal_Id', ``, 'number') }}","resource":"deal","operation":"delete"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"329bdf66-e83f-4ec2-a5d5-44093a735ea9","name":"Get a deal","type":"n8n-nodes-base.activeCampaignTool","position":[-140,1680],"parameters":{"dealId":"={{ $fromAI('Deal_Id', ``, 'number') }}","resource":"deal","operation":"get"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"5710218d-f0be-41a5-9e9e-39593a970c64","name":"Get many deals","type":"n8n-nodes-base.activeCampaignTool","position":[80,1680],"parameters":{"limit":"={{ $fromAI('Limit', ``, 'number') }}","simple":"={{ $fromAI('Simple', ``, 'boolean') }}","resource":"deal","operation":"getAll","returnAll":"={{ $fromAI('Return_All', ``, 'boolean') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"e10b66f4-1772-44f5-91b6-94b4b8e5d453","name":"Update a deal","type":"n8n-nodes-base.activeCampaignTool","position":[300,1680],"parameters":{"dealId":"={{ $fromAI('Deal_Id', ``, 'number') }}","resource":"deal","operation":"update","updateFields":{}},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"6cdd2396-29f6-42f8-babe-ff54c5735202","name":"Update a deal note","type":"n8n-nodes-base.activeCampaignTool","position":[520,1680],"parameters":{"dealId":"={{ $fromAI('Deal_Id', ``, 'number') }}","dealNote":"={{ $fromAI('Deal_Note', ``, 'string') }}","resource":"deal","operation":"updateNote","dealNoteId":"={{ $fromAI('Deal_Note_Id', ``, 'number') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"c1feb09a-bc5c-4b9e-b349-a51d53ad31b6","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1000,1660],"parameters":{"color":2,"width":1720,"content":"## Deal"},"typeVersion":1},{"id":"0ad51a78-5127-4f8b-b51d-447872e43f23","name":"Create an e-commerce customer","type":"n8n-nodes-base.activeCampaignTool","position":[-800,1920],"parameters":{"email":"={{ $fromAI('Email', ``, 'string') }}","resource":"ecommerceCustomer","externalid":"={{ $fromAI('Externalid', ``, 'string') }}","connectionid":"={{ $fromAI('Connectionid', ``, 'string') }}","additionalFields":{}},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"7f4f669a-94f5-4a2d-b173-d4cf9677faf5","name":"Delete an e-commerce customer","type":"n8n-nodes-base.activeCampaignTool","position":[-580,1920],"parameters":{"resource":"ecommerceCustomer","operation":"delete","ecommerceCustomerId":"={{ $fromAI('Ecommerce_Customer_Id', ``, 'number') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"80bc48dc-0d07-4c46-a90a-d27c8b0e87e7","name":"Get an e-commerce customer","type":"n8n-nodes-base.activeCampaignTool","position":[-360,1920],"parameters":{"resource":"ecommerceCustomer","operation":"get","ecommerceCustomerId":"={{ $fromAI('Ecommerce_Customer_Id', ``, 'number') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"7228face-2a16-4aa5-970a-bdab93f791f9","name":"Get many e-commerce customers","type":"n8n-nodes-base.activeCampaignTool","position":[-140,1920],"parameters":{"limit":"={{ $fromAI('Limit', ``, 'number') }}","simple":"={{ $fromAI('Simple', ``, 'boolean') }}","resource":"ecommerceCustomer","operation":"getAll","returnAll":"={{ $fromAI('Return_All', ``, 'boolean') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"6d2aca65-2bc2-41ba-bcfc-79ebd44481a9","name":"Update an e-commerce customer","type":"n8n-nodes-base.activeCampaignTool","position":[80,1920],"parameters":{"resource":"ecommerceCustomer","operation":"update","updateFields":{},"ecommerceCustomerId":"={{ $fromAI('Ecommerce_Customer_Id', ``, 'number') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"d8c35832-af99-4ae3-84d8-64a764950e12","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1000,1900],"parameters":{"color":3,"width":1280,"content":"## Ecommercecustomer"},"typeVersion":1},{"id":"0ae7f970-218e-4d78-9823-7b3efa387108","name":"Create an e-commerce order","type":"n8n-nodes-base.activeCampaignTool","position":[-800,2160],"parameters":{"email":"={{ $fromAI('Email', ``, 'string') }}","source":"={{ $fromAI('Source', ``, 'number') }}","currency":"={{ $fromAI('Currency', ``, 'string') }}","resource":"ecommerceOrder","customerid":"={{ $fromAI('Customerid', ``, 'number') }}","externalid":"={{ $fromAI('Externalid', ``, 'string') }}","totalPrice":"={{ $fromAI('Total_Price', ``, 'number') }}","connectionid":"={{ $fromAI('Connectionid', ``, 'number') }}","abandonedDate":"={{ $fromAI('Abandoned_Date', ``, 'string') }}","orderProducts":"={{ $fromAI('Order_Products', ``, 'json') }}","additionalFields":{},"externalcheckoutid":"={{ $fromAI('Externalcheckoutid', ``, 'string') }}","externalCreatedDate":"={{ $fromAI('External_Created_Date', ``, 'string') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"0cbd71b9-0242-4685-a06a-02e336baffb0","name":"Delete an e-commerce order","type":"n8n-nodes-base.activeCampaignTool","position":[-580,2160],"parameters":{"orderId":"={{ $fromAI('Order_Id', ``, 'number') }}","resource":"ecommerceOrder","operation":"delete"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"f0f4a02b-8b7f-4712-93d0-6b6bb3259629","name":"Get an e-commerce order","type":"n8n-nodes-base.activeCampaignTool","position":[-360,2160],"parameters":{"orderId":"={{ $fromAI('Order_Id', ``, 'number') }}","resource":"ecommerceOrder","operation":"get"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"22ba8087-4dfb-4992-bf45-c3a2b149a5d3","name":"Get many e-commerce orders","type":"n8n-nodes-base.activeCampaignTool","position":[-140,2160],"parameters":{"limit":"={{ $fromAI('Limit', ``, 'number') }}","simple":"={{ $fromAI('Simple', ``, 'boolean') }}","resource":"ecommerceOrder","operation":"getAll","returnAll":"={{ $fromAI('Return_All', ``, 'boolean') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"49ae4d11-92e2-4f1d-94d5-34d35d1bdc30","name":"Update an e-commerce order","type":"n8n-nodes-base.activeCampaignTool","position":[80,2160],"parameters":{"orderId":"={{ $fromAI('Order_Id', ``, 'number') }}","resource":"ecommerceOrder","operation":"update","updateFields":{}},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"c32a503a-e042-497b-88bc-87dc7df587ca","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1000,2140],"parameters":{"color":4,"width":1280,"content":"## Ecommerceorder"},"typeVersion":1},{"id":"313dfa94-3c16-425f-84d7-cbc82bf3a2ae","name":"Get many ecommerce orders","type":"n8n-nodes-base.activeCampaignTool","position":[-800,2400],"parameters":{"limit":"={{ $fromAI('Limit', ``, 'number') }}","simple":"={{ $fromAI('Simple', ``, 'boolean') }}","resource":"ecommerceOrderProducts","returnAll":"={{ $fromAI('Return_All', ``, 'boolean') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"3cb0b333-93c3-4497-a0aa-ec1a82b3c6f9","name":"Get an e-commerce order product by product ID","type":"n8n-nodes-base.activeCampaignTool","position":[-580,2400],"parameters":{"resource":"ecommerceOrderProducts","operation":"getByProductId","procuctId":"={{ $fromAI('Procuct_Id', ``, 'number') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"20937119-5566-49ad-bc22-b9e1f22a965e","name":"Get an e-commerce order product by order ID","type":"n8n-nodes-base.activeCampaignTool","position":[-360,2400],"parameters":{"orderId":"={{ $fromAI('Order_Id', ``, 'number') }}","resource":"ecommerceOrderProducts","operation":"getByOrderId"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"e4c6478d-553d-4aeb-82a3-c3b0649ac5e8","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1000,2380],"parameters":{"color":5,"width":840,"content":"## Ecommerceorderproducts"},"typeVersion":1},{"id":"c7401580-b426-4397-bcf4-4ac18a7e6c1b","name":"Get many lists","type":"n8n-nodes-base.activeCampaignTool","position":[-800,2640],"parameters":{"limit":"={{ $fromAI('Limit', ``, 'number') }}","simple":"={{ $fromAI('Simple', ``, 'boolean') }}","resource":"list","returnAll":"={{ $fromAI('Return_All', ``, 'boolean') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"234bddbe-f480-4d59-abac-74ad5dd52def","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1000,2620],"parameters":{"color":6,"width":400,"content":"## List"},"typeVersion":1},{"id":"edbbb5a7-3dbc-46cc-81f7-1165e35a7dbc","name":"Create a tag","type":"n8n-nodes-base.activeCampaignTool","position":[-800,2880],"parameters":{"name":"={{ $fromAI('Name', ``, 'string') }}","tagType":"={{ $fromAI('Tag_Type', ``, 'string') }}","resource":"tag","additionalFields":{}},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"dbdcb2ec-0e5f-499d-954d-6fb1a8397e07","name":"Delete a tag","type":"n8n-nodes-base.activeCampaignTool","position":[-580,2880],"parameters":{"tagId":"={{ $fromAI('Tag_Id', ``, 'number') }}","resource":"tag","operation":"delete"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"d94bc1e1-a3c0-4814-8c19-7a1df39249c6","name":"Get a tag","type":"n8n-nodes-base.activeCampaignTool","position":[-360,2880],"parameters":{"tagId":"={{ $fromAI('Tag_Id', ``, 'number') }}","resource":"tag","operation":"get"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"57ea33f8-2a4d-422e-8086-804e31dc2413","name":"Get many tags","type":"n8n-nodes-base.activeCampaignTool","position":[-140,2880],"parameters":{"limit":"={{ $fromAI('Limit', ``, 'number') }}","simple":"={{ $fromAI('Simple', ``, 'boolean') }}","resource":"tag","operation":"getAll","returnAll":"={{ $fromAI('Return_All', ``, 'boolean') }}"},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"81b28db5-1552-4aa4-affc-cc48ca770094","name":"Update a tag","type":"n8n-nodes-base.activeCampaignTool","position":[80,2880],"parameters":{"tagId":"={{ $fromAI('Tag_Id', ``, 'number') }}","resource":"tag","operation":"update","updateFields":{}},"credentials":{"activeCampaignApi":{"id":"SET_YOUR_CREDENTIAL_ID_HERE","name":"Credential Name"}},"typeVersion":1},{"id":"99387d9e-6f2b-4831-9c51-57fc9fd89973","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1000,2860],"parameters":{"color":7,"width":1280,"content":"## Tag"},"typeVersion":1}],"active":false,"shared":[{"role":"workflow:owner","project":{"id":"G5fce9xGuBAsWBXe","icon":null,"name":"David Ashby <david.ashby.lds@gmail.com>","type":"personal","createdAt":"2025-06-04T02:55:02.013Z","updatedAt":"2025-06-04T02:56:01.361Z","projectRelations":[{"role":"project:personalOwner","user":{"id":"715c1c00-cb48-4712-9a32-f1f4b6db2b30","role":"global:owner","email":"david.ashby.lds@gmail.com","disabled":false,"lastName":"Ashby","settings":{"npsSurvey":{"responded":true,"lastShownAt":1749357655581},"userActivated":true,"userActivatedAt":1749075994495,"easyAIWorkflowOnboarded":true,"firstSuccessfulWorkflowId":"3N3vVikZb3MckFYm"},"createdAt":"2025-06-04T02:55:01.745Z","firstName":"David","isPending":false,"updatedAt":"2025-06-08T04:40:58.399Z","mfaEnabled":false,"personalizationAnswers":{"version":"v4","personalization_survey_n8n_version":"1.95.3","personalization_survey_submitted_at":"2025-06-04T02:56:07.075Z"}},"userId":"715c1c00-cb48-4712-9a32-f1f4b6db2b30","createdAt":"2025-06-04T02:55:02.013Z","projectId":"G5fce9xGuBAsWBXe","updatedAt":"2025-06-04T02:55:02.013Z"}]},"createdAt":"2025-06-18T00:44:13.157Z","projectId":"G5fce9xGuBAsWBXe","updatedAt":"2025-06-18T00:44:13.157Z","workflowId":"J4T5m7LSKiIh97DD"}],"settings":{"timezone":"America/New_York"},"createdAt":"2025-06-18T00:44:13.153Z","updatedAt":"2025-06-19T22:36:07.000Z","versionId":"de176e1d-7914-4c5b-865d-55f473c5f563","isArchived":true,"staticData":null,"connections":{"Get a tag":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get a deal":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Create a tag":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Delete a tag":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Update a tag":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Create a deal":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Delete a deal":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get a contact":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get many tags":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Update a deal":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get an account":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get many deals":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get many lists":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Create a contact":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Delete a contact":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get a connection":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Update a contact":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Add a contact tag":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Create an account":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Delete an account":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get many accounts":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get many contacts":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Update an account":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Create a deal note":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Update a deal note":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Create a connection":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Delete a connection":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Update a connection":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get many connections":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Remove a contact tag":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Add a contact to a list":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get an e-commerce order":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Create an account contact":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Delete an account contact":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get many ecommerce orders":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Update an account contact":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Create an e-commerce order":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Delete an e-commerce order":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get an e-commerce customer":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get many e-commerce orders":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Update an e-commerce order":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Remove a contact from a list":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Create an e-commerce customer":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Delete an e-commerce customer":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get many e-commerce customers":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Update an e-commerce customer":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get an e-commerce order product by order ID":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]},"Get an e-commerce order product by product ID":{"ai_tool":[[{"node":"ActiveCampaign Tool MCP Server","type":"ai_tool","index":0}]]}},"triggerCount":0}


name: Generate AI Viral Videos with Seedance and Upload to TikTok, YouTube & Instagram
author_name: Dr. Firas
author_username: drfiras
categories: []
created_at: 2025-06-25T22:02:46.851Z
updated_at: 2025-06-25T22:02:46.851Z
url: https://n8n.io/workflows/5338
scraped_at: 2025-07-06 21:16:30
description:
  Generate AI videos with Seedance & Blotato, upload to TikTok, YouTube & Instagram

  Who is this for?

  This template is ideal for creators, content marketers, social media managers, and AI enthusiasts who want to automate the production of short-form, visually captivating videos for platforms like TikTok, YouTube Shorts, and Instagram Reels — all without manual editing or publishing.

  What problem is this workflow solving?

  Creating engaging videos requires:
  Generating creative ideas  
  Writing detailed scene prompts  
  Producing realistic video clips and sound effects  
  Editing and stitching the final video  
  Publishing across multiple platforms  

  This workflow automates the entire process, saving hours of manual work and ensuring consistent, AI-driven content output ready for social distribution.

  What this workflow does

  This end-to-end AI video automation workflow:

  Generates a creative idea using OpenAI and LangChain  
  Creates detailed video prompts with Seedance AI  
  Generates video clips via Wavespeed AI  
  Generates sound effects with Fal AI  
  Stitches the final video using Fal AI’s ffmpeg API  
  Logs metadata and video links to Google Sheets  
  Uploads the video to Blotato  
  Auto-publishes to TikTok, YouTube, Instagram, and other platforms

  Setup

  Add your OpenAI API key in the LLM nodes  
  Set up Seedance and Wavespeed AI credentials for video prompt and clip generation  
  Add your Fal AI API key for sound and stitching steps  
  Connect your Google Sheets account for tracking ideas and outputs  
  Set your Blotato API key and fill in the platform account IDs in the Assign Social Media IDs node  
  Adjust the Schedule Trigger to control when the automation runs  

  How to customize this workflow to your needs

  Change the AI prompts** to target your niche (e.g., ASMR, product videos, humor)  
  Add a Telegram or Slack step** for video preview before publishing  
  Tweak scene structure** or video duration to match your style  
  Disable platforms** you don’t want by turning off specific HTTP Request nodes  
  Edit the sound generation prompts** for different moods or effects  

  📄 Documentation: Notion Guide

  Need help customizing?
  Contact me for consulting and support : Linkedin / Youtube

nodes_used:
  ["n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.toolThink"]

workflow_json:
  {"id":"DbAetBYfinQ3x4Cu","meta":{"instanceId":"a2b23892dd6989fda7c1209b381f5850373a7d2b85609624d7c2b7a092671d44","templateCredsSetupCompleted":true},"name":"💥 Generate AI Videos with Seedance & Blotato and Upload to TikTok, YouTube & Instagram -vide","tags":[],"nodes":[{"id":"cd0df97c-8e71-4201-9086-c247491c3c48","name":"Sticky Note10","type":"n8n-nodes-base.stickyNote","position":[580,460],"parameters":{"color":2,"width":880,"height":240,"content":"## | Step 1: Generate Clips (Wavespeed AI)\n"},"typeVersion":1},{"id":"c42e1959-f856-4954-af25-f8eed14a1e5c","name":"Sticky Note13","type":"n8n-nodes-base.stickyNote","position":[1500,460],"parameters":{"color":2,"width":640,"height":240,"content":"## | Step 2: Generate Sounds (Fal AI)\n"},"typeVersion":1},{"id":"567d5588-ca94-43c7-b856-17239da45750","name":"Sticky Note14","type":"n8n-nodes-base.stickyNote","position":[580,-100],"parameters":{"color":7,"width":1560,"height":540,"content":"## | INPUT: Starting Idea Section"},"typeVersion":1},{"id":"9a1c7a82-0dc8-4eef-a815-ed76928530e7","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[580,740],"parameters":{"color":3,"width":1560,"height":260,"content":"## | Step 3: Stitch Video (Fal AI)"},"typeVersion":1},{"id":"380b91d1-20e7-4d0f-a685-dc5898b11a6c","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","disabled":true,"position":[580,1040],"parameters":{"color":4,"width":1560,"height":760,"content":"## | Step 4 — Publish Video to Social Media\n"},"typeVersion":1},{"id":"b3e014f3-849a-4532-b406-18f3cb6305d9","name":"Trigger: Start Daily Content Generation","type":"n8n-nodes-base.scheduleTrigger","position":[640,0],"parameters":{"rule":{"interval":[{}]}},"typeVersion":1.2},{"id":"aabf432b-b4d4-4e56-9710-52495f08d007","name":"AI Agent: Generate Creative Video Idea","type":"@n8n/n8n-nodes-langchain.agent","position":[960,0],"parameters":{"text":"Generate a creative concept involving:\n\n[[\nA solid, hard material or element being sliced cleanly with a sharp blade. Your response must follow this structure:\n\n\"(Color) (Material) shaped like a (random everyday object)\"\n\nFor inspiration, imagine examples like: obsidian shaped like a chess piece, quartz shaped like a coffee mug, sapphire shaped like a seashell, or titanium shaped like a leaf.\n\n]]\n\nReflect carefully before answering to ensure originality and visual appeal.\n\nUse the Think tool to review your output","options":{"systemMessage":"=**Role:**  \nYou are an AI designed to generate **one immersive, realistic idea** based on a user-provided topic. Your output must be formatted as a **single-line JSON array** and follow the rules below exactly.\n\n---\n\n### RULES\n\n1. **Number of ideas**  \n   - Return **only one idea**.\n\n2. **Topic**  \n   - The user will provide a keyword (e.g., “glass cutting ASMR,” “wood carving sounds,” “satisfying rock splits”).\n\n3. **Idea**  \n   - Maximum 13 words.  \n   - Describe a viral-worthy, original, or surreal moment related to the topic.\n\n4. **Caption**  \n   - Short, punchy, viral-friendly.  \n   - Include **one emoji**.  \n   - Exactly **12 hashtags** in this order:  \n     1. 4 topic-relevant hashtags  \n     2. 4 all-time most popular hashtags  \n     3. 4 currently trending hashtags (based on live research)  \n   - All in lowercase.\n\n5. **Environment**  \n   - Maximum 20 words.  \n   - Must match the action in the Idea exactly.  \n   - Specify location (studio table, natural terrain, lab bench…), visual details (dust particles, polished surface, subtle reflections…), and style (macro close-up, cinematic slow-motion, minimalist…).\n\n6. **Sound**  \n   - Maximum 15 words.  \n   - Describe the primary sound for the scene (to feed into an audio model).\n\n7. **Status**  \n   - Always set to `\"for production\"`.\n\n---\n\n### OUTPUT FORMAT (single-line JSON array)\n\n```json\n[\n  {\n    \"Caption\": \"Your short viral title with emoji #4_topic_hashtags #4_all_time_popular_hashtags #4_trending_hashtags\",\n    \"Idea\": \"Your idea under 13 words\",\n    \"Environment\": \"Your vivid setting under 20 words matching the action\",\n    \"Sound\": \"Your primary sound description under 15 words\",\n    \"Status\": \"for production\"\n  }\n]\n"},"promptType":"define","hasOutputParser":true},"typeVersion":1.9},{"id":"09e27c25-772b-41e5-8255-723d23398a64","name":"Tool: Inject Creative Perspective (Idea)","type":"@n8n/n8n-nodes-langchain.toolThink","position":[1080,280],"parameters":{},"typeVersion":1},{"id":"1f1985b1-d1eb-4c65-9d99-f96542273dc6","name":"LLM: Generate Raw Idea (GPT-4.1)","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[900,280],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1","cachedResultName":"gpt-4.1"},"options":{}},"credentials":{"openAiApi":{"id":"6h3DfVhNPw9I25nO","name":"OpenAi account"}},"typeVersion":1.2},{"id":"a2c57dca-ed2e-4712-a735-8da0c727470f","name":"Parse AI Output (Idea, Environment, Sound)","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1240,280],"parameters":{"jsonSchemaExample":"[\n  {\n    \"Caption\": \"Diver Removes Nets Off Whale 🐋 #whalerescue #marinelife #oceanrescue #seahelpers #love #nature #instagood #explore #viral #savenature #oceanguardians #cleanoceans\",\n    \"Idea\": \"Diver carefully cuts tangled net from distressed whale in open sea\",\n    \"Environment\": \"Open ocean, sunlight beams through water, diver and whale, cinematic realism\",\n    \"Sound\": \"Primary sound description under 15 words\",\n    \"Status\": \"for production\"\n  }\n]\n"},"typeVersion":1.2},{"id":"20db6d62-9db9-4942-a820-b520356f3209","name":"Save Idea & Metadata to Google Sheets","type":"n8n-nodes-base.googleSheets","position":[1420,0],"parameters":{"columns":{"value":{"id":"==ROW()-1","idea":"={{ $json.output[0].Idea }}","caption":"={{ $json.output[0].Caption }}","production":"={{ $json.output[0].Status }}","sound_prompt":"={{ $json.output[0].Sound }}","environment_prompt":"={{ $json.output[0].Environment }}"},"schema":[{"id":"id","type":"string","display":true,"removed":false,"required":false,"displayName":"id","defaultMatch":true,"canBeUsedToMatch":true},{"id":"idea","type":"string","display":true,"required":false,"displayName":"idea","defaultMatch":false,"canBeUsedToMatch":true},{"id":"caption","type":"string","display":true,"required":false,"displayName":"caption","defaultMatch":false,"canBeUsedToMatch":true},{"id":"production","type":"string","display":true,"required":false,"displayName":"production","defaultMatch":false,"canBeUsedToMatch":true},{"id":"environment_prompt","type":"string","display":true,"required":false,"displayName":"environment_prompt","defaultMatch":false,"canBeUsedToMatch":true},{"id":"sound_prompt","type":"string","display":true,"required":false,"displayName":"sound_prompt","defaultMatch":false,"canBeUsedToMatch":true},{"id":"final_output","type":"string","display":true,"required":false,"displayName":"final_output","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"credentials":{"googleSheetsOAuth2Api":{"id":"51us92xkOlrvArhV","name":"Google Sheets account"}},"typeVersion":4.5},{"id":"49139fc9-2030-4d10-a9a7-4fd3a3779005","name":"AI Agent: Generate Detailed Video Prompts","type":"@n8n/n8n-nodes-langchain.agent","position":[1760,0],"parameters":{"text":"=Give me 3 video prompts based on the previous idea\n\nUse the Think tool to review your output","options":{"systemMessage":"=Role: You are a prompt-generation AI specializing in cinematic, ASMR-style video prompts. Your task is to generate a multi-scene video sequence that vividly shows a sharp knife actively cutting through a specific object in a clean, high-detail setting.\n\nYour writing must follow this style:\n\nSharp, precise cinematic realism.\n\nMacro-level detail with tight focus on the blade interacting with the object.\n\nThe knife must always be in motion — slicing, splitting, or gliding through the material. Never idle or static.\n\nCamera terms are allowed (e.g. macro view, tight angle, over-the-blade shot).\n\nEach scene must contain all of the following, expressed through detailed visual language:\n\n✅ The main object or subject (from the Idea)\n\n✅ The cutting environment or surface (from the Environment)\n\n✅ The texture, structure, and behavior of the material as it’s being cut\n\n✅ A visible, sharp blade actively cutting\n\nDescriptions should show:\n\nThe physical makeup of the material — is it translucent, brittle, dense, reflective, granular, fibrous, layered, or fluid-filled?\n\nHow the material responds to the blade — resistance, cracking, tearing, smooth separation, tension, vibration.\n\nThe interaction between the blade and the surface — light reflection, buildup of particles, contact points, residue or dust.\n\nAny ASMR-relevant sensory cues like particle release, shimmer, or subtle movement, but always shown visually — not narrated.\n\nTone:\n\nClean, clinical, visual.\n\nNo poetic metaphors, emotion, or storytelling.\n\nAvoid fantasy or surreal imagery.\n\nAll description must feel physically grounded and logically accurate.\n\nLength:\n\nEach scene must be between 1,000 and 2,000 characters.\n\nNo shallow or repetitive scenes — each must be immersive, descriptive, and specific.\n\nEach scene should explore a distinct phase of the cutting process, a different camera perspective, or a new behavior of the material under the blade.\n\nInputs:\n\nIdea: \"{{ $json.idea }}\"\nEnvironment: \"{{ $json.environment_prompt }}\"\nSound: \"{{ $json.sound_prompt }}\"\n\nFormat:\n\nIdea: \"...\"\nEnvironment: \"...\"\nSound: \"...\"\n\nScene 1: \"...\"\nScene 2: \"...\"\nScene 3: \"...\"\nScene 4: \"...\"\nScene 5: \"...\"\nScene 6: \"...\"\nScene 7: \"...\"\nScene 8: \"...\"\nScene 9: \"...\"\nScene 10: \"...\"\nScene 11: \"...\"\nScene 12: \"...\"\nScene 13: \"...\"\n\n"},"promptType":"define","hasOutputParser":true},"typeVersion":1.9},{"id":"4c34c0b0-5c13-4d37-8b51-a209e598513a","name":"LLM: Draft Video Prompt Details (GPT-4.1)","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1660,280],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1","cachedResultName":"gpt-4.1"},"options":{}},"credentials":{"openAiApi":{"id":"6h3DfVhNPw9I25nO","name":"OpenAi account"}},"typeVersion":1.2},{"id":"5a7828fd-629c-45d4-9ff2-4b57be2eca33","name":"Tool: Refine and Validate Prompts1","type":"@n8n/n8n-nodes-langchain.toolThink","position":[1840,280],"parameters":{},"typeVersion":1},{"id":"bddb974b-e541-4f02-8595-45f76820b38e","name":"Parse Structured Video Prompt Output","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[2000,280],"parameters":{"jsonSchemaExample":"{\n  \"Idea\": \"An obsidian rock being sliced with a shimmering knife\",\n  \"Environment\": \"Clean studio table, subtle light reflections\",\n  \"Sound\": \"Crisp slicing, deep grinding, and delicate crumbling\",\n  \"Scene 1\": \"Extreme macro shot: a razor-sharp, polished knife blade presses into the dark, granular surface of an obsidian rock, just beginning to indent.\",\n  \"Scene 2\": \"Close-up: fine, iridescent dust particles erupt from the point of contact as the blade cuts deeper into the obsidian, catching the studio light.\",\n  \"Scene 3\": \"Mid-shot: the knife, held perfectly steady, has formed a shallow, clean groove across the obsidian's shimmering surface, revealing a new, smooth texture.\"\n}"},"typeVersion":1.2},{"id":"443d3b99-1e6c-423c-b8ca-1c5a4c3ba180","name":"Extract Individual Scene Descriptions","type":"n8n-nodes-base.code","position":[680,540],"parameters":{"jsCode":"function findSceneEntries(obj) {\n  const scenes = [];\n\n  for (const [key, value] of Object.entries(obj)) {\n    if (key.toLowerCase().startsWith(\"scene\") && typeof value === \"string\") {\n      scenes.push(value);\n    } else if (typeof value === \"object\" && value !== null) {\n      scenes.push(...findSceneEntries(value));\n    }\n  }\n\n  return scenes;\n}\n\nlet output = [];\n\ntry {\n  const inputData = items[0].json;\n  const scenes = findSceneEntries(inputData);\n\n  if (scenes.length === 0) {\n    throw new Error(\"No scene keys found at any level.\");\n  }\n\n  output = scenes.map(scene => ({ description: scene }));\n} catch (e) {\n  throw new Error(\"Could not extract scenes properly. Details: \" + e.message);\n}\n\nreturn output;\n"},"typeVersion":2},{"id":"78fc7648-9741-48c9-8127-2bdab7070ba7","name":"Generate Video Clips (Wavespeed AI)","type":"n8n-nodes-base.httpRequest","position":[880,540],"parameters":{"url":"https://api.wavespeed.ai/api/v3/bytedance/seedance-v1-pro-t2v-480p","body":"={\n  \"aspect_ratio\": \"9:16\",\n  \"duration\": 10,\n  \"prompt\": \"VIDEO THEME: {{ $('Prompts AI Agent').item.json.output.Idea }} | WHAT HAPPENS IN THE VIDEO: {{ $json.description }} | WHERE THE VIDEO IS SHOT: {{ $('Prompts AI Agent').item.json.output.Environment }}\"\n}\n","method":"POST","options":{"batching":{"batch":{"batchSize":1,"batchInterval":3000}}},"sendBody":true,"contentType":"raw","authentication":"genericCredentialType","rawContentType":"application/json","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"QhpKhFJMiQAReugp","name":"Header Auth account 4"}},"typeVersion":4.2},{"id":"62eb02cb-cf85-4cbe-8688-8fd587e9c19a","name":"Wait for Clip Generation (Wavespeed AI)","type":"n8n-nodes-base.wait","position":[1080,540],"webhookId":"60604cd4-5d90-48dc-93f4-1335e5f03fdd","parameters":{"amount":240},"typeVersion":1.1},{"id":"879f74ba-0e59-43a1-b949-c23bfbcceef0","name":"Retrieve Video Clips","type":"n8n-nodes-base.httpRequest","position":[1280,540],"parameters":{"url":"=https://api.wavespeed.ai/api/v3/predictions/{{ $json.data.id }}/result","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"QhpKhFJMiQAReugp","name":"Header Auth account 4"}},"typeVersion":4.2},{"id":"1bc37dc5-fd16-4dc0-a153-11d19d8d4068","name":"Generate ASMR Sound (Fal AI)","type":"n8n-nodes-base.httpRequest","position":[1560,540],"parameters":{"url":"https://queue.fal.run/fal-ai/mmaudio-v2 ","body":"= {\n        \"prompt\": \"ASMR Soothing sound effects. {{ $('AI Agent: Generate Detailed Video Prompts').item.json.output.Sound }}\",\n        \"duration\": 10,\n        \"video_url\": \"{{ $json.data.outputs[0] }}\"\n  }\n","method":"POST","options":{"batching":{"batch":{"batchSize":1,"batchInterval":2000}}},"sendBody":true,"contentType":"raw","authentication":"genericCredentialType","rawContentType":"application/json","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"QhpKhFJMiQAReugp","name":"Header Auth account 4"}},"typeVersion":4.2},{"id":"f8f1eae5-a74b-49be-81fd-2d13e75441c7","name":"Wait for Sound Generation (Fal AI)","type":"n8n-nodes-base.wait","position":[1760,540],"webhookId":"abac7859-a9f6-46f3-95c2-df43ec32807d","parameters":{"amount":60},"typeVersion":1.1},{"id":"4670c2d4-0d66-42e9-891f-1f80508433bb","name":"Retrieve Final Sound Output","type":"n8n-nodes-base.httpRequest","position":[1960,540],"parameters":{"url":"=https://queue.fal.run/fal-ai/mmaudio-v2/requests/{{ $json.request_id }}","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"QhpKhFJMiQAReugp","name":"Header Auth account 4"}},"typeVersion":4.2},{"id":"37f9678e-e5cb-444c-ba88-c73cc04f4f39","name":"List Clip URLs for Stitching","type":"n8n-nodes-base.code","position":[680,800],"parameters":{"jsCode":"return [\n  {\n    video_urls: items.map(item => item.json.video.url)\n  }\n];"},"typeVersion":2},{"id":"d472b385-a76f-459a-8cc9-fcbd50db4977","name":"Merge Clips into Final Video (Fal AI)","type":"n8n-nodes-base.httpRequest","position":[880,800],"parameters":{"url":"https://queue.fal.run/fal-ai/ffmpeg-api/compose","body":"={\n  \"tracks\": [\n    {\n      \"id\": \"1\",\n      \"type\": \"video\",\n      \"keyframes\": [\n        { \"url\": \"{{ $json.video_urls[0] }}\", \"timestamp\": 0, \"duration\": 10 },\n        { \"url\": \"{{ $json.video_urls[1] }}\", \"timestamp\": 10, \"duration\": 10 },\n        { \"url\": \"{{ $json.video_urls[2] }}\", \"timestamp\": 20, \"duration\": 10 }\n      ]\n    }\n  ]\n}","method":"POST","options":{"batching":{"batch":{"batchSize":1,"batchInterval":2000}}},"sendBody":true,"contentType":"raw","authentication":"genericCredentialType","rawContentType":"application/json","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"QhpKhFJMiQAReugp","name":"Header Auth account 4"}},"typeVersion":4.2},{"id":"277e1e53-68b8-4a75-b525-aebc0213dc1e","name":"Wait for Video Rendering (Fal AI)","type":"n8n-nodes-base.wait","position":[1080,800],"webhookId":"389fcfd1-9337-4334-a54b-4114f36e30bc","parameters":{"amount":60},"typeVersion":1.1},{"id":"f32f4704-8af4-4df4-b3bf-8db839d4e216","name":"Retrieve Final Merged Video","type":"n8n-nodes-base.httpRequest","position":[1280,800],"parameters":{"url":"=https://queue.fal.run/fal-ai/ffmpeg-api/requests/{{ $json.request_id }}","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"QhpKhFJMiQAReugp","name":"Header Auth account 4"}},"typeVersion":4.2},{"id":"f8b31fab-43f2-4cb1-8d7b-6d9fae331e50","name":"URL Final Video","type":"n8n-nodes-base.googleSheets","position":[1960,800],"parameters":{"columns":{"value":{"idea":"{{ $('Save Idea & Metadata to Google Sheets').first().json.idea }}","production":"done","final_output":"={{ $json.video_url }}"},"schema":[{"id":"id","type":"string","display":true,"removed":false,"required":false,"displayName":"id","defaultMatch":true,"canBeUsedToMatch":true},{"id":"idea","type":"string","display":true,"removed":false,"required":false,"displayName":"idea","defaultMatch":false,"canBeUsedToMatch":true},{"id":"caption","type":"string","display":true,"required":false,"displayName":"caption","defaultMatch":false,"canBeUsedToMatch":true},{"id":"production","type":"string","display":true,"required":false,"displayName":"production","defaultMatch":false,"canBeUsedToMatch":true},{"id":"environment_prompt","type":"string","display":true,"required":false,"displayName":"environment_prompt","defaultMatch":false,"canBeUsedToMatch":true},{"id":"final_output","type":"string","display":true,"required":false,"displayName":"final_output","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["idea"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"credentials":{"googleSheetsOAuth2Api":{"id":"51us92xkOlrvArhV","name":"Google Sheets account"}},"typeVersion":4.5},{"id":"89155cba-d20f-4d2a-9ea0-1193ef394016","name":"Assign Social Media IDs","type":"n8n-nodes-base.set","position":[860,1380],"parameters":{"mode":"raw","options":{},"jsonOutput":"{\n  \"instagram_id\": \"1111\",\n  \"youtube_id\": \"1111\",\n  \"threads_id\": \"1111\",\n  \"tiktok_id\": \"1111\",\n  \"facebook_id\": \"1111\",\n  \"facebook_page_id\": \"1111\",\n  \"twitter_id\": \"1111\",\n  \"linkedin_id\": \"1111\",\n  \"pinterest_id\": \"1111\",\n  \"pinterest_board_id\": \"1111\",\n  \"bluesky_id\": \"1111\"\n}\n"},"typeVersion":3.4},{"id":"503d2982-3d10-4bb1-a560-2539c00c8b4a","name":"Get my video","type":"n8n-nodes-base.googleSheets","position":[660,1380],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"credentials":{"googleSheetsOAuth2Api":{"id":"51us92xkOlrvArhV","name":"Google Sheets account"}},"typeVersion":4.5},{"id":"85f2509a-9ef3-4e9b-a555-02eba572d443","name":"Upload Video to Blotato","type":"n8n-nodes-base.httpRequest","position":[1100,1380],"parameters":{"url":"https://backend.blotato.com/v2/media","method":"POST","options":{},"sendBody":true,"sendHeaders":true,"bodyParameters":{"parameters":[{"name":"url","value":"={{ $('Get my video').item.json['final_output'] }}"}]},"headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"9d229118-b3b8-46fe-9e8d-19f86e9f00a0","name":"INSTAGRAM","type":"n8n-nodes-base.httpRequest","position":[1520,1120],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.instagram_id }}\",\n    \"target\": {\n      \"targetType\": \"instagram\"\n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"instagram\",\n      \"mediaUrls\": [\n        \"{{ $json.url }}\"\n      ]\n    }\n  }\n}\n\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"02da82bf-7931-48cb-af1f-3e9d8c1d584b","name":"YOUTUBE","type":"n8n-nodes-base.httpRequest","position":[1740,1120],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.youtube_id }}\",\n    \"target\": {\n      \"targetType\": \"youtube\",\n      \"title\": \"{{ $('Get my video').item.json.Titre }}\",\n      \"privacyStatus\": \"unlisted\",\n      \"shouldNotifySubscribers\": \"false\"\n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"youtube\",\n      \"mediaUrls\": [\n        \"{{ $json.url }}\"\n      ]\n    }\n  }\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"75718ac7-7c63-4be8-a90d-1644515444ca","name":"TIKTOK","type":"n8n-nodes-base.httpRequest","position":[1940,1120],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.tiktok_id }}\",\n    \"target\": {\n      \"targetType\": \"tiktok\",\n      \"isYourBrand\": \"false\", \n      \"disabledDuet\": \"false\",\n      \"privacyLevel\": \"PUBLIC_TO_EVERYONE\",\n      \"isAiGenerated\": \"true\",\n      \"disabledStitch\": \"false\",\n      \"disabledComments\": \"false\",\n      \"isBrandedContent\": \"false\"\n      \n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"tiktok\",\n      \"mediaUrls\": [\n        \"{{ $json.url }}\"\n      ]\n    }\n  }\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"=YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"32654f5a-e2dc-4d36-983d-d4c4d0e592a9","name":"FACEBOOK","type":"n8n-nodes-base.httpRequest","position":[1520,1360],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.facebook_id }}\",\n    \"target\": {\n      \"targetType\": \"facebook\",\n      \"pageId\": \"{{ $('Assign Social Media IDs').item.json.facebook_page_id }}\"\n\n      \n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"facebook\",\n      \"mediaUrls\": [\n        \"{{ $json.url }}\"\n      ]\n    }\n  }\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"=YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"e0955970-2ccf-4f8f-91d5-6e795ad10c1a","name":"THREADS","type":"n8n-nodes-base.httpRequest","position":[1740,1360],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.threads_id }}\",\n    \"target\": {\n      \"targetType\": \"threads\"\n      \n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"threads\",\n      \"mediaUrls\": [\n        \"{{ $json.url }}\"\n      ]\n    }\n  }\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"92b8a14a-c13b-45da-8e5a-fb6390c4e819","name":"LINKEDIN","type":"n8n-nodes-base.httpRequest","position":[1520,1600],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.linkedin_id }}\",\n    \"target\": {\n      \"targetType\": \"linkedin\"\n      \n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"linkedin\",\n      \"mediaUrls\": [\n        \"{{ $json.url }}\"\n      ]\n    }\n  }\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"682edc00-f41c-442e-80a6-ff707e0ecd8b","name":"BLUESKY","type":"n8n-nodes-base.httpRequest","position":[1740,1600],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"= {\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.bluesky_id }}\",\n    \"target\": {\n      \"targetType\": \"bluesky\"\n      \n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"bluesky\",\n      \"mediaUrls\": [\n        \"https://pbs.twimg.com/media/GE8MgIiWEAAfsK3.jpg\"\n      ]\n    }\n  }\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"ad4ecbfa-8db8-48f5-b86a-2524fa7dd52d","name":"PINTEREST","type":"n8n-nodes-base.httpRequest","position":[1940,1600],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.pinterest_id }}\",\n    \"target\": {\n      \"targetType\": \"pinterest\",\n      \"boardId\": \"{{ $('Assign Social Media IDs').item.json.pinterest_board_id }}\"      \n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"pinterest\",\n      \"mediaUrls\": [\n        \"https://pbs.twimg.com/media/GE8MgIiWEAAfsK3.jpg\"\n      ]\n    }\n  }\n}\n\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"174013c3-f8bd-4b3e-8171-d8699a95de95","name":"Update Production","type":"n8n-nodes-base.googleSheets","position":[1100,1600],"parameters":{"columns":{"value":{"STATUS":"Publish","row_number":"={{ $('Get my video').item.json.row_number }}"},"schema":[{"id":"PROMPT","type":"string","display":true,"required":false,"displayName":"PROMPT","defaultMatch":false,"canBeUsedToMatch":true},{"id":"DESCRIPTION","type":"string","display":true,"required":false,"displayName":"DESCRIPTION","defaultMatch":false,"canBeUsedToMatch":true},{"id":"URL VIDEO","type":"string","display":true,"required":false,"displayName":"URL VIDEO","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Titre","type":"string","display":true,"required":false,"displayName":"Titre","defaultMatch":false,"canBeUsedToMatch":true},{"id":"STATUS","type":"string","display":true,"required":false,"displayName":"STATUS","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":false,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["row_number"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"credentials":{"googleSheetsOAuth2Api":{"id":"51us92xkOlrvArhV","name":"Google Sheets account"}},"typeVersion":4.5},{"id":"d9c1859f-99c3-4cc7-8b65-ebeddba88489","name":"TWITTER","type":"n8n-nodes-base.httpRequest","position":[1940,1360],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.twitter_id }}\",\n    \"target\": {\n      \"targetType\": \"twitter\"\n      \n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"twitter\",\n      \"mediaUrls\": [\n        \"{{ $json.url }}\"\n      ]\n    }\n  }\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2}],"active":false,"settings":{"executionOrder":"v1"},"versionId":"4206156d-487f-4193-b199-3623ead784c7","connections":{"Get my video":{"main":[[{"node":"Assign Social Media IDs","type":"main","index":0}]]},"URL Final Video":{"main":[[{"node":"Get my video","type":"main","index":0}]]},"Retrieve Video Clips":{"main":[[{"node":"Generate ASMR Sound (Fal AI)","type":"main","index":0}]]},"Assign Social Media IDs":{"main":[[{"node":"Upload Video to Blotato","type":"main","index":0}]]},"Upload Video to Blotato":{"main":[[{"node":"INSTAGRAM","type":"main","index":0},{"node":"YOUTUBE","type":"main","index":0},{"node":"TIKTOK","type":"main","index":0},{"node":"FACEBOOK","type":"main","index":0},{"node":"THREADS","type":"main","index":0},{"node":"TWITTER","type":"main","index":0},{"node":"LINKEDIN","type":"main","index":0},{"node":"BLUESKY","type":"main","index":0},{"node":"PINTEREST","type":"main","index":0},{"node":"Update Production","type":"main","index":0}]]},"Retrieve Final Merged Video":{"main":[[{"node":"URL Final Video","type":"main","index":0}]]},"Retrieve Final Sound Output":{"main":[[{"node":"List Clip URLs for Stitching","type":"main","index":0}]]},"Generate ASMR Sound (Fal AI)":{"main":[[{"node":"Wait for Sound Generation (Fal AI)","type":"main","index":0}]]},"List Clip URLs for Stitching":{"main":[[{"node":"Merge Clips into Final Video (Fal AI)","type":"main","index":0}]]},"LLM: Generate Raw Idea (GPT-4.1)":{"ai_languageModel":[[{"node":"AI Agent: Generate Creative Video Idea","type":"ai_languageModel","index":0}]]},"Wait for Video Rendering (Fal AI)":{"main":[[{"node":"Retrieve Final Merged Video","type":"main","index":0}]]},"Tool: Refine and Validate Prompts1":{"ai_tool":[[{"node":"AI Agent: Generate Detailed Video Prompts","type":"ai_tool","index":0}]]},"Wait for Sound Generation (Fal AI)":{"main":[[{"node":"Retrieve Final Sound Output","type":"main","index":0}]]},"Generate Video Clips (Wavespeed AI)":{"main":[[{"node":"Wait for Clip Generation (Wavespeed AI)","type":"main","index":0}]]},"Parse Structured Video Prompt Output":{"ai_outputParser":[[{"node":"AI Agent: Generate Detailed Video Prompts","type":"ai_outputParser","index":0}]]},"Extract Individual Scene Descriptions":{"main":[[{"node":"Generate Video Clips (Wavespeed AI)","type":"main","index":0}]]},"Merge Clips into Final Video (Fal AI)":{"main":[[{"node":"Wait for Video Rendering (Fal AI)","type":"main","index":0}]]},"Save Idea & Metadata to Google Sheets":{"main":[[{"node":"AI Agent: Generate Detailed Video Prompts","type":"main","index":0}]]},"AI Agent: Generate Creative Video Idea":{"main":[[{"node":"Save Idea & Metadata to Google Sheets","type":"main","index":0}]]},"Trigger: Start Daily Content Generation":{"main":[[{"node":"AI Agent: Generate Creative Video Idea","type":"main","index":0}]]},"Wait for Clip Generation (Wavespeed AI)":{"main":[[{"node":"Retrieve Video Clips","type":"main","index":0}]]},"Tool: Inject Creative Perspective (Idea)":{"ai_tool":[[{"node":"AI Agent: Generate Creative Video Idea","type":"ai_tool","index":0}]]},"AI Agent: Generate Detailed Video Prompts":{"main":[[{"node":"Extract Individual Scene Descriptions","type":"main","index":0}]]},"LLM: Draft Video Prompt Details (GPT-4.1)":{"ai_languageModel":[[{"node":"AI Agent: Generate Detailed Video Prompts","type":"ai_languageModel","index":0}]]},"Parse AI Output (Idea, Environment, Sound)":{"ai_outputParser":[[{"node":"AI Agent: Generate Creative Video Idea","type":"ai_outputParser","index":0}]]}}}


