{
  "meta": {
    "instanceId": "96d35e452e0d9a182973416b7532cfc5643239aaaa764a5bf74d52ca84f4a35c",
    "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": {
          "id": "credential-id",
          "name": "googleDriveOAuth2Api 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": {
          "id": "credential-id",
          "name": "vlmRunApi 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": {
          "id": "credential-id",
          "name": "googleDriveOAuth2Api 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": "## 🟣 **Split, Download, Save**\n\n* ✂️ **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* ⬇️ **HTTP Request** downloads each image as a file\n\n* 💾 **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": "## 🟡 **Extract Images via VLM Run – 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’s 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": "## 🟢 Monitor & Download\n\n* ⏱️ Google Drive Trigger checks the target folder every minute for **fileCreated** events\n\n* 🗂️ Trigger scope: the receipts folder you selected\n\n* 🔗 Passes the new file’s **id** to the next node\n\n* ⬇️ Google Drive node downloads the file as binary under **data**\n\n* 📦 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
      ],
      "webhookId": "3f24a439-fa54-40c2-ab55-4488d5398469",
      "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": "## 🧾 Image Extraction Pipeline\n\n**Flow:** Google Drive upload → VLM Run extracts images → posts to n8n webhook → 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": {
          "id": "credential-id",
          "name": "googleDriveOAuth2Api Credential"
        }
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "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
          }
        ]
      ]
    }
  }
}