{
  "name": "Auto-moderate Instagram comments with Perspective API & Slack alerts",
  "nodes": [
    {
      "id": "042e2d57-9f5b-4990-9f8c-96c571f4afb9",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.cron",
      "position": [
        -544,
        240
      ]
    },
    {
      "id": "fbcd13d4-752b-47bf-9486-83c6d4d0ba36",
      "name": "Get Comments",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -96,
        336
      ]
    },
    {
      "id": "4f906e36-0ce8-4fdf-a1e3-f6eafdec200a",
      "name": "Detect Toxicity",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        352,
        336
      ]
    },
    {
      "id": "7ee26cdf-d244-4e29-b501-fd938ad9ccc7",
      "name": "IF Toxic",
      "type": "n8n-nodes-base.if",
      "position": [
        576,
        336
      ]
    },
    {
      "id": "2dec3548-e9b4-4706-98c3-2b6a09c08812",
      "name": "Hide Comment",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        800,
        48
      ]
    },
    {
      "id": "bfc8fd2d-d547-4bd4-acea-c5e5df672ab4",
      "name": "Alert Team (Slack)",
      "type": "n8n-nodes-base.slack",
      "position": [
        800,
        240
      ]
    },
    {
      "id": "90946996-b976-40a5-a80d-f869b79b30c3",
      "name": "Store Evidence (Google Sheet)",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        800,
        432
      ]
    },
    {
      "id": "b31bf33e-5be7-41da-be9b-89cac55e33dd",
      "name": "End (Non-Toxic Path)",
      "type": "n8n-nodes-base.set",
      "position": [
        800,
        624
      ]
    },
    {
      "id": "2452c3a8-68ef-4e46-b2c3-04b10e76c2e9",
      "name": "Get Instagram Posts",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -320,
        336
      ]
    },
    {
      "id": "c07fa30c-3c9b-46b6-9cd7-bd186ad641bd",
      "name": "Loop Over Comments",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        128,
        336
      ]
    },
    {
      "id": "d0b8d990-b005-4827-8033-54c5649db2ec",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -544,
        432
      ]
    },
    {
      "id": "c9200031-8fa3-4c6e-9684-1ea457cd3cfa",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -608,
        32
      ],
      "parameters": {
        "width": 432,
        "height": 528,
        "content": "A Schedule node runs every 15 minutes to poll for new comments (Instagram doesn't natively push notifications easily, so polling is used). You could replace this with a Webhook if you set up Instagram"
      }
    },
    {
      "id": "8f5a8cfd-09ac-4d23-a1c1-7f1246f1becb",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        32
      ],
      "parameters": {
        "width": 416,
        "height": 528,
        "content": "Uses Instagram Graph API (via HTTP Request) to fetch recent posts and their comments. Assumes you have an Instagram Business Account and a valid access token (from Facebook Developer Portal)."
      }
    },
    {
      "id": "57d6f1fe-6179-4425-b661-aec2c1dc735d",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        288,
        32
      ],
      "parameters": {
        "width": 416,
        "height": 528,
        "content": "For each comment, it sends the text to Google's Perspective API (a free toxicity detection API; sign up at https://perspectiveapi.com/ for an API key). Threshold for \"toxic\" is set to >0.7 toxicity sc"
      }
    },
    {
      "id": "e2b718f0-28ea-4bf1-a5d5-26e84be318c9",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        752,
        -224
      ],
      "parameters": {
        "width": null,
        "height": 992,
        "content": "**Auto-Hide Offensive Ones**: If toxic, uses Instagram API to hide the comment.\n\n**Alert Team**: Sends a Slack notification (or email; configurable) with details.\n\n**Store Evidence**: Appends the toxi"
      }
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Get Instagram Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF Toxic": {
      "main": [
        [
          {
            "node": "Hide Comment",
            "type": "main",
            "index": 0
          },
          {
            "node": "Alert Team (Slack)",
            "type": "main",
            "index": 0
          },
          {
            "node": "Store Evidence (Google Sheet)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "End (Non-Toxic Path)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Comments": {
      "main": [
        [
          {
            "node": "Loop Over Comments",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Detect Toxicity": {
      "main": [
        [
          {
            "node": "IF Toxic",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get Instagram Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Comments": {
      "main": [
        [
          {
            "node": "Detect Toxicity",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Instagram Posts": {
      "main": [
        [
          {
            "node": "Get Comments",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}