{
  "name": "Build a Reddit no-API weekly digest with ScrapeOps and Google Sheets",
  "nodes": [
    {
      "id": "db080f2b-cb69-4222-84a1-691b012d6bde",
      "name": "Overview (Sticky)",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        -176
      ],
      "parameters": {
        "width": 600,
        "height": 904,
        "content": "# 📰 Reddit Industry Digest (Weekly) → Google Sheets\n\nThis workflow builds a weekly industry digest by collecting top posts from selected subreddits — no Reddit API needed. It scrapes public Reddit pag"
      }
    },
    {
      "id": "6b2932d3-1c23-42d1-8d12-f6bb66f2442e",
      "name": "Section: Trigger & Inputs",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        48
      ],
      "parameters": {
        "width": 436,
        "height": 344,
        "content": "## 1. Trigger & Configuration\nFires weekly and sets runtime config — subreddit list, week range, batch size, and Google Sheet IDs."
      }
    },
    {
      "id": "2f094883-7d84-4677-bc49-ea5b64b8552c",
      "name": "Section: Scrape Listings",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1104,
        48
      ],
      "parameters": {
        "width": 664,
        "height": 344,
        "content": "## 2. Scrape Subreddit Listings\nBatch through each subreddit and scrape the \"Top of Week\" page via [ScrapeOps Proxy](https://scrapeops.io/docs/n8n/proxy-api/) with a polite delay between requests."
      }
    },
    {
      "id": "639b418a-dd27-48c6-9946-525c86f2c3c6",
      "name": "Section: Post Enrichment",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1792,
        48
      ],
      "parameters": {
        "width": 328,
        "height": 344,
        "content": "## 3. Parse Post Metadata\nExtract title, URL, score, comment count, author, and timestamps from listing HTML into structured JSON."
      }
    },
    {
      "id": "b5e1e99e-c8b6-4542-b9b6-0228cce219e0",
      "name": "Parse Listing HTML → Post Metadata",
      "type": "n8n-nodes-base.code",
      "position": [
        1904,
        224
      ]
    },
    {
      "id": "b5ae003d-5943-4e1d-ad00-636b7e5287ae",
      "name": "Section: Post Enrichment1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2144,
        48
      ],
      "parameters": {
        "width": 856,
        "height": 344,
        "content": "## 4. Enrich & Finalize Posts\nFetch each post as JSON to extract `selftext`, merge with listing metadata, and normalize all fields into the final record."
      }
    },
    {
      "id": "692706d5-37e1-43e0-9d53-20165176691a",
      "name": "Section: Post Enrichment2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1264,
        464
      ],
      "parameters": {
        "width": 856,
        "height": 280,
        "content": "## 5. Deduplicate & Save\nCompare against existing Sheet rows by hash and URL, then append only new posts to the `posts` tab."
      }
    },
    {
      "id": "ca7a04f5-3e93-40c7-aafe-db3adf4237b8",
      "name": "Section: Post Enrichment3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2144,
        464
      ],
      "parameters": {
        "width": 856,
        "height": 280,
        "content": "## 6. Weekly Digest & Email\nGenerate topic clusters and top post summaries, write to `weekly_digest` tab, and optionally send by email."
      }
    },
    {
      "id": "fd788a62-92a1-46f8-8d8f-300c67b9028e",
      "name": "Weekly Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        720,
        224
      ]
    },
    {
      "id": "7514a857-699a-40a5-a111-2d32af2cf38a",
      "name": "Configure Subreddits & Week Range",
      "type": "n8n-nodes-base.code",
      "position": [
        944,
        224
      ]
    },
    {
      "id": "a2cba4ba-859a-4af4-85de-ea86979d3393",
      "name": " Split Subreddits Into Batches",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1168,
        224
      ]
    },
    {
      "id": "c501694f-dcf7-4781-a1fc-f5eebd38e5a0",
      "name": "ScrapeOps: Fetch Subreddit Listing",
      "type": "@scrapeops/n8n-nodes-scrapeops.ScrapeOps",
      "position": [
        1408,
        224
      ]
    },
    {
      "id": "68756bd8-82da-4204-b4f7-403d2c1f9c03",
      "name": " Polite Delay (1–3s)",
      "type": "n8n-nodes-base.wait",
      "position": [
        1616,
        224
      ]
    },
    {
      "id": "4aac1636-f65b-4173-91ea-2479bae04379",
      "name": " ScrapeOps: Fetch Post Details (JSON)",
      "type": "@scrapeops/n8n-nodes-scrapeops.ScrapeOps",
      "position": [
        2208,
        224
      ]
    },
    {
      "id": "8a539ed8-a2aa-4bfe-a493-c424ec9b7d39",
      "name": "Extract Selftext & Post Type",
      "type": "n8n-nodes-base.code",
      "position": [
        2432,
        224
      ]
    },
    {
      "id": "4b2b0080-c6b9-4265-883a-821450fbdd04",
      "name": "Merge Post Metadata + Text",
      "type": "n8n-nodes-base.merge",
      "position": [
        2640,
        224
      ]
    },
    {
      "id": "afd98102-216a-46da-b40f-8f22f8132063",
      "name": "Finalize & Normalize Post Fields",
      "type": "n8n-nodes-base.code",
      "position": [
        2848,
        224
      ]
    },
    {
      "id": "d57d918f-c7ef-4ee1-928f-586ec9ad8509",
      "name": "Read Existing Posts from Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1360,
        560
      ]
    },
    {
      "id": "ee1034af-bede-4a50-8b60-76eeb894ad39",
      "name": " Merge Scraped + Existing Posts",
      "type": "n8n-nodes-base.merge",
      "position": [
        1584,
        560
      ]
    },
    {
      "id": "678a0f94-b0e1-464b-8a60-2f1fbc51e771",
      "name": "Deduplicate New Posts",
      "type": "n8n-nodes-base.code",
      "position": [
        1776,
        560
      ]
    },
    {
      "id": "76be0f72-2be0-4b00-9549-18d739d62167",
      "name": "Append New Posts to Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1968,
        560
      ]
    },
    {
      "id": "08ab7fd2-6dd0-4fd1-8df4-9440f0830178",
      "name": "Build Weekly Digest",
      "type": "n8n-nodes-base.code",
      "position": [
        2240,
        544
      ]
    },
    {
      "id": "1532c19d-20d6-4d51-8852-bb8aead8dac2",
      "name": "Append Weekly Digest to Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2512,
        544
      ]
    },
    {
      "id": "bca10483-5886-4c01-9440-f075c658efcc",
      "name": "Send Weekly Digest Email",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2768,
        544
      ]
    }
  ],
  "connections": {
    "Build Weekly Digest": {
      "main": [
        [
          {
            "node": "Append Weekly Digest to Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Deduplicate New Posts": {
      "main": [
        [
          {
            "node": "Append New Posts to Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    " Polite Delay (1–3s)": {
      "main": [
        [
          {
            "node": "Parse Listing HTML → Post Metadata",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Weekly Schedule Trigger": {
      "main": [
        [
          {
            "node": "Configure Subreddits & Week Range",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append New Posts to Sheet": {
      "main": [
        [
          {
            "node": " Split Subreddits Into Batches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Post Metadata + Text": {
      "main": [
        [
          {
            "node": "Finalize & Normalize Post Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Selftext & Post Type": {
      "main": [
        [
          {
            "node": "Merge Post Metadata + Text",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Append Weekly Digest to Sheet": {
      "main": [
        [
          {
            "node": "Send Weekly Digest Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    " Split Subreddits Into Batches": {
      "main": [
        [
          {
            "node": "ScrapeOps: Fetch Subreddit Listing",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Build Weekly Digest",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Existing Posts from Sheet": {
      "main": [
        [
          {
            "node": " Merge Scraped + Existing Posts",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    " Merge Scraped + Existing Posts": {
      "main": [
        [
          {
            "node": "Deduplicate New Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Finalize & Normalize Post Fields": {
      "main": [
        [
          {
            "node": " Merge Scraped + Existing Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Configure Subreddits & Week Range": {
      "main": [
        [
          {
            "node": " Split Subreddits Into Batches",
            "type": "main",
            "index": 0
          },
          {
            "node": "Read Existing Posts from Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ScrapeOps: Fetch Subreddit Listing": {
      "main": [
        [
          {
            "node": " Polite Delay (1–3s)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Listing HTML → Post Metadata": {
      "main": [
        [
          {
            "node": " ScrapeOps: Fetch Post Details (JSON)",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge Post Metadata + Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    " ScrapeOps: Fetch Post Details (JSON)": {
      "main": [
        [
          {
            "node": "Extract Selftext & Post Type",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}