{
  "name": "Zambo - Weekly Site Audit",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "weeks",
              "triggerAtDay": 1,
              "triggerAtHour": 9,
              "triggerAtMinute": 0
            }
          ]
        }
      },
      "id": "0dea7d6d-c1b7-4e9f-b71a-56c2eee11fb8",
      "name": "Monday 9am",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        240,
        300
      ]
    },
    {
      "parameters": {
        "operation": "site_audit",
        "url": "https://your-site.com"
      },
      "id": "4cdad40c-1fcd-4959-b614-fdc417e0b931",
      "name": "Zambo Site Audit",
      "type": "n8n-nodes-zambo.zambo",
      "typeVersion": 1,
      "position": [
        460,
        300
      ]
    },
    {
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "const items = $input.all();\nconst out = [];\nfor (const item of items) {\n  const j = item.json || {};\n  let data = j.result ? j.result : j;\n  let parsed = data;\n  if (data && data.content && Array.isArray(data.content) && data.content[0] && data.content[0].text) {\n    try { parsed = JSON.parse(data.content[0].text); }\n    catch (e) { parsed = { raw_text: data.content[0].text }; }\n  } else if (typeof data === 'string') {\n    try { parsed = JSON.parse(data); }\n    catch (e) { parsed = { raw_text: data }; }\n  }\n  const p = parsed || {};\n  const score = p.score ?? p.overall_score ?? p.grade ?? null;\n  const verdict = p.verdict ?? p.summary ?? p.headline ?? null;\n  const findings = p.top_findings ?? p.findings ?? p.issues ?? null;\n  const receipt = p.receipt_url ?? p.receipt ?? j.receipt_url ?? null;\n  const url = p.target_url ?? p.url ?? null;\n  const text = p.raw_text ?? JSON.stringify(p).slice(0, 2000);\n  out.push({ json: {\n    target_url: url,\n    score: score,\n    verdict: verdict,\n    top_findings: findings,\n    receipt_url: receipt,\n    audit_text: text,\n  }});\n}\nreturn out;"
      },
      "id": "98ea3ca1-a20d-411a-8f66-78510605959d",
      "name": "Summarize Audit",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        680,
        300
      ]
    },
    {
      "parameters": {
        "content": "## Weekly site audit (Zambo)\n\n1. Install the community node: n8n **Settings \u2192 Community Nodes \u2192 Install** \u2192 `n8n-nodes-zambo`. No API key needed (free: 20 calls/tool/day).\n2. Put YOUR site in the **URL** field of *Zambo Site Audit* \u2014 full URL with https://.\n3. Change the schedule in *Monday 9am* if you want it more often.\n4. *Summarize Audit* pulls out the score, verdict, top findings and the verifiable receipt URL. Pipe it into email/Slack/Sheets from here \u2014 or just watch the executions.\n\nThe audit is Zambo's 10-stage ghost audit: SEO, AI discoverability, conversion leaks.",
        "height": 220,
        "width": 880,
        "color": 4
      },
      "id": "49b5597e-b643-447a-8792-a4be3457b2b5",
      "name": "README",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        240,
        60
      ]
    }
  ],
  "connections": {
    "Monday 9am": {
      "main": [
        [
          {
            "node": "Zambo Site Audit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Zambo Site Audit": {
      "main": [
        [
          {
            "node": "Summarize Audit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": false
  }
}