This workflow corresponds to n8n.io template #7610 — we link there as the canonical source.
This workflow follows the Agent → Chainllm recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "Xbp4biTknbF4qzQn",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "PDF Document Assistant 2.0",
"tags": [],
"nodes": [
{
"id": "cacbb1dc-cb5b-4d1f-b9ea-ce113a6e73f4",
"name": "Extract from File",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-380,
340
],
"parameters": {
"options": {},
"operation": "pdf",
"binaryPropertyName": "=data"
},
"typeVersion": 1
},
{
"id": "5ac09271-d72b-43c4-95f1-101cf54d2397",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-660,
180
],
"parameters": {
"path": "upload-pqx92oa",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "d93476b3-aafd-450e-8a75-06514af95530",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1000,
340
],
"parameters": {
"text": "=You are an advanced AI document review assistant embedded in an automated workflow. A user has submitted a PDF for structured review. Your role is to help the user fully understand the document by performing a detailed, insightful analysis and delivering a polished, professional response via email.\n\nYour output should reflect **expert-level comprehension**, not surface-level summaries. Aim for **depth, precision, and clarity** throughout. Treat each section of the document as if preparing a report for a legal, compliance, or business-critical audience.\n\nYou are provided with:\n- Name: {{ $json.name }}\n- Email: {{ $json.email }}\n- Extracted PDF Text: {{ $json.full_summary }}\n- Name of File in Subject Title:\n\nYour response must be:\n- Addressed directly to the user (by name)\n- Professionally written and ready for email delivery\n- Fully structured, richly formatted, and highly detailed\n\n---\n\n## \ud83d\udd0d Your Tasks:\n\n### 1. Identify and Classify the Document Type\n\nBegin with a short section titled **\u201cDocument Type\u201d**.\n\n- Analyze the content, language, and structure to determine the specific type of document, such as: \n **contract**, **employment agreement**, **project proposal**, **policy document**, **business plan**, **financial report**, **technical manual**, etc.\n \n- Do **not** simply say \"Legal\" or \"Non-legal.\" Instead, **state the actual document category** and its apparent purpose.\n\n- If it is a legal document, explicitly state: \n > \u201cThis appears to be a legal document: [type]\u201d \n and proceed to the legal clause analysis.\n\n- If it is not a legal document, still identify and state the exact type and purpose clearly. Example: \n > \u201cThis appears to be a business strategy document focused on product launch planning.\u201d\n\nBe confident but not speculative \u2014 only classify based on what\u2019s clearly supported by the content.\n\n\n---\n\n### 2. Chapter-by-Chapter Summary and Deep Analysis\n\nReview the document **in structured order**, chapter by chapter, section by section (or by major headings if chapters are not explicitly labeled).\n\nFor each chapter or major section:\n\n- Begin with a bold heading in this format: \n > **Chapter 1: [Section Title]**\n\n- Provide a **thorough multi-paragraph analysis** covering:\n - The **main ideas or arguments** expressed\n - Any **supporting evidence, examples, or rationale**\n - The **intent or strategic purpose** behind the section\n - How the section contributes to or supports the overall goals of the document\n\n- Expand on:\n - Any **assumptions**, **biases**, or **limitations** in the content\n - Key **stakeholders** referenced or implied\n - What the section **means for the reader** or decision-maker\n\n- Highlight any:\n - \ud83d\udfe8 Inconsistencies or contradictions\n - \u26a0\ufe0f Risks or red flags (if applicable)\n - \ud83d\udca1 Strategic or operational insights\n\nApproach each section as if you are writing a standalone **mini-report** \u2014 not a surface-level summary. Provide context, clarity, and insight. Be analytical, not just descriptive.\n\n---\n\n### 3. If Legal, Perform Legal-Specific Review\n\nIf the document is legal in nature, begin this section with:\n\n> _\u201cThis appears to be a legal document.\u201d_\n\nThen conduct a structured legal analysis with the following breakdown:\n\n---\n\n- \ud83e\uddfe **Key Clauses** \n Identify and briefly explain the most important clauses, grouped by category where applicable:\n - **Parties & Scope**\n - **Rights and Responsibilities**\n - **Payment Terms**\n - **Termination & Exit Clauses**\n - **Liability & Indemnity**\n - **Confidentiality / IP Ownership**\n - Any other key legal mechanisms\n\n---\n\n- \ud83d\udea9 **Red Flags or Areas of Concern** \n List any elements that could introduce risk, confusion, or legal exposure, such as:\n - Ambiguous or undefined terms\n - One-sided obligations or power imbalance\n - Vague or missing exit terms\n - Loopholes or conflicting provisions\n - Unusual penalty structures\n\n---\n\n- \ud83e\udde0 **Inferred Conclusions** \n Based on the document\u2019s tone, structure, and content:\n - What is the **true strategic purpose** or intent behind the document?\n - What risks, responsibilities, or long-term obligations are implied \u2014 even if not explicitly stated?\n - What **assumptions** does the document appear to make?\n - Is the document **balanced**, or does it favor one party? \n - If imbalanced, explain **how** and **in whose favor** (e.g., language favoring employer, vendor, landlord, etc.)\n - Does the document reflect a **standard template**, or something tailored and possibly aggressive?\n\nConclude this section with a brief opinion: \n> \u201cOverall, this document appears [balanced/imbalanced], leaning in favor of [Party A/Party B], with [low/moderate/high] legal risk exposure based on the language and structure.\u201d\n\n---\n\n### 4. If Not Legal, Provide Business/Contextual Insights\n\nIf the document is not legal in nature, continue with a detailed, chapter-by-chapter analysis.\n\nAlso extract and summarize the following:\n\n- \ud83d\udccc **Actionable Insights** \n Identify any suggestions, decisions, or next steps the reader or organization should consider.\n\n- \ud83d\udcca **Themes, Trends, or Conclusions** \n Highlight key messages, repeated patterns, overall direction, or stated conclusions.\n\n- \ud83d\udd0d **Strategic Implications** \n What does the document imply about the organization\u2019s goals, priorities, risks, or competitive position?\n\n- \ud83e\uddf1 **Operational Notes** \n Extract any timelines, deliverables, roles/responsibilities, or execution plans.\n\n- \ud83d\udca1 **Assumptions or Unspoken Context** \n Point out any implicit assumptions, missing data, or background context the reader should be aware of.\n\n- \u2753 **Questions or Ambiguities** \n Identify unclear sections, vague terms, or places where clarification may be needed.\n\nThe goal is to help the user **understand not just what the document says, but what it means and why it matters.**\n\n---\n\n### 5. **Finish with a Professional Closing Message**\n- Thank the user by name\n- Inform them this analysis is automatically generated\n- Encourage follow-up review if the document is critical or sensitive\n\n---\n\n## \ud83e\uddfe Tone & Format Guidelines:\n- Professional, helpful, and articulate\n- Use section headers, bullet points, and bold formatting to structure your output\n- Avoid legal speculation outside the text\u2019s content\n- Write as though this is being sent to a C-suite executive, legal advisor, or stakeholder\n\n---\n\n## \ud83d\udcec Final Output Format:\nOutput **only the email-style response** to the user. Do not include prompts, commentary, or instruction headers. Begin directly with content. Your structure should include the following:\n\n- **Document Type**\n- **Chapter-by-Chapter Summary**\n- **Key Clauses** (if legal)\n- **Red Flags / Observations**\n- **Inferred Conclusions**\n- **Recommendations / Next Steps**\n- **Professional Closing**\n- **Disclaimer**\n\n---\n\n### \u26a0\ufe0f Include this disclaimer at the bottom of the email:\n\n> _Disclaimer: This review has been automatically generated by an AI document assistant. It is intended to provide insight and aid understanding, but does not constitute legal or professional advice. For high-stakes or binding decisions, we strongly recommend consulting with a qualified professional._\n\n\nNow begin your response.\n\n \n\n\u201cYou are responding via an HTML email using the Gmail node in n8n. Format all output in clean, professional HTML using:\n\n<strong> for bold.</strong>\"\n\n##this is an exact sample to use below##:\n\n<p>Dear {{ $json.name }},</p>\n\n<p>Thank you for submitting your document for analysis. Below is a detailed, AI-generated review based on the contents provided.</p>\n\n<p><strong>\ud83d\udcd8 Document Type:\n[Clearly state only what kind of document, e.g., contract, policy, NDA, report, etc.]\n</p>\n\n<p><strong>\ud83e\uddfe Chapter-by-Chapter Summary:</strong></p>\n<ul>\n <li><strong>Chapter 1: [Title]</strong><br>\n [Detailed explanation of this chapter\u2019s contents, its intent, key ideas, implications, and how it fits the overall document.]</li>\n <li><strong>Chapter 2: [Title]</strong><br>\n [Continue same structure with depth, clarity, and professional interpretation.]</li>\n <!-- Add more chapters as needed -->\n</ul>\n\n<p><strong>\ud83d\udcd1 Key Clauses Identified:</strong></p>\n<ul>\n <li><strong>Confidentiality:</strong> [Summarize how confidential information is defined and protected]</li>\n <li><strong>Termination:</strong> [Conditions under which the agreement can be ended]</li>\n <li><strong>Liability:</strong> [Limits of responsibility and potential exposures]</li>\n <!-- Add more if relevant -->\n</ul>\n\n<p><strong>\ud83d\udea9 Red Flags or Areas of Concern:</strong></p>\n<ul>\n <li>[Example: Unilateral termination clauses that may favor one party disproportionately]</li>\n <li>[Example: Vague definitions that could create legal loopholes]</li>\n</ul>\n\n<p><strong>\ud83e\udde0 Inferred Conclusions:</strong></p>\n<ul>\n <li>This document is structured to legally formalize [insert purpose, e.g., a service relationship, IP transfer, etc.]</li>\n <li>Language suggests [potential drafting bias / strategic intent]</li>\n <li>The agreement may pose [insert type of risk: financial, legal, operational] due to [insert reasoning]</li>\n</ul>\n\n<p><strong>\u2705 Recommendations:</strong></p>\n<ul>\n <li>Consider having a legal expert review clauses marked as high-risk</li>\n <li>Seek clarification on any undefined or ambiguous terms before signing</li>\n <li>Ensure all business-critical terms (IP, termination, liability) align with your goals</li>\n</ul>\n\n<p>Best regards,<br>\n<strong>Swot AI - Your Smart PDF Assistant</strong></p>\n<p></p>\n<p style=\"margin-top: 1.5rem;\">\n <a href=\"mailto:swot.ai25@gmail.com\" style=\"background: #cb1b2c; color: white; padding: 0.6rem 1rem; text-decoration: none; border-radius: 6px; font-weight: bold;\">\n \ud83d\udcac Want to leave a quick comment?\n </a>\n</p>\n\n<p></p>\n<p></p>\n\n<p style=\"font-size: 0.8rem; color: #555; line-height: 1.4; margin-top: 2rem;\">\n<em><strong>Disclaimer:</strong> This review was automatically generated by an AI document assistant. It is intended to provide insights and aid understanding but does not constitute legal or professional advice. For critical decisions or binding interpretations, we strongly recommend consulting with a qualified legal or subject matter expert.</em></p>\n",
"options": {},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "5704b0f7-6f96-44b9-b804-b8d42043f0dd",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1100,
620
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "o4-mini-2025-04-16",
"cachedResultName": "o4-mini-2025-04-16"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "6eb4a414-e654-43ae-8193-e4935db5e5ba",
"name": "Gmail1",
"type": "n8n-nodes-base.gmail",
"position": [
1460,
340
],
"parameters": {
"sendTo": "={{ $('Code1').item.json.email }}",
"message": "={{ $json.output }}",
"options": {
"senderName": "Swot AI",
"appendAttribution": false
},
"subject": "=Summary of your attached Document- {{ $('Code1').item.json.title }}"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "d0541618-d148-4f89-9dd1-9576fe6102d0",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
-140,
340
],
"parameters": {
"jsCode": "const chunkSize = 4000; // characters per chunk\n\nconst text = $input.first().json.text ?? \"\";\nconst name = $(\"Webhook\").first().json.body.name;\nconst email = $(\"Webhook\").first().json.body.email;\nconst title = $input.first().json.info.Title;\n\nconst chunks = [];\n\nfor (let i = 0; i < text.length; i += chunkSize) {\n chunks.push({\n chunk: text.slice(i, i + chunkSize),\n chunkIndex: i / chunkSize + 1,\n name,\n email,\n title,\n });\n}\n\nreturn chunks.map((c) => ({ json: c }));\n"
},
"typeVersion": 2
},
{
"id": "64daaffc-b164-4812-8581-af0122001500",
"name": "OpenAI Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
260,
580
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-3.5-turbo",
"cachedResultName": "gpt-3.5-turbo"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "59619b79-7428-4dea-9e3c-e13648f30064",
"name": "Basic LLM Chain",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
200,
340
],
"parameters": {
"text": "=Summarize the following section of a document. Retain legal terms, obligations, or business meaning.\n\n{{ $json.chunk }}\n",
"batching": {},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "3f2ec94f-7b26-4088-98db-f15a737b9c86",
"name": "Code1",
"type": "n8n-nodes-base.code",
"position": [
660,
340
],
"parameters": {
"jsCode": "const summaries = items.map(item => item.json.text || item.json.output || item.json.chunk || \"\");\n\nreturn [{\n json: {\n full_summary: summaries.join(\"\\n\\n\"),\n name: $('Code').first().json.name,\n email: $('Code').first().json.email,\n title: $('Code').first().json.title\n }\n}];\n"
},
"typeVersion": 2
},
{
"id": "1c4a2473-afaa-4e9b-844e-847eaa4f89ae",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
-280,
-60
],
"parameters": {
"options": {
"responseCode": 302,
"responseHeaders": {
"entries": [
{
"name": "Content-Type",
"value": "text/html"
}
]
}
},
"redirectURL": "https://swot-ai25.github.io/pdf-document-assistant/success.html",
"respondWith": "redirect"
},
"typeVersion": 1.3
},
{
"id": "a970c4d6-36f2-4387-93d3-1d52de3dcd2d",
"name": "Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
1880,
340
],
"parameters": {
"columns": {
"value": {
"Date": "={{ $now.toFormat('dd-LL-yyyy') }}",
"Time": "={{ $now.toFormat('HH:mm') }}",
"Name ": "={{ $('Code1').item.json.name }}",
"Email ": "={{ $('Code1').item.json.email }}",
"Status": "={{ $json.labelIds[0] }}",
"Filename": "={{ $('Code1').item.json.title }}"
},
"schema": [
{
"id": "Date",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Time",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Name ",
"type": "string",
"display": true,
"required": false,
"displayName": "Name ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email ",
"type": "string",
"display": true,
"required": false,
"displayName": "Email ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Filename",
"type": "string",
"display": true,
"required": false,
"displayName": "Filename",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Size",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Size",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Number of Pages",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Number of Pages",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "id",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "threadId",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "threadId",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "labelIds",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "labelIds",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/16eDhxjB3ZEpb9-zWaBxAX0z4xhsb-aQfTWqeGvQaNI0/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "16eDhxjB3ZEpb9-zWaBxAX0z4xhsb-aQfTWqeGvQaNI0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/16eDhxjB3ZEpb9-zWaBxAX0z4xhsb-aQfTWqeGvQaNI0/edit?usp=drivesdk",
"cachedResultName": "SwotAI_Users"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "7a523ce5-cb91-401d-93b4-aa62fec739d3",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-760,
0
],
"parameters": {
"height": 380,
"content": "## Entry point \u2014 \n**receives uploaded PDF via POST request.** "
},
"typeVersion": 1
},
{
"id": "e3b6121a-45bb-44ae-9169-0dd4126ad675",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
200
],
"parameters": {
"width": 320,
"height": 320,
"content": "## \ud83d\udfe8 Code (pre-processing)\n**Clean/format the extracted text (remove line breaks, non-text content, etc.)**"
},
"typeVersion": 1
},
{
"id": "3f9a3e21-7d9a-48d3-b66a-c0f83159c0bb",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
600,
60
],
"parameters": {
"height": 560,
"content": "## \ud83d\udfe8 AI Agent\n****\ud83d\udccc Central intelligence. Handles prompts, memory, and reasoning.\n\n\ud83d\udccc Uses OpenAI Chat Model for deeper analysis.\n\n\ud83d\udccc Configurable to extract clauses, answer questions, or generate insights.** to edit me."
},
"typeVersion": 1
},
{
"id": "424540ff-40d1-4c75-9b84-35d5c5366e3e",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
180,
140
],
"parameters": {
"width": 300,
"height": 640,
"content": "## \ud83d\udfe8 Basic LLM Chain \n* First AI pass: summarization / restructuring of document content.*\n\n Connected to OpenAI Chat Model1 for text understanding.**"
},
"typeVersion": 1
},
{
"id": "2d1e46b9-f72a-40f7-87f5-1a3aaacd3db0",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
920,
60
],
"parameters": {
"width": 380,
"height": 700,
"content": "##\ud83d\udfe8 AI Agent\n\n**\ud83d\udccc Central intelligence. Handles prompts, memory, and reasoning.\n\ud83d\udccc Uses OpenAI Chat Model for deeper analysis.\n\ud83d\udccc Configurable to extract clauses, answer questions, or generate insights.** to edit me.\n"
},
"typeVersion": 1
},
{
"id": "62d5aae6-e7d0-41a6-98a1-0eb95aa89ac9",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-400,
-240
],
"parameters": {
"width": 400,
"height": 340,
"content": "## \ud83d\udfe8 Respond to Webhook\n\n**\ud83d\udccc Sends immediate acknowledgment back to the client after upload.** to edit me."
},
"typeVersion": 1
},
{
"id": "8643df4f-0146-4aac-9177-be2a69b370ed",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1360,
120
],
"parameters": {
"width": 360,
"height": 460,
"content": "## \ud83d\udfe8 Gmail\n\n**\ud83d\udccc Sends formatted results to the user (summary, clauses, flagged risks, etc.).\n"
},
"typeVersion": 1
}
],
"active": true,
"settings": {
"callerPolicy": "workflowsFromSameOwner",
"executionOrder": "v1"
},
"versionId": "9a8282dd-88c0-4535-8427-662d9c25118e",
"connections": {
"Code": {
"main": [
[
{
"node": "Basic LLM Chain",
"type": "main",
"index": 0
}
]
]
},
"Code1": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Gmail1": {
"main": [
[
{
"node": "Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "Extract from File",
"type": "main",
"index": 0
},
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Gmail1",
"type": "main",
"index": 0
}
]
]
},
"Basic LLM Chain": {
"main": [
[
{
"node": "Code1",
"type": "main",
"index": 0
}
]
]
},
"Extract from File": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "Basic LLM Chain",
"type": "ai_languageModel",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
gmailOAuth2googleSheetsOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Description
Source: https://n8n.io/workflows/7610/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
leads. Uses supabase, gmail, formTrigger, httpRequest. Webhook trigger; 62 nodes.
This n8n workflow orchestrates a powerful suite of AI Agents and automations to manage and optimize various aspects of an e-commerce operation, particularly for platforms like Shopify. It leverages La
Enhance your support, onboarding, and internal knowledge workflows with an intelligent RAG-powered chatbot that responds using live data stored in Google Sheets. 🤖📚 Built for teams that rely on struct
This workflow automates the creation, rendering, approval, and posting of TikTok-style POV (Point of View) videos to Instagram, with cross-posting to Facebook and YouTube. It eliminates manual video p
Tired of grinding out YouTube content? This n8n workflow turns AI into your personal video factory—creating engaging, faceless shorts on autopilot. Perfect for creators, marketers, or side-hustlers lo