{
  "id": "sApDhrCJFPIl0wdv",
  "tags": [],
  "nodes": [
    {
      "id": "0bd4a770-9b16-4b30-836d-0013a530c3f5",
      "name": "Settings",
      "type": "n8n-nodes-base.set",
      "position": [
        -1680,
        256
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "108afa46-571b-4e15-ab1a-bfb03ac7972b",
              "name": "telegram_chat_id",
              "type": "string",
              "value": "YOUR_TELEGRAM_CHAT_ID"
            },
            {
              "id": "0937ebce-93ae-45c3-89f4-1594f9eb39dd",
              "name": "wait_in_seconds",
              "type": "number",
              "value": 1
            },
            {
              "id": "ed0ae7de-b9c3-4ad6-82d4-d288b22c06d7",
              "name": "image_base_url",
              "type": "string",
              "value": "i.redd.it"
            },
            {
              "id": "5c6cd357-d78b-4b40-acc6-9d3ba966ea5f",
              "name": "subreddits_array",
              "type": "array",
              "value": "=[\n  'subreddit1',\n  'subreddit2',\n  'subreddit3'\n]"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ae4f40b1-2401-4d90-a454-79e60e39ea6d",
      "name": "Loop Posts",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -672,
        256
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "9494edb5-de72-409b-ac68-64c9039098da",
      "name": "Is a new image?",
      "type": "n8n-nodes-base.if",
      "position": [
        224,
        464
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "cfd7c29e-864b-4241-a089-b633eac3fef1",
              "operator": {
                "type": "string",
                "operation": "notExists",
                "singleValue": true
              },
              "leftValue": "={{ $('Search image in drive').item.json.id }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "44c886f4-09ac-46e9-8e9d-eb9751337fc8",
      "name": "Download image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        448,
        464
      ],
      "parameters": {
        "url": "={{ $('Image variables').item.json.image_url }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file",
              "outputPropertyName": "image"
            }
          }
        },
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "image/webp,image/apng,image/*,*/*;q=0.8"
            }
          ]
        },
        "nodeCredentialType": "redditOAuth2Api"
      },
      "credentials": {
        "redditOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "131453d7-6485-419b-afb7-a59f68719625",
      "name": "Upload image to drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        672,
        528
      ],
      "parameters": {
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1fslVa4PawdpJv7t7OSqtOts4BDDGsUVv",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1fslVa4PawdpJv7t7OSqtOts4BDDGsUVv",
          "cachedResultName": "teste memes"
        },
        "inputDataFieldName": "image"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "0e0a5979-4f79-4471-a5e7-f5d115239280",
      "name": "Image variables",
      "type": "n8n-nodes-base.set",
      "position": [
        -224,
        384
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "21de95d6-92b3-467b-9a7f-90aa256d99d2",
              "name": "image_url",
              "type": "string",
              "value": "={{ $json.url }}"
            },
            {
              "id": "4a6236f2-dd29-49dd-a10b-bf2f1b7fef09",
              "name": "image_name",
              "type": "string",
              "value": "={{ $json.url.split(\"/\")[3] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "2df122fc-8687-4a1e-af60-f78355f9e9f2",
      "name": "Search image in drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        0,
        384
      ],
      "parameters": {
        "limit": 1,
        "filter": {
          "folderId": {
            "__rl": true,
            "mode": "list",
            "value": "1fslVa4PawdpJv7t7OSqtOts4BDDGsUVv",
            "cachedResultUrl": "https://drive.google.com/drive/folders/1fslVa4PawdpJv7t7OSqtOts4BDDGsUVv",
            "cachedResultName": "teste memes"
          },
          "whatToSearch": "files"
        },
        "options": {},
        "resource": "fileFolder",
        "queryString": "={{ $json.image_name }}"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3,
      "alwaysOutputData": true
    },
    {
      "id": "23e525af-815f-4fe6-b50f-43820ffb5050",
      "name": "Keep only images",
      "type": "n8n-nodes-base.filter",
      "position": [
        -896,
        256
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "47d10e15-795b-449a-ac76-262b0850ae3d",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.url.split(\"/\")[2] }}",
              "rightValue": "={{ $('Settings').item.json.image_base_url }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "140b6db8-d088-4429-bbe1-03c01cccbe31",
      "name": "Get Reddit posts",
      "type": "n8n-nodes-base.reddit",
      "position": [
        -1120,
        256
      ],
      "parameters": {
        "filters": {
          "category": "new"
        },
        "operation": "getAll",
        "subreddit": "={{ $('Get random subreddit').item.json.subreddit }}"
      },
      "credentials": {
        "redditOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "81ad2196-6e73-4464-94ad-e546dd620337",
      "name": "Get random subreddit",
      "type": "n8n-nodes-base.code",
      "position": [
        -1344,
        256
      ],
      "parameters": {
        "jsCode": "const subreddits = $input.first().json.subreddits_array\nconst randomIndex = Math.floor(Math.random() * subreddits.length)\nconst subreddit = subreddits[randomIndex]\n\nreturn [{ json: { subreddit } }]"
      },
      "typeVersion": 2
    },
    {
      "id": "189789a1-9107-4055-8f4f-c8440f461b12",
      "name": "Wait between requests",
      "type": "n8n-nodes-base.wait",
      "position": [
        -448,
        384
      ],
      "parameters": {
        "amount": "={{ $('Settings').item.json.wait_in_seconds }}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "28fac7ac-64d4-4b46-91c6-5ddc270ba863",
      "name": "Keep only new images",
      "type": "n8n-nodes-base.filter",
      "position": [
        -448,
        96
      ],
      "parameters": {
        "options": {
          "ignoreCase": false
        },
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "baa17736-88f3-43d4-9642-94b8b06c9e18",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.createdTime }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2,
      "alwaysOutputData": true
    },
    {
      "id": "2d9d65fe-45cf-46d9-872d-393f5e5229b2",
      "name": "Have new images?",
      "type": "n8n-nodes-base.if",
      "position": [
        -16,
        96
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "d04db27a-065b-47c3-aec6-1b144f3621e8",
              "operator": {
                "type": "array",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.new_images }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "866be212-97a2-4121-9208-9245fe0a8d8a",
      "name": "Aggregate new images",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        -224,
        96
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "new_images"
      },
      "typeVersion": 1
    },
    {
      "id": "b353f3c6-a1ea-4759-9616-00567be7c5d0",
      "name": "Notify on Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        224,
        0
      ],
      "parameters": {
        "text": "={{ $json.new_images.length }} new images downloaded from Reddit",
        "chatId": "={{ $('Settings').item.json.telegram_chat_id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "a27568e7-2e17-44f0-a6e9-61017565926f",
      "name": "Send no new images text",
      "type": "n8n-nodes-base.telegram",
      "position": [
        224,
        176
      ],
      "parameters": {
        "text": "=No new images downloaded from Reddit",
        "chatId": "={{ $('Settings').item.json.telegram_chat_id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e2974ffa-3942-444b-bde3-30881e1c9675",
      "name": "Cron",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -2016,
        256
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d2eb37ad-0c06-4e9a-acb4-4a79d93d54c4",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2480,
        -320
      ],
      "parameters": {
        "width": 400,
        "height": 736,
        "content": "## \ud83d\udd04 How It Works\n\nWorkflow execution flow:\n\n1. \ud83d\udd50 Cron trigger starts the process\n2. \ud83c\udfb2 Randomly selects a subreddit from your list\n3. \ud83d\udce5 Fetches latest 30 posts from 'new' category\n4. \ud83d\uddbc\ufe0f Filters posts to keep only i.redd.it images\n5. \ud83d\udd0d Checks Google Drive for existing images\n6. \u2b07\ufe0f Downloads only new/unseen images\n7. \ud83d\udce4 Uploads new images to specified Drive folder\n8. \ud83d\udcf1 Sends Telegram notification with results\n\n\u26a1 **Smart duplicate prevention saves bandwidth!**\n\n## \ud83d\udd10 Required Credentials\n\nSet up these credential connections:\n\n**1\ufe0f\u20e3 Reddit OAuth2 API:**\n\u2022 Create Reddit app at reddit.com/prefs/apps\n\u2022 Use 'script' type application\n\u2022 Note Client ID and Secret\n\n**2\ufe0f\u20e3 Google Drive OAuth2:**\n\u2022 Enable Google Drive API in Google Cloud Console\n\u2022 Create OAuth2 credentials\n\u2022 Set appropriate scopes for file upload\n\n**3\ufe0f\u20e3 Telegram Bot API:**\n\u2022 Create bot via @BotFather on Telegram\n\u2022 Get bot token and your chat ID\n\u2022 Test with /start command"
      },
      "typeVersion": 1
    },
    {
      "id": "afd62df4-fc7b-41a9-9aa0-16808d05a7ab",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2064,
        -320
      ],
      "parameters": {
        "width": 272,
        "height": 112,
        "content": "# \ud83d\udccc Follow me:\n## [LinkedIn](https://www.linkedin.com/in/vikthyr)"
      },
      "typeVersion": 1
    },
    {
      "id": "314b4db5-4261-4395-b071-5cb7be9395c2",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1840,
        -96
      ],
      "parameters": {
        "color": 7,
        "width": 432,
        "height": 512,
        "content": "## \u2699\ufe0f Configuration Settings\n\nUpdate these variables in the Settings node:\n\n\ud83d\udd27 **Required Configuration:**\n\u2022 `telegram_chat_id`: Your Telegram chat ID for notifications\n\u2022 `subreddits_array`: List of subreddits to monitor\n  Example: `['memes', 'funny', 'pics']`\n\n\u23f1\ufe0f **Optional Settings:**\n\u2022 `wait_in_seconds`: Delay between requests (0.1s default)\n\u2022 `image_base_url`: Reddit image domain (i.redd.it)\n\n\ud83d\udca1 **Tip:** Keep wait time low but respect Reddit's rate limits!"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "7f64bba8-8e4f-48f5-9411-e8618d8ff587",
  "connections": {
    "Cron": {
      "main": [
        [
          {
            "node": "Settings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Settings": {
      "main": [
        [
          {
            "node": "Get random subreddit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Posts": {
      "main": [
        [
          {
            "node": "Keep only new images",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait between requests",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download image": {
      "main": [
        [
          {
            "node": "Upload image to drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Image variables": {
      "main": [
        [
          {
            "node": "Search image in drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is a new image?": {
      "main": [
        [
          {
            "node": "Download image",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Reddit posts": {
      "main": [
        [
          {
            "node": "Keep only images",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Have new images?": {
      "main": [
        [
          {
            "node": "Notify on Telegram",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send no new images text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Keep only images": {
      "main": [
        [
          {
            "node": "Loop Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate new images": {
      "main": [
        [
          {
            "node": "Have new images?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get random subreddit": {
      "main": [
        [
          {
            "node": "Get Reddit posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Keep only new images": {
      "main": [
        [
          {
            "node": "Aggregate new images",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search image in drive": {
      "main": [
        [
          {
            "node": "Is a new image?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload image to drive": {
      "main": [
        [
          {
            "node": "Loop Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait between requests": {
      "main": [
        [
          {
            "node": "Image variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}