{
  "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
          }
        ]
      ]
    }
  }
}