This workflow corresponds to n8n.io template #7788 — we link there as the canonical source.
This workflow follows the Agent → Google Drive 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": "Fj0NSPgwVmzbJQrM",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "n8n_workflow_documentation_on_notion",
"tags": [],
"nodes": [
{
"id": "ef536300-a09e-4c34-8530-68009cdf88fe",
"name": "wait for the json file upload",
"type": "n8n-nodes-base.googleDriveTrigger",
"position": [
-16,
240
],
"parameters": {
"event": "fileCreated",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"mode": "list",
"value": "1u7gib8dTKdQo-ILpYCSm3o_xKr3ulagV",
"cachedResultUrl": "https://drive.google.com/drive/folders/1u7gib8dTKdQo-ILpYCSm3o_xKr3ulagV",
"cachedResultName": "n8n-my-workflows"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "38743735-e169-4050-b205-f173a9aa1ec2",
"name": "Download the json",
"type": "n8n-nodes-base.googleDrive",
"position": [
208,
240
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "caccddd3-ca8a-49e4-80b7-9fb0890ac7e0",
"name": "Generate the description",
"type": "@n8n/n8n-nodes-langchain.agent",
"notes": "or any other big section (sections those have more than 2000 characters will be considered as a big section)",
"position": [
32,
592
],
"parameters": {
"text": "=Create a description for this n8n workflow: \n{{ JSON.stringify($json.output) }}",
"options": {
"systemMessage": "=You are an n8n description writer based on the user's provided n8n workflow json. Use this template for generating description: \n\n\"## AI-Powered MCQ Quiz Generator from YouTube Videos\n\nTransform any YouTube video into an interactive MCQ quiz automatically! This workflow uses Google Gemini AI to analyze video content and generate comprehensive multiple-choice questions with automatic grading - perfect for educators, trainers, and content creators.\n\n## Who is this For\nThis workflow is perfect for:\n- **Educators** creating quizzes from educational YouTube content\n- **Corporate Trainers** developing assessments from training videos\n- **Content Creators** engaging their audience with interactive quizzes\n- **Students** testing their knowledge on video lectures\n- **Online Course Creators** building assessments from video content\n\n## Features\n* **AI Video Analysis**: Google Gemini 2.5 Flash analyzes entire YouTube videos (up to 50 minutes)\n* **Dynamic Question Generation**: Creates up to 90 MCQ questions with 3 options each\n* **Automatic Form Creation**: Generates Google Forms with quiz functionality\n* **Smart Grading**: Built-in correct answer identification and scoring\n* **Error Handling**: Robust error management with user feedback\n\n## How It Works\n1. **User Input via n8n Web Form:**\n - Form Name (Quiz Title)\n - Email Address\n - YouTube Video URL\n - Number of Questions (1-90)\n\n2. **AI Processing Pipeline:**\n - Google Gemini analyzes the YouTube video content\n - AI extracts key concepts and generates relevant questions\n - Structured output parser formats questions into JSON\n\n3. **Google Forms Integration:**\n - Automatically creates a new Google Form\n - Adds all generated questions with multiple choice options\n - Configures quiz settings with correct answers and scoring\n\n4. **Completion & Access:**\n - User receives direct link to the generated quiz\n - Form ready for immediate use or sharing\n\n5. **Video Demo:**\n\t- [See this youtube Video](https://youtu.be/qHQ62KoRGHc) to explore \"how it works\".\n\n## Set Up Steps\n1. **Import the Workflow**\n - Create a new workflow in n8n\n - Import the JSON file by clicking \"three dots\" (upper right corner) > \"Import from file...\"\n\n2. **Configure Google Gemini API**\n - Get your Google AI Studio API key from [Google AI Studio](https://aistudio.google.com)\n - On \u201cHTTP Request to Gemini\u201d node replace the \u201cAPI_KEY\u201d from url with your API key.\n - Create a \"Google Gemini (PaLM) API\" credential in n8n\n - Add your API key to the credential\n - Connect the credential to the \"Google Gemini Chat Model\" node\n\n3. **Set Up Google Forms Integration**\n - Enable Google Forms API in Google Cloud Console\n - Create a \"Google OAuth2 API\" credential in n8n\n - Authorize the credential with Forms permissions\n - Connect the credential to both HTTP Request nodes (\u201cCreate a Google Form\u201d node and \u201cCreate MCQ Quizzes\u201d node)\n\n4. **Configure Form Trigger**\n - The workflow includes a built-in form trigger\n - No additional setup needed - the form URL will be generated automatically\n - Customize form fields if needed in the \u201cInput YouTube URL\" node\n\n5. **Test the Workflow**\n - Activate the workflow\n - Submit the form to generate a test quiz\n - Verify the Google Form is created successfully\n\n## Pre-requisites\n* **Necessary Accounts:**\n 1. Google Account (for Forms API access)\n 2. Google AI Studio Account (for Gemini API access)\n 3. n8n Instance (cloud or self-hosted)\n\n* **API Access:**\n - Google Forms API enabled\n - Google drive API enabled \n - Google Generative AI API access\n - Valid API keys and OAuth credentials\n\n* **N8N Requirements:**\n - n8n version 1.95.2 or higher\n - LangChain nodes package installed\n - Internet access for API calls\n\n## Customization Guidance\n1. **Question Generation Prompts:**\n - Modify the prompt in \"Set Prompt and model\" node for different question styles\n - Adjust difficulty levels or focus areas\n - Change question format (True/False, Fill-in-blanks, etc.)\n\n2. **Form Customization:**\n - Update form title and description templates\n - Add additional input fields (difficulty level, subject area)\n - Customize success/error messages\n\n3. **Advanced Features You Can Add:**\n - **Email Notifications**: Send quiz links via email\n - **Analytics Integration**: Track quiz performance and completion rates\n - **Multi-language Support**: Generate quizzes in different languages\n - **Question Bank Storage**: Save generated questions to a database\n - **Batch Processing**: Generate multiple quizzes from a YouTube playlist\n\n4. **Error Handling Enhancements:**\n - Add retry logic for API failures\n - Implement fallback question generation\n - Create detailed error logging\n\n## Technical Specifications\n- **Video Length**: Up to 50 minutes supported\n- **Question Limit**: 1-90 questions per quiz\n- **Processing Time**: 2-10 minutes depending on video length\n- **Supported Formats**: YouTube videos (public and unlisted)\n- **Output Format**: Google Forms with automatic grading\n\n## Limitations & Considerations\n- YouTube video must be publicly accessible or unlisted\n- Processing time increases with video length and question count\n- API rate limits may apply for high-volume usage\n- Some complex visual content may not be fully analyzed\n\n**Ready to Transform Videos into Quizzes?**\nThis workflow streamlines the entire process from video analysis to quiz deployment. Perfect for educators and trainers looking to create engaging assessments from video content quickly and efficiently.\"\n\n\n\nIMPORTANT RULES: Use \"##\" 10 times for headings. don't use it more than or less than 10. Don't use ### or # for headings. divide \"Set Up Steps\" into two separate \"##\" headings instead of one for reducing the section size."
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "f39b548b-7260-4853-b5f7-ea5d18b642c2",
"name": "Generate the linkedin post",
"type": "@n8n/n8n-nodes-langchain.agent",
"notes": "or any other big section (sections those have more than 2000 characters will be considered as a big section)",
"position": [
48,
1008
],
"parameters": {
"text": "=transform this n8n description: \"{{ $json.output }}\" into an awesome linked in post. Make the post hyper realistic, remove all sign of AI, so that audience can't even imagine that it is made by ai. Start the post with strong hook. Make the post engageable. Don't make the post so big, keep it concise.",
"options": {
"systemMessage": "=You are a linkedin post writer. Use this template to create the post:\n\n\n[What if you had your own AI-powered finance assistant\u2026 right inside Telegram?\n\n\nJust say,\n\"I spent $20 on coffee today\"\nor\n\"Received $500 freelance payment\"\nand boom, it\u2019s automatically tracked, categorized, and stored in Google Sheets.\nNo apps. No spreadsheets. No headaches.\n\n\nAsk your assistant anytime:\n\u201cHow much did I spend on food last month?\u201d\n\u201cHow much did I earn last Friday?\u201d\n\u201cGive me a report of this week\u2019s expenses.\u201d\n\n\nIt\u2019s all voice & text friendly, thanks to AI, it understands natural language and even voice notes via Telegram.\n\n\nAs someone who believes managing money = mastering life, I built this AI personal finance tracker to help simplify financial awareness for everyone.\n\n\nIf you\u2019re someone who wants to track smarter, not harder. this is for you.\n\n\nIf you want the setup for yourself you just have to: \n1. React on this Post. \n2. Make sure we're connected (required to receive the file) \n3. Comment \"FINTRACK\" below, and I'll send the link to your DM.\n\n\nPS: Only sharing this version free for the next 48 hours \u2014 then it goes back into client-only mode for $30.\n\n\n\u267b\ufe0f Repost to help the people who need this, so that they can get it easily.]"
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "7d6b2b12-b736-4656-a8a6-e4377c301d31",
"name": "Linkedin post generator",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
48,
1168
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "cd1646a5-b14a-490e-a871-456a3d0f0dc7",
"name": "Description generator",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
48,
752
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "b2fbda3e-52f4-4290-ac6c-7ca602c5f428",
"name": "Create the notion page",
"type": "n8n-nodes-base.notion",
"position": [
464,
672
],
"parameters": {
"title": "={{ $json.output.split(\"\\n\\n\")[0].replaceAll(\"## \",\"\") }}",
"options": {},
"resource": "databasePage",
"databaseId": {
"__rl": true,
"mode": "list",
"value": "1cad2d11-ae09-80f9-a98e-dd820cd16e21",
"cachedResultUrl": "https://www.notion.so/1cad2d11ae0980f9a98edd820cd16e21",
"cachedResultName": "templates-details"
},
"propertiesUi": {
"propertyValues": [
{
"key": "Automation Tools|select",
"selectValue": "N8N"
},
{
"key": "Description|rich_text",
"text": {
"text": [
{
"text": "={{ $json.output.split(\"## \")[1] }}",
"annotationUi": {}
},
{
"text": "={{ $json.output.split(\"## \")[2] }}",
"annotationUi": {}
},
{
"text": "={{ $json.output.split(\"## \")[3] }}",
"annotationUi": {}
},
{
"text": "={{ $json.output.split(\"## \")[4] }}",
"annotationUi": {}
},
{
"text": "={{ $json.output.split(\"## \")[5] }}",
"annotationUi": {}
},
{
"text": "={{ $json.output.split(\"## \")[6] }}",
"annotationUi": {}
},
{
"text": "={{ $json.output.split(\"## \")[7] }}",
"annotationUi": {}
},
{
"text": "={{ $json.output.split(\"## \")[8] }}",
"annotationUi": {}
},
{
"text": "={{ $json.output.split(\"## \")[9] }}",
"annotationUi": {}
},
{
"text": "={{ $json.output.split(\"## \")[10] }}",
"annotationUi": {}
}
]
},
"richText": true
},
{
"key": "Status|select",
"selectValue": "Free"
},
{
"key": "Template-Download-Link|url",
"urlValue": "={{ $(\"wait for the json file upload\").item.json.webViewLink }}"
}
]
}
},
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "56fcf66b-bf4c-43a2-9eaf-15efd8449e2b",
"name": "Create the linkedIn post",
"type": "n8n-nodes-base.linkedIn",
"position": [
480,
1088
],
"parameters": {
"text": "={{ $json.output }}",
"person": "cVq9lEhq9r",
"additionalFields": {}
},
"credentials": {
"linkedInOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "436d9624-e662-4822-a3f5-a7699d1d54a9",
"name": "prepare json to make it readable by AI",
"type": "n8n-nodes-base.extractFromFile",
"position": [
432,
240
],
"parameters": {
"options": {},
"operation": "fromJson",
"destinationKey": "output"
},
"typeVersion": 1
},
{
"id": "0064961f-4209-4d5b-a3c3-db6461698951",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-256,
160
],
"parameters": {
"color": 4,
"width": 1060,
"height": 320,
"content": "## Wait for the upload of n8n's json blueprint on Google drive and prepare it to send as a prompt to the gemini\n"
},
"typeVersion": 1
},
{
"id": "a5cce488-04ec-4ffb-98ed-6c4b3f57e51d",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-256,
496
],
"parameters": {
"color": 5,
"width": 1060,
"height": 416,
"content": "## Generate the n8n description by gemini and create a notion database page. "
},
"typeVersion": 1
},
{
"id": "b82a1dff-4542-4849-a281-54c1673d792c",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-256,
928
],
"parameters": {
"color": 2,
"width": 1060,
"height": 400,
"content": "## Generate the linkedin post by gemini and post it to linkedin."
},
"typeVersion": 1
},
{
"id": "48682220-eccd-4952-b4fa-c30dfa2cf534",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
816,
160
],
"parameters": {
"color": 6,
"width": 676,
"height": 1160,
"content": "## Notion page's properties:\n\n1. Title\n2. Status\n3. Automation Tool\n4. Template-Download-Link (Must)\n5. Video-Demo\n6. Description (Must)\n7. Inttegrated with\n8. Tags\n\n## You must have to add this two properties on your notion database page before creating the notion node:\n\n1. Description\n2. Template-Download-Link"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "9763ca3f-bccf-4f75-9303-58c3bd0b1472",
"connections": {
"Download the json": {
"main": [
[
{
"node": "prepare json to make it readable by AI",
"type": "main",
"index": 0
}
]
]
},
"Description generator": {
"ai_languageModel": [
[
{
"node": "Generate the description",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Linkedin post generator": {
"ai_languageModel": [
[
{
"node": "Generate the linkedin post",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Generate the description": {
"main": [
[
{
"node": "Create the notion page",
"type": "main",
"index": 0
},
{
"node": "Generate the linkedin post",
"type": "main",
"index": 0
}
]
]
},
"Generate the linkedin post": {
"main": [
[
{
"node": "Create the linkedIn post",
"type": "main",
"index": 0
}
]
]
},
"wait for the json file upload": {
"main": [
[
{
"node": "Download the json",
"type": "main",
"index": 0
}
]
]
},
"prepare json to make it readable by AI": {
"main": [
[
{
"node": "Generate the description",
"type": "main",
"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.
googleDriveOAuth2ApigooglePalmApilinkedInOAuth2ApinotionApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automated n8n Workflow Documentation and LinkedIn Promotion
Source: https://n8n.io/workflows/7788/ — 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.
Who is this for? Agencies, consultants, and service providers who conduct discovery calls and need to quickly turn conversations into professional proposals.
This workflow is designed for marketers, content creators, agencies, and solo founders who want to publish long‑form posts with visuals on autopilot using n8n and AI agents.
Awesome N8N Templates. Uses notion, lmChatOpenAi, outputParserStructured, chainLlm. Event-driven trigger; 36 nodes.
Extract data from any PDF or image invoice dropped in Google Drive directly into Google Sheets – powered by AI OCR. Free, fully modifiable n8n workflow. Optional add-ons for pro features.
Monthly Invoice Summarizer. Uses googleDriveTrigger, googleDrive, lmChatOpenAi, outputParserStructured. Event-driven trigger; 28 nodes.