This workflow corresponds to n8n.io template #9326 — we link there as the canonical source.
This workflow follows the Google Drive → Google Drive Trigger 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "7af41587-fbd1-4ff4-9ccb-55fe5aaf9305",
"name": "Download File",
"type": "n8n-nodes-base.googleDrive",
"notes": "Downloads receipt files from Google Drive for AI processing.",
"position": [
-784,
768
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {
"binaryPropertyName": "data"
},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "c5fe1983-8614-4ab9-862e-315c2e5aecaa",
"name": "Extract Images",
"type": "@vlm-run/n8n-nodes-vlmrun.vlmRun",
"position": [
-560,
800
],
"parameters": {
"operation": "executeAgent",
"agentPrompt": "You are expert in extracting images from a document, complete the task accordingly so that urls can be extracted using json.body.response.extracted_images",
"agentCallbackUrl": "https://playground.attensys.ai/webhook/image-extract-via-agent"
},
"credentials": {
"vlmRunApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "fda11e43-0198-45e6-b26a-ae289e1b6bc4",
"name": "Download Image",
"type": "n8n-nodes-base.httpRequest",
"position": [
-64,
880
],
"parameters": {
"url": "={{ $json['body.response.extracted_images'] }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "0af9ff16-c3d3-4f6d-912c-de0b6efa7cec",
"name": "Save Image",
"type": "n8n-nodes-base.googleDrive",
"position": [
64,
880
],
"parameters": {
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1XD17_AMlTFIWCyhQjvbQnuGd7jkn91A-",
"cachedResultUrl": "https://drive.google.com/drive/folders/1XD17_AMlTFIWCyhQjvbQnuGd7jkn91A-",
"cachedResultName": "Extracted Image"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "2cc88f73-15fb-4e54-817e-808335e5e59e",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"position": [
-192,
880
],
"parameters": {
"options": {},
"fieldToSplitOut": "body.response.extracted_images"
},
"typeVersion": 1
},
{
"id": "da008962-c360-477b-98e4-1c327255092f",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-224,
416
],
"parameters": {
"color": 7,
"width": 400,
"height": 608,
"content": "## \ud83d\udfe3 **Split, Download, Save**\n\n* \u2702\ufe0f **Split Out** node iterates each link from `body.response.extracted_images`\n\nFor example- \n```json\n{\n \"image_urls\": [\n \"https://vlm.run/api/files/img1.jpg\",\n \"https://vlm.run/api/files/img2.jpg\"\n ]\n}\n```\n\n\n* \u2b07\ufe0f **HTTP Request** downloads each image as a file\n\n* \ud83d\udcbe **Google Drive** node saves each image to the **Extracted Image** folder\n"
},
"typeVersion": 1
},
{
"id": "ead01399-4c0a-47f6-8e1d-92a35a3a5c57",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-608,
416
],
"parameters": {
"width": 368,
"height": 608,
"content": "## \ud83d\udfe1 **Extract Images via VLM Run \u2013 Setup Guide**\n\n1. Set up an n8n Webhook node and copy its Production URL \n\n2. Configure a VLM Run agent with the image extraction prompt \n\n3. Paste the n8n URL into VLM Run\u2019s Callback URL field \n\n4. Run the job on your document \n\n5. Receive extracted image URLs in n8n for processing.\n\n"
},
"typeVersion": 1
},
{
"id": "057cd13b-cd00-41b3-b5fb-2ff33a6a4fed",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1008,
416
],
"parameters": {
"color": 7,
"width": 384,
"height": 608,
"content": "## \ud83d\udfe2 Monitor & Download\n\n* \u23f1\ufe0f Google Drive Trigger checks the target folder every minute for **fileCreated** events\n\n* \ud83d\uddc2\ufe0f Trigger scope: the receipts folder you selected\n\n* \ud83d\udd17 Passes the new file\u2019s **id** to the next node\n\n* \u2b07\ufe0f Google Drive node downloads the file as binary under **data**\n\n* \ud83d\udce6 Output: the binary file is ready for processing in the next step"
},
"typeVersion": 1
},
{
"id": "1fd80fe7-abf0-42a3-9755-29f9bef894f7",
"name": "Receive Image Links",
"type": "n8n-nodes-base.webhook",
"position": [
-384,
800
],
"parameters": {
"path": "image-extract-via-agent",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2.1
},
{
"id": "090c3b8d-eeb3-4b4a-bf49-47040a942590",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-928,
80
],
"parameters": {
"color": 7,
"width": 992,
"height": 320,
"content": "## \ud83e\uddfe Image Extraction Pipeline\n\n**Flow:** Google Drive upload \u2192 VLM Run extracts images \u2192 posts to n8n webhook \u2192 images split, downloaded, and saved to target Drive folder.\n\n**Use cases:** Receipts from PDFs, report images, ML-ready assets.\n\n**Requirements:**\n* VLM Run API credentials with access to Execute Agent\n\n* Google Drive OAuth2 for trigger, download, and save\n\n* n8n Webhook URL reachable at `image-extract-via-agent` (or other desired endpoint)\n\n* Proper folder IDs for the source watch folder and the destination folder\n"
},
"typeVersion": 1
},
{
"id": "c6b9a501-f300-48f5-8441-0ea6934ffa56",
"name": "Monitor Uploads",
"type": "n8n-nodes-base.googleDriveTrigger",
"notes": "Monitors Google Drive folder for new receipt uploads and triggers processing automatically.",
"position": [
-960,
768
],
"parameters": {
"event": "fileCreated",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"mode": "list",
"value": "1S6baavqJn98MjUlbB6KtmARCWuWEekIZ",
"cachedResultUrl": "https://drive.google.com/drive/folders/1S6baavqJn98MjUlbB6KtmARCWuWEekIZ",
"cachedResultName": "test_data"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
}
],
"connections": {
"Split Out": {
"main": [
[
{
"node": "Download Image",
"type": "main",
"index": 0
}
]
]
},
"Download File": {
"main": [
[
{
"node": "Extract Images",
"type": "main",
"index": 0
}
]
]
},
"Download Image": {
"main": [
[
{
"node": "Save Image",
"type": "main",
"index": 0
}
]
]
},
"Monitor Uploads": {
"main": [
[
{
"node": "Download File",
"type": "main",
"index": 0
}
]
]
},
"Receive Image Links": {
"main": [
[
{
"node": "Split Out",
"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.
googleDriveOAuth2ApivlmRunApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates the process of extracting images from uploaded documents in Google Drive using the VLM Run Execute Agent, then downloads and saves those extracted images into a designated Drive folder. Google Drive OAuth2 credentials VLM Run API credentials with Execute…
Source: https://n8n.io/workflows/9326/ — 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.
<section> <h2>🌊 What it Does</h2> <p> This workflow <strong>automatically classifies uploaded files</strong> (PDFs or images) as <span>floorplans</span> or <span>non‑floorplans</span>. It filters out
Mistral OCR is a super convenient way to parse and extract data from multi-page PDFs or single images using AI.
Extract And Process Information Directly From Pdf Using Claude And Gemini. Uses manualTrigger, extractFromFile, googleDrive, httpRequest. Event-driven trigger; 11 nodes.
Extract title deed data and score risk factors with AI. Uses googleDriveTrigger, googleDrive, n8n-nodes-pdfvector, googleSheets. Event-driven trigger; 10 nodes.
W11 - Meeting Notes & Action Item Extractor. Uses googleDriveTrigger, googleDrive, n8n-nodes-pdfvector, googleSheets. Event-driven trigger; 9 nodes.