{
  "name": "Screenshot a page behind login using cookies with Rendex",
  "nodes": [
    {
      "parameters": {
        "content": "## 🔐 Screenshot a page behind a login — Rendex\n\n**Who it's for:** anyone who needs to capture an authenticated page — an internal dashboard, a gated report, a members-only view — that a plain screenshot can't reach.\n\n**What it does:** the **Rendex** node sets your session **cookies** (or an auth **header**) before capture, so it renders the page *as the logged-in you*.\n\n**⚡ Plan:** cookies / custom headers are a **Starter+** feature.\n\n**How it works:**\n1. **Trigger** fires\n2. **Rendex** injects your cookies, waits for a post-login element, and captures\n3. The image (binary `data`) flows to storage/notification\n\n**How to use:**\n1. Install `n8n-nodes-rendex` and add your **Rendex API** credential (Starter+)\n2. In a browser, log in → DevTools → **Application → Cookies** → copy your session cookie's name + value\n3. Paste it into **Additional Options → Cookies** on the Rendex node (see the note →)\n4. Click **Test workflow**\n\n📚 Docs: https://rendex.dev/docs/n8n",
        "height": 460,
        "width": 440
      },
      "id": "sticky-overview",
      "name": "Overview",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [-380, 120]
    },
    {
      "parameters": {},
      "id": "manual-trigger",
      "name": "When clicking Test",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [200, 340]
    },
    {
      "parameters": {
        "content": "### Set your session cookie\n**Additional Options → Cookies** takes a JSON array:\n```\n[{ \"name\": \"session\",\n   \"value\": \"YOUR_SESSION_VALUE\",\n   \"domain\": \".yourapp.com\" }]\n```\nToken auth instead? Use **Custom Headers**: `{ \"Authorization\": \"Bearer …\" }`. Add **Wait For Selector** to a post-login element so the capture waits until you're really in.",
        "height": 340,
        "width": 360,
        "color": 5
      },
      "id": "sticky-auth",
      "name": "Auth note",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [460, 110]
    },
    {
      "parameters": {
        "resource": "screenshot",
        "operation": "capture",
        "source": "url",
        "url": "https://yourapp.com/dashboard",
        "format": "png",
        "binaryPropertyName": "data",
        "additionalOptions": {
          "cookies": "[{\"name\":\"session\",\"value\":\"YOUR_SESSION_VALUE\",\"domain\":\".yourapp.com\"}]",
          "fullPage": true,
          "waitForSelector": ".dashboard-loaded"
        }
      },
      "id": "rendex-capture",
      "name": "Rendex — Capture (authenticated)",
      "type": "n8n-nodes-rendex.rendex",
      "typeVersion": 1,
      "position": [540, 340]
    },
    {
      "parameters": {
        "content": "### 3 · Archive the capture\nUploads the authenticated screenshot (`data` binary) to Google Drive with a dated filename. Prefer object storage or delivery? Swap for **AWS S3**, **Dropbox**, **Slack**, or **Send Email** — they all accept the same `data` binary.",
        "height": 300,
        "width": 320,
        "color": 3
      },
      "id": "sticky-use",
      "name": "Archive note",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [900, 120]
    },
    {
      "parameters": {
        "operation": "upload",
        "inputDataFieldName": "data",
        "name": "=dashboard-{{ $now.format('yyyy-MM-dd') }}.png",
        "driveId": { "__rl": true, "mode": "list", "value": "My Drive" },
        "folderId": { "__rl": true, "mode": "list", "value": "root" },
        "options": {}
      },
      "id": "drive-upload",
      "name": "Archive to Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [960, 340]
    }
  ],
  "connections": {
    "When clicking Test": {
      "main": [[{ "node": "Rendex — Capture (authenticated)", "type": "main", "index": 0 }]]
    },
    "Rendex — Capture (authenticated)": {
      "main": [[{ "node": "Archive to Google Drive", "type": "main", "index": 0 }]]
    }
  },
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "instanceId": ""
  }
}
