{"workflow":{"id":14298,"name":"Monitor Reddit keyword trends and email reports with Apify","views":0,"recentViews":0,"totalViews":0,"createdAt":"2026-03-24T16:24:28.712Z","description":"**📺 Full walkthrough video: https://www.youtube.com/watch?v=Me4d4BILvHk**\n\n## What it does\nThis workflow automatically monitors trending content on Reddit using keywords you define. It scrapes the most engaging posts, calculates an engagement score based on upvotes and comments, ranks content in a leaderboard, and delivers a professional HTML email dashboard — while storing historical data in a structured table for long-term trend tracking.\n\nNo manual research. No tab switching. Just the top-performing Reddit content in your inbox, automatically.\n\n## Who's it for\nSocial media managers, content creators, brand managers, marketing teams, and agencies who need to track keyword performance and trending Reddit content for competitive analysis, content inspiration, and community discovery.\n\n## How it works\nThe workflow runs a full scraping cycle for each keyword in your list:\n\n- **Reddit Monitoring**: Searches top posts by keyword with upvotes and comment data\n- **Engagement Scoring**: Ranks content based on upvotes and comments\n- **Email Report**: Delivers a formatted HTML dashboard with clickable links to original posts\n- **Data Storage**: Pushes all results into a DataTable for historical tracking and trend analysis\n\n## Requirements\n\n- Apify account (free tier works — no recurring cost)\n- Gmail account for report delivery\n- n8n instance (cloud or self-hosted)\n- Reddit Scraper Lite: `trudax~reddit-scraper-lite`\n\n## How to set up\n\n### Step 1: Configure Apify credentials\n- Set up Apify API authentication in n8n\n- Ensure access to the Reddit scraper: `trudax~reddit-scraper-lite`\n- Install the Apify community node: https://docs.apify.com/platform/integrations/n8n\n\n### Step 2: Add your keywords\nOpen the **\"Query social media\"** DataTable and add one keyword per row. The Loop Over Query node automatically runs a full Reddit scraping cycle for every keyword — no limit on the number of keywords.\n\n### Step 3: Configure search parameters\n\nReddit:\n- Search terms via `searches` array\n- Sort: `top` (alternatives: hot, new, relevance)\n- Time period: `month` (alternatives: hour, day, week, year, all)\n- Limits: maxItems 50, maxPostCount 25\n\n### Step 4: Set up email reporting\n- Configure Gmail OAuth2 credentials in n8n\n- Update the recipient email address in the **Send a message** node\n- Customize subject and styling as needed\n\n### Step 5: Schedule the workflow\nAdd a Schedule Trigger to run the workflow automatically — daily, weekly, or at any interval that suits your monitoring needs.\n\n## Engagement scoring methodology\n\n**Reddit**\n`Score = (upvotes × 1) + (comments × 2)`\nComments weighted higher as they indicate deeper community engagement.\n\n### Performance levels\n- **High**: Score ≥ 10,000 — viral or highly engaging content\n- **Medium**: Score ≥ 1,000 — solid engagement, worth monitoring\n- **Low**: Score &lt; 1,000 — baseline engagement\n\n## Results & dashboard\n\nThe automated email report includes:\n- **Reddit leaderboard**: Top 10 posts ranked by engagement score\n- **Per-post detail**: Subreddit, content preview, score, level, and direct link to original post\n- **Historical DataTable**: One row per post with keyword, score, date — queryable over time\n\n## How to customize\n\n### Keyword targeting\n- Add as many keywords as needed — one row per keyword in the DataTable\n- Use brand names, product names, competitor terms, or niche subreddit topics\n- Adjust for seasonal trends or campaign periods\n\n### Scoring adjustments\nModify the Code node to:\n- Change metric multipliers based on your priorities\n- Add recency bonuses for fresher content\n- Filter out low-quality or spam content\n\n### Reporting enhancements\n- Add multiple email recipients\n- Export results to Google Sheets or Airtable\n- Set alert thresholds for high-performing content\n- Connect to Slack or Teams for real-time notifications\n\n## Use cases\n\n**Brand & competitive monitoring**\nTrack brand mentions and competitor content performance on Reddit simultaneously.\n\n**Content strategy**\nIdentify top-performing posts, discover effective subreddits, and spot emerging trends before they peak.\n\n**Community discovery**\nFind the most active communities in your niche and evaluate engagement based on real performance data.\n\n**Campaign tracking**\nMonitor keyword campaigns and measure share of voice over time.\n\n## Limitations\n\n- Subject to Apify scraper quotas (free tier: ~$5 credit/month included)\n- Some private or restricted content may not be accessible\n- Dependent on third-party scraper availability and maintenance","workflow":{"meta":{"instanceId":"393ca9e36a1f81b0f643c72792946a5fe5e49eb4864181ba4032e5a408278263"},"nodes":[{"id":"8253a240-ad37-4216-863d-3060e87fecae","name":"Loop Over Reddit Queries","type":"n8n-nodes-base.splitInBatches","position":[1456,1152],"parameters":{"options":{}},"typeVersion":3},{"id":"2abb82bf-b2bb-4e94-b5c4-055019dc04a9","name":"Sort Reddit Posts by Score","type":"n8n-nodes-base.code","notes":"Sorts posts","position":[1920,1152],"parameters":{"jsCode":"// Code pour nœud Code n8n - Classement Reddit avec output simplifié\n\n// Récupérer les données d'entrée\nconst items = $input.all();\n\n// Filtrer uniquement les posts (exclure les commentaires)\nconst posts = items.filter(item => item.json.dataType === 'post');\n\n// Calculer le score pour chaque post\nconst postsWithScore = posts.map(item => {\n  const post = item.json;\n  \n  // Calcul du score : 1 point par upvote + 2 points par commentaire\n  const upvoteScore = (post.upVotes || 0) * 1;\n  const commentScore = (post.numberOfComments || 0) * 2\n    ;\n  const totalScore = upvoteScore + commentScore;\n  \n  return {\n    json: {\n      url: post.url,\n      title: post.title || \"Pas de titre\",\n      body: post.body || \"Pas de contenu\",\n      score: totalScore,\n      // Données détaillées pour debug (optionnel)\n      details: {\n        upvotes: post.upVotes || 0,\n        comments: post.numberOfComments || 0,\n        community: post.communityName,\n        timestamp: post.createdAt\n      }\n    }\n  };\n});\n\n// Trier par score décroissant\nconst sortedPosts = postsWithScore.sort((a, b) => b.json.score - a.json.score);\n\n// Prendre les 10 meilleurs\nconst top10Posts = sortedPosts.slice(0, 10);\n\n// Ajouter un rang à chaque post\nconst rankedPosts = top10Posts.map((post, index) => ({\n  json: {\n    rank: index + 1,\n    url: post.json.url,\n    title: post.json.title,\n    body: post.json.body,\n    score: post.json.score\n  }\n}));\n\n// Log pour debug\nconsole.log(`🏆 TOP 10 POSTS REDDIT - Score = (upvotes×1) + (commentaires×2)`);\nconsole.log(`────────────────────────────────────────────────────────────`);\n\nrankedPosts.forEach((post, index) => {\n  const p = post.json;\n  const shortTitle = p.title.length > 60 ? p.title.substring(0, 60) + '...' : p.title;\n  const shortBody = p.body.length > 80 ? p.body.substring(0, 80) + '...' : p.body;\n  \n  console.log(`${p.rank}. Score: ${p.score}`);\n  console.log(`   URL: ${p.url}`);\n  console.log(`   Titre: \"${shortTitle}\"`);\n  console.log(`   Contenu: \"${shortBody}\"`);\n  console.log(`   ────────────────────────────────────────────────────────`);\n});\n\nconsole.log(`\\n📊 Analysé ${posts.length} posts au total`);\n\n// Retourner les résultats avec le format demandé\nreturn rankedPosts;"},"notesInFlow":true,"typeVersion":2},{"id":"5164bd2a-5164-4e78-86c6-4c8c59cfadd5","name":"Reddit Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[976,1152],"parameters":{"rule":{"interval":[{}]}},"typeVersion":1.2},{"id":"d15af1fa-c841-4758-8e56-ac08281e101c","name":"Get Reddit Query Rows","type":"n8n-nodes-base.dataTable","position":[1184,1152],"parameters":{"operation":"get","returnAll":true,"dataTableId":{"__rl":true,"mode":"list","value":"BYMzHVIbNU0mmvAZ","cachedResultUrl":"/projects/oTpNUA7ZOCuhiQA0/datatables/BYMzHVIbNU0mmvAZ","cachedResultName":"Query social media"}},"typeVersion":1},{"id":"9000ea56-c59b-44de-93c3-c477013d0369","name":"Send Reddit Report Email","type":"n8n-nodes-base.gmail","notes":"Send dahsboard with top 10 of the most engaging post ","position":[2384,1152],"webhookId":"57a6f413-f0fa-4e3b-8576-96fce6d1a87f","parameters":{"sendTo":"user@example.com","message":"=<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Trends Social Media - {{ $('Loop Over Reddit Queries').first().json.Query }}</title>\n    <style>\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n        body {\n            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n            line-height: 1.6;\n            color: #333;\n            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n            min-height: 100vh;\n            padding: 20px;\n        }\n\n        .newsletter-container {\n            max-width: 1200px;\n            margin: 0 auto;\n            background: white;\n            border-radius: 20px;\n            overflow: hidden;\n            box-shadow: 0 20px 40px rgba(0,0,0,0.1);\n        }\n\n        .header {\n            background: linear-gradient(135deg, #ff6b6b, #ee5a24);\n            color: white;\n            padding: 40px 30px;\n            text-align: center;\n        }\n\n        .header h1 {\n            font-size: 2.8em;\n            margin-bottom: 10px;\n            font-weight: 700;\n        }\n\n        .header p {\n            font-size: 1.2em;\n            opacity: 0.9;\n            margin-bottom: 15px;\n        }\n\n        .keyword-badge {\n            display: inline-block;\n            background: rgba(255,255,255,0.2);\n            color: white;\n            padding: 8px 20px;\n            border-radius: 20px;\n            font-size: 1em;\n            font-weight: 600;\n            backdrop-filter: blur(10px);\n        }\n\n        .stats-overview {\n            display: grid;\n            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n            gap: 20px;\n            padding: 30px;\n            background: #f8f9fa;\n        }\n\n        .stat-card {\n            background: white;\n            padding: 20px;\n            border-radius: 15px;\n            text-align: center;\n            box-shadow: 0 5px 15px rgba(0,0,0,0.08);\n            border-left: 4px solid;\n        }\n\n        .stat-card.high { border-left-color: #ff4757; }\n        .stat-card.medium { border-left-color: #ffa502; }\n        .stat-card.low { border-left-color: #70a1ff; }\n\n        .stat-number {\n            font-size: 2.5em;\n            font-weight: bold;\n            margin-bottom: 5px;\n        }\n\n        .stat-label {\n            color: #666;\n            font-size: 0.9em;\n            text-transform: uppercase;\n            letter-spacing: 1px;\n        }\n\n        .table-container {\n            margin: 30px;\n            background: white;\n            border-radius: 15px;\n            overflow: hidden;\n            box-shadow: 0 10px 25px rgba(0,0,0,0.1);\n        }\n\n        .table-header {\n            background: linear-gradient(135deg, #2c3e50, #34495e);\n            color: white;\n            padding: 25px 30px;\n            text-align: center;\n        }\n\n        .table-title {\n            font-size: 1.8em;\n            font-weight: 600;\n            margin-bottom: 5px;\n        }\n\n        .table-subtitle {\n            opacity: 0.8;\n            font-size: 1em;\n        }\n\n        .trends-table {\n            width: 100%;\n            border-collapse: collapse;\n            font-size: 0.95em;\n        }\n\n        .trends-table th {\n            background: #f8f9fa;\n            padding: 15px 12px;\n            text-align: left;\n            font-weight: 600;\n            color: #555;\n            border-bottom: 2px solid #dee2e6;\n            text-transform: uppercase;\n            font-size: 0.8em;\n            letter-spacing: 0.5px;\n        }\n\n        .trends-table td {\n            padding: 15px 12px;\n            border-bottom: 1px solid #eee;\n            vertical-align: middle;\n            text-align: center;\n        }\n\n        .trends-table td:nth-child(3),\n        .trends-table td:nth-child(4) {\n            text-align: left;\n        }\n\n        .trends-table tr:nth-child(even) {\n            background-color: #f8f9fa;\n        }\n\n        .trends-table tr:hover {\n            background-color: #e3f2fd;\n            transform: scale(1.01);\n            transition: all 0.2s ease;\n        }\n\n        .rank-number {\n            font-weight: bold;\n            font-size: 1.2em;\n            color: #2c3e50;\n        }\n\n        .rank-number.top3 {\n            color: #ff6b6b;\n            font-size: 1.4em;\n        }\n\n        .source-badge {\n            padding: 6px 12px;\n            border-radius: 20px;\n            font-size: 0.8em;\n            font-weight: 600;\n            text-transform: uppercase;\n            letter-spacing: 0.5px;\n        }\n\n        .source-badge.tiktok {\n            background: #ff0050;\n            color: white;\n        }\n\n        .source-badge.reddit {\n            background: #ff4500;\n            color: white;\n        }\n\n        .source-badge.instagram {\n            background: #e4405f;\n            color: white;\n        }\n\n        .level-badge {\n            padding: 4px 10px;\n            border-radius: 15px;\n            font-size: 0.75em;\n            font-weight: 600;\n            text-transform: uppercase;\n        }\n\n        .level-badge.high {\n            background: #ff4757;\n            color: white;\n        }\n\n        .level-badge.medium {\n            background: #ffa502;\n            color: white;\n        }\n\n        .level-badge.low {\n            background: #70a1ff;\n            color: white;\n        }\n\n        .content-text {\n            max-width: 250px;\n            overflow: hidden;\n            text-overflow: ellipsis;\n            white-space: nowrap;\n            color: #555;\n            line-height: 1.4;\n        }\n\n        .author-link {\n            color: #667eea;\n            text-decoration: none;\n            font-weight: 600;\n        }\n\n        .author-link:hover {\n            text-decoration: underline;\n        }\n\n        .score-number {\n            font-weight: bold;\n            color: #2c3e50;\n            font-size: 1.1em;\n        }\n\n        .footer {\n            text-align: center;\n            padding: 30px;\n            background: #f8f9fa;\n            color: #666;\n            border-top: 1px solid #eee;\n        }\n\n        .footer p {\n            margin-bottom: 10px;\n        }\n\n        .date-info {\n            font-size: 0.9em;\n            color: #888;\n        }\n\n        @media (max-width: 768px) {\n            .newsletter-container {\n                margin: 10px;\n                border-radius: 15px;\n            }\n            \n            .header {\n                padding: 30px 20px;\n            }\n            \n            .header h1 {\n                font-size: 2.2em;\n            }\n            \n            .table-container {\n                margin: 20px;\n                overflow-x: auto;\n            }\n            \n            .trends-table {\n                min-width: 800px;\n            }\n            \n            .stats-overview {\n                padding: 20px;\n                grid-template-columns: 1fr;\n            }\n        }\n    </style>\n</head>\n<body>\n    <div class=\"newsletter-container\">\n        <!-- Header -->\n        <header class=\"header\">\n            <h1>📊 Récapitulatif par Hashtag</h1>\n            <p>Scores totaux par réseau social</p>\n        </header>\n\n        <!-- Hashtag Summary Table -->\n        <section class=\"table-container\" style=\"margin: 30px 30px 0 30px;\">\n            <table class=\"trends-table\">\n                <thead>\n                    <tr>\n                        <th>Hashtag</th>\n                        <th>TikTok</th>\n                        <th>Reddit</th>\n                        <th>Instagram</th>\n                        <th>Score Total</th>\n                    </tr>\n                </thead>\n                <tbody>\n                    <tr>\n                        <td>\n                            <span style=\"font-weight: bold; color: #ff6b6b; font-size: 1.1em;\">#{{ $('Loop Over Reddit Queries').first().json.Query }}</span>\n                        </td>\n                        <td>\n                            <span class=\"score-number\">{{ $('Rank Reddit Posts1').all().filter(item => item.json.source === 'TikTok').reduce((sum, item) => sum + item.json.score, 0).toLocaleString('fr-FR') }}</span>\n                        </td>\n                        <td>\n                            <span class=\"score-number\">{{ $('Rank Reddit Posts1').all().filter(item => item.json.source === 'Reddit').reduce((sum, item) => sum + item.json.score, 0).toLocaleString('fr-FR') }}</span>\n                        </td>\n                        <td>\n                            <span class=\"score-number\">{{ $('Rank Reddit Posts1').all().filter(item => item.json.source === 'Instagram').reduce((sum, item) => sum + item.json.score, 0).toLocaleString('fr-FR') }}</span>\n                        </td>\n                        <td>\n                            <span class=\"score-number\" style=\"color: #ff6b6b; font-size: 1.2em;\">{{ $('Rank Reddit Posts1').all().reduce((sum, item) => sum + item.json.score, 0).toLocaleString('fr-FR') }}</span>\n                        </td>\n                    </tr>\n                </tbody>\n            </table>\n        </section>\n\n        <!-- Main Table -->\n        <section class=\"table-container\">\n            <div class=\"table-header\">\n                <div class=\"table-title\">#{{ $('Loop Over Reddit Queries').first().json.Query }}</div>\n                <div class=\"table-subtitle\"></div>\n            </div>\n            \n            <table class=\"trends-table\">\n                <thead>\n                    <tr>\n                        <th>Rang</th>\n                        <th>Source</th>\n                        <th>Auteur</th>\n                        <th>Contenu</th>\n                        <th>Score</th>\n                        <th>Level</th>\n                    </tr>\n                </thead>\n                <tbody>\n                    {{ $('Rank Reddit Posts1').all().map(item => `\n                        <tr onclick=\"window.open('${item.json.url}', '_blank')\" style=\"cursor: pointer;\">\n                            <td>\n                                <span class=\"rank-number ${item.json.rank <= 3 ? 'top3' : ''}\">${item.json.rank}</span>\n                            </td>\n                            <td>\n                                <span class=\"source-badge ${item.json.source.toLowerCase()}\">${item.json.source}</span>\n                            </td>\n                            <td>\n                                <a href=\"${item.json.url}\" target=\"_blank\" class=\"author-link\">${item.json.author}</a>\n                            </td>\n                            <td>\n                                <div class=\"content-text\" title=\"${item.json.content}\">${item.json.content}</div>\n                            </td>\n                            <td>\n                                <span class=\"score-number\">${item.json.score.toLocaleString('fr-FR')}</span>\n                            </td>\n                            <td>\n                                <span class=\"level-badge ${item.json.level.toLowerCase()}\">${item.json.level}</span>\n                            </td>\n                        </tr>\n                    `).join('') }}\n                </tbody>\n            </table>\n        </section>\n\n        <!-- Footer -->\n        <footer class=\"footer\">\n            <p><strong>Social Media Trends Dashboard</strong></p>\n            <p>Analyse automatisée des contenus par mot-clé</p>\n            <div class=\"date-info\">\n                <p>Généré le {{ new Date().toLocaleDateString('fr-FR', { \n                    year: 'numeric', \n                    month: 'long', \n                    day: 'numeric', \n                    hour: '2-digit', \n                    minute: '2-digit' \n                }) }}</p>\n            </div>\n        </footer>\n    </div>\n</body>\n</html>","options":{},"subject":"Social media monitoring"},"credentials":{"gmailOAuth2":{"id":"credential-id","name":"Allan Growth AI"}},"executeOnce":true,"notesInFlow":true,"typeVersion":2.1},{"id":"06bb249b-5562-4dd6-a6c3-d4c5229af21a","name":"Push Results to Data Table","type":"n8n-nodes-base.dataTable","position":[2384,1024],"parameters":{"columns":{"value":{"url":"={{ $json.url }}","Date":"={{ $now.toISO() }}","rank":"={{ $json.rank }}","level":"={{ $json.level }}","score":"={{ $json.score }}","author":"={{ $json.author }}","source":"={{ $json.source }}","content":"={{ $json.content }}","keyword":"={{ $json.keyword }}"},"schema":[{"id":"rank","type":"number","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"rank","defaultMatch":false},{"id":"keyword","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"keyword","defaultMatch":false},{"id":"source","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"source","defaultMatch":false},{"id":"author","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"author","defaultMatch":false},{"id":"content","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"content","defaultMatch":false},{"id":"score","type":"number","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"score","defaultMatch":false},{"id":"level","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"level","defaultMatch":false},{"id":"url","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"url","defaultMatch":false},{"id":"Date","type":"dateTime","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Date","defaultMatch":false}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"dataTableId":{"__rl":true,"mode":"list","value":"75Jvx9ALCoEGcdwY","cachedResultUrl":"/projects/oTpNUA7ZOCuhiQA0/datatables/75Jvx9ALCoEGcdwY","cachedResultName":"Trend Social media"}},"typeVersion":1},{"id":"9936958b-5806-4877-9fdb-1577004b1525","name":"Sticky Note13","type":"n8n-nodes-base.stickyNote","position":[368,784],"parameters":{"width":480,"height":896,"content":"## Trend monitoring Reddit\n\n### How it works\n\n1. A schedule trigger fires periodically and retrieves a list of Reddit search queries from a data table.\n2. The workflow loops over each query and sends it to the Apify Reddit scraper API to fetch posts.\n3. Two code nodes sort and rank the scraped Reddit posts based on engagement or relevance.\n4. The ranked results are sent as a Gmail email notification and simultaneously stored back into a data table for record-keeping.\n\n### Setup steps\n\n- - [ ] Configure the **Reddit Schedule Trigger1** with the desired run frequency (e.g. daily, hourly).\n- - [ ] Populate the **Reddit Get row(s)1** data table with the Reddit search queries you want to monitor.\n- - [ ] Add your **Apify API key** to the `Reddit solo get post` HTTP Request node (URL contains the Apify actor endpoint).\n- - [ ] Connect your **Gmail account** credentials to the `Reddit Send a message1` node and set the recipient email address.\n- - [ ] Configure the **Reddot Push to data table1** node to point to the correct data table for storing results.\n\n### Customization\n\nYou can adjust the ranking/sorting logic inside the two code nodes (`Sort Reddit solo` and `Classement Reddit1`) to weight posts by upvotes, comments, recency, or other criteria. The Apify actor parameters in `Reddit solo get post` can be tuned to change the number of posts fetched per query or subreddit scope."},"typeVersion":1},{"id":"f3dafbfd-4379-4a3f-867b-689e1aeeea05","name":"Sticky Note24","type":"n8n-nodes-base.stickyNote","position":[928,992],"parameters":{"color":7,"width":400,"height":320,"content":"## Trigger and fetch queries\n\nA schedule trigger fires the workflow and retrieves the list of Reddit search queries from a data table to process."},"typeVersion":1},{"id":"d7146361-d7dc-4183-9af6-71ac656a50c6","name":"Sticky Note25","type":"n8n-nodes-base.stickyNote","position":[1408,992],"parameters":{"color":7,"width":400,"height":320,"content":"## Loop and scrape Reddit posts\n\nIterates over each query in a batch loop and calls the Apify Reddit scraper API to fetch raw posts for that query."},"typeVersion":1},{"id":"f78712d1-386a-4bf9-bc78-f62a00369154","name":"Sticky Note26","type":"n8n-nodes-base.stickyNote","position":[1872,992],"parameters":{"color":7,"width":416,"height":320,"content":"## Sort and rank results\n\nTwo code nodes process the raw scraped data — first sorting posts into a simplified structure, then applying a full ranking algorithm."},"typeVersion":1},{"id":"f691043b-295a-4b3d-9866-4f295cf194c4","name":"Sticky Note27","type":"n8n-nodes-base.stickyNote","position":[2336,784],"parameters":{"color":7,"height":528,"content":"## Send email and store results\n\nDispatches the ranked Reddit results via Gmail and pushes the data into a storage table for historical tracking."},"typeVersion":1},{"id":"fa2a7763-4c96-4dfe-90b4-3a6576fe7a97","name":"Fetch Reddit Posts via Apify1","type":"n8n-nodes-base.httpRequest","notes":"Post the request on apify","position":[1664,1152],"parameters":{"url":"https://api.apify.com/v2/acts/trudax~reddit-scraper-lite/run-sync-get-dataset-items","method":"POST","options":{},"jsonBody":"={\n  \"searches\": [\"{{ $json.Query }}\"],\n  \"searchPosts\": true,\n  \"searchComments\": false,\n  \"searchCommunities\": false,\n  \"searchUsers\": false,\n  \"sort\": \"top\",\n  \"time\": \"month\",\n  \"maxItems\": 50,\n  \"maxPostCount\": 50,\n  \"maxComments\": 1,\n  \"scrollTimeout\": 40,\n  \"proxy\": {\n    \"useApifyProxy\": true,\n    \"apifyProxyGroups\": [\"RESIDENTIAL\"]\n  }\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","authentication":"predefinedCredentialType","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]},"nodeCredentialType":"apifyApi"},"credentials":{"apifyApi":{"id":"credential-id","name":"Bonus 1"},"httpHeaderAuth":{"id":"credential-id","name":"Apify"}},"executeOnce":false,"notesInFlow":true,"retryOnFail":false,"typeVersion":4.2},{"id":"801f152f-3f86-4fb4-bf50-9226fb4b07ce","name":"Rank Reddit Posts1","type":"n8n-nodes-base.code","notes":"Sorts all posts + give them points depending on their likes + comments","position":[2144,1152],"parameters":{"jsCode":"// Code pour nœud Code n8n - Classement Reddit\n// Récupérer le keyword dynamiquement\nconst keyword = $('Loop Over Reddit Queries').first().json.Query;\n\n// Récupérer les données du nœud précédent\nconst redditData = $('Sort Reddit Posts by Score').all();\n\nconsole.log(`📥 Récupération des données:`);\nconsole.log(`- Reddit: ${redditData.length} posts`);\n\n// Fonction pour déterminer le level basé sur le score\nfunction getLevel(score) {\n  if (score >= 10000) return 'High';\n  if (score >= 1000) return 'Medium';\n  return 'Low';\n}\n\n// Fonction pour extraire le subreddit\nfunction getAuthor(item) {\n  const redditMatch = item.url.match(/\\/r\\/([^\\/]+)/);\n  return redditMatch ? `r/${redditMatch[1]}` : 'user_inconnu';\n}\n\n// Transformer les données Reddit\nconst redditPosts = redditData.map(item => ({\n  json: {\n    source: 'Reddit',\n    keyword: keyword,\n    author: getAuthor(item.json),\n    content: (item.json.title || 'Pas de titre').substring(0, 50) + '...',\n    score: item.json.score,\n    level: getLevel(item.json.score),\n    url: item.json.url,\n    originalRank: item.json.rank\n  }\n}));\n\n// Trier par score décroissant\nconst sortedPosts = redditPosts.sort((a, b) => b.json.score - a.json.score);\n\n// Ajouter le rang unifié\nconst rankedPosts = sortedPosts.map((post, index) => ({\n  json: {\n    ...post.json,\n    rank: index + 1,\n    date: new Date().toISOString().split('T')[0]\n  }\n}));\n\n// Prendre le top 15\nconst topPosts = rankedPosts.slice(0, 15);\n\n// Statistiques par niveau\nconst stats = {\n  total: topPosts.length,\n  byLevel: {\n    High: topPosts.filter(p => p.json.level === 'High').length,\n    Medium: topPosts.filter(p => p.json.level === 'Medium').length,\n    Low: topPosts.filter(p => p.json.level === 'Low').length\n  }\n};\n\n// Log pour debug\nconsole.log(`🏆 TOP ${topPosts.length} POSTS REDDIT - Mot-clé: \"${keyword}\"`);\nconsole.log(`────────────────────────────────────────────────────────────────────────────────`);\n\ntopPosts.forEach((post) => {\n  const p = post.json;\n  console.log(`${p.rank}. ${p.author} - Score: ${p.score.toLocaleString()} (${p.level})`);\n  console.log(`   Contenu: \"${p.content}\"`);\n  console.log(`   URL: ${p.url}`);\n  console.log(`   ────────────────────────────────────────────────────────────────────────────`);\n});\n\nconsole.log(`\\n📊 STATISTIQUES:`);\nconsole.log(`Total: ${stats.total} posts`);\nconsole.log(`Par niveau: High(${stats.byLevel.High}) | Medium(${stats.byLevel.Medium}) | Low(${stats.byLevel.Low})`);\n\n// Retourner le classement\nreturn topPosts;"},"notesInFlow":true,"typeVersion":2}],"pinData":{},"connections":{"Rank Reddit Posts1":{"main":[[{"node":"Send Reddit Report Email","type":"main","index":0},{"node":"Push Results to Data Table","type":"main","index":0}]]},"Get Reddit Query Rows":{"main":[[{"node":"Loop Over Reddit Queries","type":"main","index":0}]]},"Reddit Schedule Trigger":{"main":[[{"node":"Get Reddit Query Rows","type":"main","index":0}]]},"Loop Over Reddit Queries":{"main":[[],[{"node":"Fetch Reddit Posts via Apify1","type":"main","index":0}]]},"Send Reddit Report Email":{"main":[[{"node":"Loop Over Reddit Queries","type":"main","index":0}]]},"Sort Reddit Posts by Score":{"main":[[{"node":"Rank Reddit Posts1","type":"main","index":0}]]},"Fetch Reddit Posts via Apify1":{"main":[[{"node":"Sort Reddit Posts by Score","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":13,"nodeTypes":{"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.gmail":{"count":1},"n8n-nodes-base.dataTable":{"count":2},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-base.splitInBatches":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Growth AI","username":"growthai","bio":"n8n automation expert eliminating repetitive tasks for businesses. Specializing in native API integrations (HubSpot, Pipedrive, Notion, Gmail, Slack) with custom workflows tailored to your tech stack. GDPR-compliant European hosting with AI agents. From lead qualification to content generation - I architect battle-tested automations that run 24/7. Your manual routines disappear without pain.\n","verified":true,"links":["https://growth-ai.fr/"],"avatar":"https://gravatar.com/avatar/e93e43e1e71be1aee89eb849a5396be04c95604624b155a29298b9209e2534c3?r=pg&d=retro&size=200"},"nodes":[{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":356,"icon":"file:gmail.svg","name":"n8n-nodes-base.gmail","codex":{"data":{"alias":["email","human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"transform\"]","defaults":{"name":"Gmail"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"},"displayName":"Gmail","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1315,"icon":"fa:table","name":"n8n-nodes-base.dataTable","codex":{"data":{"alias":["data","table","knowledge","data table","table","sheet","database","data base","mysql","postgres","postgresql","airtable","supabase","noco","notion"],"details":"Data table","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/"}]},"categories":["Core Nodes","Development"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\",\"transform\"]","defaults":{"name":"Data table"},"iconData":{"icon":"table","type":"icon"},"displayName":"Data table","typeVersion":1,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":32,"name":"Market Research"},{"id":49,"name":"AI Summarization"}],"image":[]}}