{
  "name": "Generate Google ad copy automatically with Claude 3.5, Channable & Relevance AI",
  "nodes": [
    {
      "id": "b07b40c1-4c8c-4c35-aa07-be7025ed68b2",
      "name": "Get Product Feed",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1380,
        820
      ]
    },
    {
      "id": "4b90a3bc-da44-44bc-b19a-d81427545f26",
      "name": "Format for CSV",
      "type": "n8n-nodes-base.set",
      "position": [
        560,
        700
      ]
    },
    {
      "id": "bea6c2f0-4a95-4848-85a1-780cc048b26d",
      "name": "Alert - Non-Compliant",
      "type": "n8n-nodes-base.slack",
      "position": [
        560,
        900
      ]
    },
    {
      "id": "95f53395-e93d-4309-8f98-d2b2378cbb13",
      "name": "Aggregate Batches",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        760,
        700
      ]
    },
    {
      "id": "56492a38-1188-4b35-999f-14017ac76484",
      "name": "Save to Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1160,
        700
      ]
    },
    {
      "id": "f25d680c-28ad-43f5-96c8-0f022cf1a710",
      "name": "Schedule Trigger - Daily1",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1600,
        820
      ]
    },
    {
      "id": "01a193ae-a04f-4a04-9c3e-0a40c8e197c5",
      "name": "Split Into Batches1",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -1140,
        820
      ]
    },
    {
      "id": "50792985-2a29-4aeb-8191-2a1ef3d7ec97",
      "name": "Generate Ad Copy - Relevance AI1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -880,
        800
      ]
    },
    {
      "id": "17d67f83-8300-41c5-a3ac-9b7ea4bc25c2",
      "name": "Validate Character Limits1",
      "type": "n8n-nodes-base.code",
      "position": [
        -560,
        800
      ]
    },
    {
      "id": "534ea658-ea94-4d4c-a4e3-5d5fa1c699b6",
      "name": "Compliance Check Agent1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -160,
        800
      ]
    },
    {
      "id": "c9bfe847-7215-4ae5-a61e-4eb24ae1da0c",
      "name": "IF Compliant1",
      "type": "n8n-nodes-base.if",
      "position": [
        160,
        800
      ]
    },
    {
      "id": "5a27e0f1-d4e7-4a81-9700-dd1c368fbb0b",
      "name": "Generate CSV File1",
      "type": "n8n-nodes-base.code",
      "position": [
        960,
        700
      ]
    },
    {
      "id": "55d4429b-b4a9-4a19-bb34-2f58d7881a5c",
      "name": "Success Notification1",
      "type": "n8n-nodes-base.slack",
      "position": [
        1360,
        700
      ]
    },
    {
      "id": "9af47779-8ca3-4e7c-9d3d-76f419c45361",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2060,
        760
      ],
      "parameters": {
        "width": 360,
        "height": 220,
        "content": "## 🟦 Schedule Trigger - Daily\n\n### 🕓 Purpose: Automatically runs every night at midnight (0 0 * * *).\nTip: You can also execute manually for testing.\n\n💡 Use to refresh and generate new ad copy daily."
      }
    },
    {
      "id": "d563b4b9-7239-4bb1-ab62-73b924643715",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1500,
        400
      ],
      "parameters": {
        "width": 340,
        "height": 320,
        "content": "## 🟦 Get Product Feed (Channable)\n### 📦 Purpose: Fetches live product data (title, price, brand, description, category).\nAPI: GET {{$env.CHANNABLE_API_URL}}/v1/projects/{{$env.PROJECT_ID}}/items\n\n####"
      }
    },
    {
      "id": "538ff6d6-5496-42db-90c4-2f22a1f228f4",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1240,
        980
      ],
      "parameters": {
        "width": 320,
        "height": 240,
        "content": "## 🟦 Split Into Batches\n\n### 🧮 Purpose: Processes up to 50 products per batch.\n\nPrevents hitting API rate limits from Relevance AI or Channable.\n⚡ Adjust batch size depending on product volume and pla"
      }
    },
    {
      "id": "bb106886-79a8-437c-8f74-50939befe720",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1020,
        400
      ],
      "parameters": {
        "width": 340,
        "height": 320,
        "content": "## 🟦 Generate Ad Copy - Relevance AI\n### ✍️ Purpose: Calls your Relevance AI Tool to generate Google Ads headlines & descriptions.\nAPI: POST /tools/google_text_ad_copy_generator/run\n\nUses product titl"
      }
    },
    {
      "id": "eabe3ce0-d216-426d-8cc3-e1411f36c385",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -680,
        980
      ],
      "parameters": {
        "width": 320,
        "height": 300,
        "content": "## 🟦 Validate Character Limits\n\n🔍 Purpose: Ensures headlines ≤30 chars and descriptions ≤90 chars.\n\nUses JavaScript to count accurately and truncate gracefully.\n✨ Automatically cleans trailing punctua"
      }
    },
    {
      "id": "adb78971-8b7e-4eaf-9d9a-c47439b35c12",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -320,
        400
      ],
      "parameters": {
        "width": 340,
        "height": 320,
        "content": "## 🟦 Compliance Check Agent\n\n🧠 Purpose: Checks generated ad text for Google Ads policy compliance.\nAPI: POST /agents/google_ads_compliance_checker/run\n\nFlags emojis, exaggerated claims, restricted ter"
      }
    }
  ],
  "connections": {
    "IF Compliant1": {
      "main": [
        [
          {
            "node": "Format for CSV",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Alert - Non-Compliant",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format for CSV": {
      "main": [
        [
          {
            "node": "Aggregate Batches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Product Feed": {
      "main": [
        [
          {
            "node": "Split Into Batches1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate Batches": {
      "main": [
        [
          {
            "node": "Generate CSV File1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate CSV File1": {
      "main": [
        [
          {
            "node": "Save to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Into Batches1": {
      "main": [
        [
          {
            "node": "Generate Ad Copy - Relevance AI1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save to Google Sheets": {
      "main": [
        [
          {
            "node": "Success Notification1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Compliance Check Agent1": {
      "main": [
        [
          {
            "node": "IF Compliant1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger - Daily1": {
      "main": [
        [
          {
            "node": "Get Product Feed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Character Limits1": {
      "main": [
        [
          {
            "node": "Compliance Check Agent1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Ad Copy - Relevance AI1": {
      "main": [
        [
          {
            "node": "Validate Character Limits1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}