{"workflow":{"id":13818,"name":"Monitor news sentiment trends with GPT-4o-mini, MrScraper, Slack and Notion","views":27,"recentViews":0,"totalViews":27,"createdAt":"2026-03-03T02:16:01.476Z","description":"## Description\n\nThis n8n template automatically monitors news sources daily, analyzes article sentiment using AI, and delivers structured intelligence reports to your team — all without any manual reading. It uses MrScraper to discover and extract articles, GPT-4o-mini to score sentiment and flag urgent issues, and delivers results to both Notion (for archiving) and Slack (for real-time alerts and daily digests).\n\nWhether you're tracking brand reputation, monitoring a competitor, or staying on top of industry trends, this workflow turns the open web into a fully automated radar system that runs every morning before your team starts their day.\n\n---\n\n## How It Works\n\n* **Phase 1 – Trigger & Config:** A Schedule Trigger fires daily at 8AM. The workflow reads your list of target news source URLs from a Google Sheet, then loops through each source one by one.\n* **Phase 2 – URL Discovery:** For each news source, the Map Agent crawls the page and extracts individual article URLs. URLs are filtered using include patterns to keep only actual article links, deduplicated, and capped at your configured `maxArticles` limit.\n* **Phase 3 – Article Extraction:** Each article URL is processed by the General Agent, which extracts the full content including title, body text, author, and publication date. Articles with fewer than 50 words or that don't mention your defined brand/topic keywords are automatically filtered out and skipped.\n* **Phase 4 – AI Sentiment Analysis:** Each relevant article is sent to GPT-4o-mini with a structured prompt. The model returns a complete JSON analysis including sentiment label (positive/neutral/negative), a sentiment score from -1 to 1, a 2–3 sentence summary, key topics, tone classification, the most impactful quote, and whether the article requires an urgent response.\n* **Phase 5 – Storage & Reporting:** Every analyzed article is saved as a page in your Notion database with full metadata. If an article is flagged as action-required, an immediate Slack alert is fired. At the end of each run, a Daily Digest is compiled with sentiment breakdowns, average scores, flagged items, and top article summaries — then posted to your Slack channel.\n\n---\n\n## How to Set Up\n\n1. **Create 2 scrapers in your MrScraper account:**\n   * Map Agent Scraper (for discovering article URLs from news pages)\n   * General Agent Scraper (for extracting full article content: title, body, date, author)\n   * Copy the `scraperId` for each.\n\n2. **Enable AI Scraper API access** in your MrScraper account settings.\n\n3. **Prepare your Google Sheet:**\n   * Create a sheet with a `Domain` column listing the news source URLs you want to monitor\n   * Add as many sources as needed — each will be looped through on every run\n\n4. **Add your credentials in n8n:**\n   * MrScraper API token\n   * OpenAI API key\n   * Slack OAuth\n   * Notion OAuth\n\n5. **Configure your Notion database** with these properties:\n   * Title, Source URL, Sentiment (select), Sentiment Score (number), Tone (select), Key Topics (text), Summary (text), Action Required (checkbox), Action Reason (text), Published At (text), Scraped At (text)\n\n6. **Update the workflow settings:**\n   * Set your `brandName` and `brandKeywords` (comma-separated keywords to filter relevant articles)\n   * Set your `mapScraperId` and `generalScraperId`\n   * Set your `slackChannel` name (e.g. `#brand-monitoring`)\n   * Set your `notionDatabaseId` (from your Notion database URL)\n   * Set `maxArticles` to control how many articles are processed per source per run\n\n7. **Adjust the Schedule Trigger** to your preferred run time (default: every 24 hours)\n\n8. **Customize the topic/brand keywords** inside the `Pick Best Content + Filter Irrelevant` code node to match your monitoring targets\n\n---\n\n## Requirements\n\n* **MrScraper** account with API access enabled\n* **OpenAI** account (GPT-4o-mini used by default)\n* **Slack** workspace with OAuth connected\n* **Notion** workspace with a database set up and OAuth connected\n* **Google Sheets** (OAuth2 connected) for storing your list of news sources\n\n---\n\n## Good to Know\n\n* GPT-4o-mini is used by default to keep costs low — processing costs approximately $0.0001 per article. Switch to GPT-4o only if you need higher analysis quality.\n* The workflow has two distinct Slack outputs: an immediate urgent alert fires the moment a high-priority article is detected, while the Daily Digest summarizes the entire run at the end.\n* Articles that are too short (under 50 words) or don't match your defined keywords are silently skipped — the workflow never breaks even if a source returns no usable content.\n* Sentiment scores range from -1.0 (strongly negative) to 1.0 (strongly positive), making it easy to track trends over time in Notion or a connected dashboard.\n\n---\n\n## Customising This Workflow\n\n* **Track multiple brands or topics:** Duplicate the keyword filter and AI prompt steps to run parallel analysis pipelines for different subjects in a single workflow.\n* **Add email reporting:** Insert a Gmail node after the Slack Daily Digest step to also send the daily summary as a formatted email report.\n* **Connect to a dashboard:** Pipe the Notion database into a tool like Google Looker Studio or Retool to visualize sentiment trends over time with charts and filters.\n* **Adjust scrape frequency:** Change the Schedule Trigger from daily to hourly for breaking news monitoring, or weekly for slower trend tracking.\n* **Expand news sources:** Add Google News search URLs (e.g. `https://news.google.com/search?q=YOUR_BRAND`) to your input sheet for broader coverage beyond specific news sites.","workflow":{"id":"Oe9Mqmy5E2qtce6V","meta":{"instanceId":"ff80ff7708e50014ab81fa837934b47761ca37bb76e027238bca430a67bf5090","templateCredsSetupCompleted":true},"name":"Sentiment & Trend Radar Monitoring","tags":[],"nodes":[{"id":"4eb997f2-e6bc-47ad-82a8-379c37e49b30","name":"Schedule Trigger (Daily 8AM)","type":"n8n-nodes-base.scheduleTrigger","position":[9552,3408],"parameters":{"rule":{"interval":[{"field":"hours","hoursInterval":24}]}},"typeVersion":1.2},{"id":"038f79fe-d0eb-4e11-9d7f-7625888eb167","name":"Loop Each News Source","type":"n8n-nodes-base.splitInBatches","position":[10000,3408],"parameters":{"options":{"reset":false}},"typeVersion":3},{"id":"6c52dfa0-0381-42cb-bf42-1d573228b2d1","name":"MrScraper - Discover Article URLs","type":"n8n-nodes-mrscraper.mrscraper","position":[10224,3280],"parameters":{"url":"=// Input Your url (required)","limit":10,"operation":"mapAgent","scraperId":"=// Input Your scraperId from mrscraper (required)","requestOptions":{},"excludePatterns":"// Input Your Exclude Pattern (Optional)","includePatterns":"// Input Your Include Pattern (optional)"},"credentials":{"mrscraperApi":{"id":"l5klfCQPVgZ8liKu","name":"Walmart Kiss"}},"retryOnFail":true,"typeVersion":1,"waitBetweenTries":3000},{"id":"be2601e1-2ee2-4024-b31e-12a6a95ce483","name":"Loop Each Article URL","type":"n8n-nodes-base.splitInBatches","position":[10672,3392],"parameters":{"options":{"reset":false}},"typeVersion":3},{"id":"623e9df1-880e-4775-8793-4822f1551199","name":"MrScraper - Extract Article Content","type":"n8n-nodes-mrscraper.mrscraper","position":[10928,3280],"parameters":{"url":"=// Input Your url (required)","operation":"generalAgent","scraperId":"=// Input Your scraperId from Mrscraper (required)","requestOptions":{}},"credentials":{"mrscraperApi":{"id":"l5klfCQPVgZ8liKu","name":"Walmart Kiss"}},"retryOnFail":true,"typeVersion":1,"continueOnFail":true},{"id":"d125b8df-1d90-4976-a6f2-62b2d631d193","name":"Pick Best Content + Filter Irrelevant","type":"n8n-nodes-base.code","position":[11152,3280],"parameters":{"jsCode":"// Get input\nconst item = $input.item.json;\n\n// Handle possible nesting:\n// item.json.data.data\n// item.json.data.data.data\nlet rootData =\n  item?.data?.data?.data ||\n  item?.data?.data ||\n  item?.data ||\n  {};\n\n// Extract main fields\nconst title = rootData.title || rootData.headline || '';\nconst article =\n  rootData.article ||\n  rootData.content ||\n  rootData.text ||\n  rootData.body ||\n  rootData.description ||\n  '';\n\n// Calculate wordCount (like your example)\nconst wordCount =\n  article\n    ?.split(/\\s+/)\n    .filter(w => w.length > 0).length || 0;\n\n// Inject wordCount into rootData (like isPaywalled)\nrootData.wordCount = wordCount;\n\n// Combine text for relevance checking\nconst combinedText = (title + ' ' + article).toLowerCase();\n\n// You can replace this with dynamic keywords if needed\nconst TopicBrandKeywords = ['Hukum', 'iran', 'education']; \n\nconst isRelevant = TopicBrandKeywords.some(keyword =>\n  combinedText.includes(keyword.toLowerCase())\n);\n\n// Skip if not relevant OR too short\nif (!isRelevant || wordCount < 50) {\n  return [{\n    json: {\n      skip: true,\n      reason: !isRelevant\n        ? 'Not relevant to topic/brand'\n        : 'Content too short',\n      url: rootData.url || item?.data?.url || '',\n      wordCount\n    }\n  }];\n}\n\n// Return enriched rootData\nreturn [{\n  json: {\n    ...rootData,\n    wordCount,\n    skip:false\n  }\n}];"},"typeVersion":2},{"id":"c7ee7399-a11c-459a-a786-9d4e378b2134","name":"Keep Only Relevant Articles","type":"n8n-nodes-base.if","position":[11344,3280],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"filter-001","operator":{"type":"boolean","operation":"false","singleValue":true},"leftValue":"={{ $json.skip }}","rightValue":"100"}]}},"typeVersion":2.3},{"id":"3ae96703-6dbb-49e3-a25f-bb841d2275d5","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[11584,3424],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o-mini","cachedResultName":"gpt-4o-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"zIW6DcoL8jhB82nz","name":"OpenAi account 2"}},"typeVersion":1.3},{"id":"b217216c-e5c8-49e3-bdbf-ab96aa1641cd","name":"Sentiment & Summary AI Agent","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[11568,3264],"parameters":{"text":"=Analyze the following news article about the topic / brand \"Law\".\n\nArticle Title: {{ $json.title }}\nPublished: {{ $json.publishedAt }}\nAuthor: {{ $json.author }}\nSource URL: {{ $json.sourceUrl }}\n\nArticle Content:\n{{ $json.content }}\n\nReturn your result in this exact JSON structure:\n\n{\n\"title\",\n\"published_date\",\n\"author\",\n\"source_url\",\n\"summary\",\n\"sentiment\": \"positive | neutral | negative\",\n\"sentiment_score\": number,\n\"summary\": \"string (max 3 sentences)\",\n\"key_topics\": [\"law\"],\n\"tone\": \"formal | critical | alarming | investigative | neutral\",\n\"action_required\": true or false,\n\"action_reason\": \"string\",\n\"quote\": \"string (most important sentence from article)\"\n}\n\nRemember:\n\nOutput must be valid JSON only.\n\nAll fields are required.\n\nNever return null.\n\nNever return markdown.","messages":{"messageValues":[{"message":"You are a news sentiment analysis engine.  You MUST return ONLY valid JSON. Do NOT include markdown. Do NOT include explanations. Do NOT wrap the response in backticks. Do NOT add extra text.  Always return all fields in the schema. If information is missing, use default values.  Sentiment rules:  positive → good news, legal success, improvement  negative → scandal, legal case, corruption, controversy, crime escalation  neutral → factual, informational, balanced  Sentiment score rules:  Range from -1 to 1  Negative = below 0  Neutral = 0 -elopen Positive = above 0"}]},"promptType":"define"},"typeVersion":1.5},{"id":"a7f6a4ec-77fd-468f-a908-cef3041466c1","name":"Parse AI Response & Format Output","type":"n8n-nodes-base.code","position":[11920,3264],"parameters":{"jsCode":"// Parse the AI response and merge with article metadata\nconst item = $input.item.json;\nconst articleMeta = $('Keep Only Relevant Articles').item.json;\n\nlet analysis = {};\ntry {\n  const raw = item.text || item.response || item.output || '';\n  // Strip any accidental markdown fences\n  const cleaned = raw.replace(/```json|```/g, '').trim();\n  analysis = JSON.parse(cleaned);\n} catch (e) {\n  analysis = {\n    sentiment: 'neutral',\n    sentiment_score: 0,\n    summary: 'Could not parse AI response.',\n    key_topics: [],\n    brand_mentions: 0,\n    tone: 'neutral',\n    action_required: false,\n    action_reason: '',\n    quote: ''\n  };\n}\n\n// Sanitise types\nconst sentiment = String(analysis.sentiment || 'neutral').toLowerCase();\nconst sentiment_score = parseFloat(analysis.sentiment_score) || 0;\nconst action_required = analysis.action_required === true || analysis.action_required === 'true';\n\n// Emoji map for sentiment\nconst emojiMap = { positive: '🟢', neutral: '🟡', negative: '🔴' };\nconst sentimentEmoji = emojiMap[sentiment] || '⚪';\n\nconst sentimentUpper = sentiment.toUpperCase();\n\nreturn [{\n  json: {\n    // Article info\n    title: articleMeta.title,\n    sourceUrl: articleMeta.sourceUrl,\n    publishedAt: articleMeta.publishedAt,\n    author: articleMeta.author,\n    brandName: articleMeta.brandName,\n    runDate: articleMeta.runDate,\n    slackChannel: articleMeta.slackChannel,\n    notionDatabaseId: articleMeta.notionDatabaseId,\n    // AI analysis\n    sentiment,\n    sentiment_score,\n    sentimentEmoji,\n    summary: analysis.summary || '',\n    key_topics: (analysis.key_topics || []).join(', '),\n    tone: analysis.tone || 'neutral',\n    action_required,\n    action_reason: analysis.action_reason || '',\n    quote: analysis.quote || '',\n    // Formatted for Slack — uses sentimentUpper variable (no Jinja filter)\n    slackMessage: `${sentimentEmoji} *${sentimentUpper}* | ${articleMeta.title}\\n${analysis.summary}\\n🔗 ${articleMeta.sourceUrl}`\n  }\n}];"},"typeVersion":2},{"id":"a05e5f63-b8a6-4147-8114-a92962937eec","name":"Needs Urgent Alert?","type":"n8n-nodes-base.if","position":[12144,3296],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"urgent-001","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.action_required }}"}]}},"typeVersion":2.3},{"id":"420367fa-cdc7-4691-b593-356f4f963bef","name":"Slack - Urgent Alert","type":"n8n-nodes-base.slack","position":[12592,3248],"webhookId":"ab6451a2-9c25-4c68-a40d-788f3a958de2","parameters":{"text":"=🚨 *URGENT BRAND ALERT* — Action Required\n\n{{ $json.sentimentEmoji }} *Sentiment:* {{ $json.sentiment.toUpperCase() }} (Score: {{ $json.sentiment_score }})\n*Article:* {{ $json.title }}\n*Tone:* {{ $json.tone }}\n\n*Summary:*\n{{ $json.summary }}\n\n*Why action is needed:*\n{{ $json.action_reason }}\n\n*Key Topics:* {{ $json.key_topics }}\n*Quote:* _\"{{ $json.quote }}\"_\n\n🔗 <{{ $json.sourceUrl }}|Read full article>\n_Scraped: {{ $json.publishedAt }}_","select":"channel","channelId":{"__rl":true,"mode":"name","value":"=// input your channel here"},"otherOptions":{"mrkdwn":true}},"typeVersion":2.3},{"id":"c6987d4c-dcd0-4b2a-b3e3-fa098ea44206","name":"Notion - Save Article Analysis","type":"n8n-nodes-base.notion","position":[12752,3360],"parameters":{"title":"={{ $json.title }}","options":{},"resource":"databasePage","databaseId":{"__rl":true,"mode":"id","value":"={{ $json.notionDatabaseId }}"},"propertiesUi":{"propertyValues":[{"key":"Source URL","urlValue":"={{ $json.sourceUrl }}"},{"key":"Sentiment","selectValue":"={{ $json.sentiment }}"},{"key":"Sentiment Score","numberValue":"={{ $json.sentiment_score }}"},{"key":"Tone","selectValue":"={{ $json.tone }}"},{"key":"Key Topics"},{"key":"Summary"},{"key":"Brand Mentions","numberValue":"={{ $json.brand_mentions }}"},{"key":"Action Required","checkboxValue":"={{ $json.action_required }}"},{"key":"Action Reason"},{"key":"Published At"},{"key":"Scraped At"}]}},"typeVersion":2.2,"continueOnFail":true},{"id":"450b484b-451b-4c7b-8926-6bc91914f62d","name":"Build Daily Digest Summary","type":"n8n-nodes-base.code","position":[12288,3392],"parameters":{"jsCode":"// Aggregate all processed articles into a single daily digest\nconst allItems = $input.all();\n\nif (!allItems || allItems.length === 0) {\n  return [{\n    json: {\n      digestMessage: `📰 *Daily Sentiment Report*\\n\\nNo articles were processed today.`,\n      total: 0,\n      counts: { positive: 0, neutral: 0, negative: 0 },\n      avgScore: \"0.00\",\n      actionCount: 0\n    }\n  }];\n}\n\nconst articles = allItems.map(i => i.json);\n\n// Count sentiments\nconst counts = { positive: 0, neutral: 0, negative: 0 };\nfor (const a of articles) {\n  const s = (a.sentiment || \"neutral\").toLowerCase();\n  if (counts[s] !== undefined) {\n    counts[s]++;\n  }\n}\n\nconst total = articles.length;\n\nconst avgScore = (\n  articles.reduce((sum, a) => sum + (parseFloat(a.sentiment_score) || 0), 0) \n  / total\n).toFixed(2);\n\nconst actionItems = articles.filter(a => a.action_required === true);\n\n// Use current date automatically\nconst runDate = new Date().toISOString();\n\n// Build Slack digest\nlet digest = `📰 *Daily Sentiment Report*\\n`;\ndigest += `📅 ${runDate.slice(0, 10)}\\n\\n`;\ndigest += `*Overview:* ${total} articles analyzed\\n`;\ndigest += `🟢 Positive: ${counts.positive} | 🟡 Neutral: ${counts.neutral} | 🔴 Negative: ${counts.negative}\\n`;\ndigest += `📊 Avg Sentiment Score: ${avgScore}\\n\\n`;\n\nif (actionItems.length > 0) {\n  digest += `⚠️ *${actionItems.length} item(s) need attention:*\\n`;\n  for (const a of actionItems) {\n    digest += `• ${a.title} — ${a.action_reason}\\n`;\n    digest += `  🔗 ${a.sourceUrl}\\n`;\n  }\n  digest += \"\\n\";\n}\n\ndigest += `*Top Articles Today:*\\n`;\nfor (const a of articles.slice(0, 5)) {\n  const summaryPreview = (a.summary || \"\").slice(0, 120);\n  digest += `${a.sentimentEmoji || \"⚪\"} ${a.title}\\n`;\n  digest += `  _${summaryPreview}..._\\n`;\n  digest += `  🔗 ${a.sourceUrl}\\n\\n`;\n}\n\nreturn [{\n  json: {\n    digestMessage: digest,\n    total,\n    counts,\n    avgScore,\n    actionCount: actionItems.length,\n    runDate\n  }\n}];"},"typeVersion":2},{"id":"98e87aff-dc32-4d11-b24b-38e6be975ca5","name":"Slack - Daily Digest","type":"n8n-nodes-base.slack","position":[12512,3392],"webhookId":"cf622ee2-42be-4450-9949-59331c9f8a51","parameters":{"text":"={{ $json.digestMessage }}","select":"channel","channelId":{"__rl":true,"mode":"name","value":"={{ $json.slackChannel }}"},"otherOptions":{"mrkdwn":true}},"typeVersion":2.3},{"id":"c1dcafb0-0e37-455b-b676-62c1c306c74e","name":"Sticky Note - Setup","type":"n8n-nodes-base.stickyNote","position":[8704,3232],"parameters":{"width":720,"height":1104,"content":"## Phase 0 — Setup & Configuration\n\n### Before Running This Workflow\n\n**A) MrScraper Setup (required)**\nCreate TWO scrapers in your MrScraper dashboard:\n\n1. **Map Agent Scraper** — discovers article URLs from news/search pages\n   - Copy its `scraperId` → paste into `mapScraperId` in Workflow Config\n\n2. **General Agent Scraper** — extracts full article content (title, body, date, author)\n   - Target fields: `title`, `content` or `text` or `markdown`, `published_at`, `author`\n   - Copy its `scraperId` → paste into `generalScraperId` in Workflow Config\n3. **Enable AI Scraper API access** in your MrScraper account (so n8n can run scrapers via API).\n\n\n**B) Credentials Needed in n8n**\n- `MrScraper` API credential → connect to both MrScraper nodes.\n- `OpenAI` API credential → connect to OpenAI Chat Model.\n- `Slack` OAuth credential → connect to both Slack nodes.\n- `Notion` OAuth credential → connect to Notion node.\n\n**C) Workflow Config Node — Fill in these values:**\n- `brandName`: your brand (e.g. `Anthropic`)\n- `brandKeywords`: comma-separated keywords (e.g. `Anthropic, Claude, claude.ai`)\n- `newsUrls`: comma-separated news search URLs to scrape\n- `mapScraperId` + `generalScraperId`: from MrScraper\n- `slackChannel`: Slack channel name (e.g. `#brand-monitoring`)\n- `notionDatabaseId`: your Notion database ID (from the URL)\n- `maxArticles`: max articles to analyze per run (default: 10)\n\n**D) Notion Database Setup**\nCreate a Notion database with these properties (optional):\n- `Title` (title)\n- `Source URL` (URL)\n- `Sentiment` (select: positive / neutral / negative)\n- `Sentiment Score` (number)\n- `Tone` (select)\n- `Key Topics` (rich text)\n- `Summary` (rich text)\n- `Brand Mentions` (number)\n- `Action Required` (checkbox)\n- `Action Reason` (rich text)\n- `Published At` (rich text)\n- `Scraped At` (rich text)"},"typeVersion":1},{"id":"a886e19a-e2cf-4844-bd79-11600c3e7267","name":"Sticky Note - Phase 1","type":"n8n-nodes-base.stickyNote","position":[9504,3584],"parameters":{"color":4,"width":432,"height":336,"content":"### What To Do\n* Set the workflow to run **daily at 8:00 AM** (or adjust to your preferred time).\n* Configure all global variables:\n  brand name, keywords, scraper IDs,\n  Slack channel, and Notion database ID.\n* Provide the list of news source URLs.\n* Ensure the URLs are split into individual items\n  so they can be processed in parallel.\n\n### Key Settings to Change\n* **Trigger time** → edit the *Schedule* node.\n* **Brand & integration config** → edit the **Workflow Config** node.\n"},"typeVersion":1},{"id":"c3d30579-51ce-43c3-a5ac-d0794fbeb6ed","name":"Sticky Note - Phase 2","type":"n8n-nodes-base.stickyNote","position":[9952,3568],"parameters":{"color":2,"width":880,"height":384,"content":"### What To Do\n1. Run **Map Agent (Rerun)** using your domain as input (Please enter the maximum depth, maximum pages, and include pattern (includePattern) as needed.)\n2. Extract and clean the URLs:\n   * Remove tag, category, and author pages\n   * Remove non-http(s) links\n   * Deduplicate results\n   * Limit the output to `maxArticles` per run\n3. Add a fallback condition:\n   * If no valid URLs are found, return a *skip item* instead of stopping the workflow.\n\n### Tips\n* Use Google News search URLs for broader coverage, for example:\n  [https://news.google.com/search?q=YOUR_BRAND](https://news.google.com/search?q=YOUR_BRAND) or YOUR_TOPIC\n* You can also define specific URL patterns from the target news site to avoid collecting unwanted links.\n* Adjust `maxArticles` to balance speed and processing cost.\n"},"typeVersion":1},{"id":"a0749d5e-270f-4144-afbe-f6029968c9a2","name":"Sticky Note - Phase 3","type":"n8n-nodes-base.stickyNote","position":[10864,3568],"parameters":{"color":5,"width":640,"height":416,"content":"### What To Do\n1. For each URL, call the **General Agent (Rerun)** using the scraperId from the mrscraper platform that was previously created to scrape each article URL\n   and extract the full content (title, body, date, author).\n2. You can adjust TopicBrandKeywords to ensure the article is relevant to your topic / brand\n3. Skip any article with fewer than 50 word.\n4. Skip any article that does not mention your defined brand keywords.\n5. Ensure all `skip=true` items continue through the workflow safely (do not break execution).\n\n### Expected Output Per Article (adjust according to the scraper output you have already built)\n* `title`\n* `article` (trimmed to a maximum of 4000 characters)\n* `publishedAt`\n* `author`\n* `sourceUrl`\n* Include the configuration data so it can be used in the LLM step.\n"},"typeVersion":1},{"id":"84e904ab-db14-4dd4-a3f5-7ad09a47afb3","name":"Sticky Note - Phase 4","type":"n8n-nodes-base.stickyNote","position":[11520,3568],"parameters":{"color":6,"width":580,"height":544,"content":"### What To Do\n1. Send each processed article to **GPT-4o-mini**\n   using a structured analysis prompt.\n2. Define the **system prompt directly inside the OpenAI Chat Model node**\n   to ensure `chainLlm` correctly passes the instructions.\n3. Configure the model to return structured JSON containing:\n   * `sentiment` (positive / neutral / negative)\n   * `sentiment_score` (-1.0 to 1.0)\n   * `summary` (2–3 sentences)\n   * `key_topics` (array of detected topics)\n   * `tone` (praise / criticism / neutral / etc.)\n   * `action_required` (true if the brand should respond)\n   * `action_reason` (explanation if action is needed)\n   * `quote` (most impactful quote from the article)\n4. Update the Slack formatting logic:\n   * Remove the `| upper` Jinja filter\n   * Use JavaScript `.toUpperCase()` instead\n5. Add a condition:\n   * If `action_required = true`, send an **immediate Slack alert**.\n\n### Cost Tip\n* Use `gpt-4o-mini` for low-cost processing (around ~$0.0001 per article).\n* Switch to `gpt-4o` only if higher analysis quality is required.\n"},"typeVersion":1},{"id":"95419708-8e4a-44e1-94b4-d5e31359a755","name":"Sticky Note - Phase 5","type":"n8n-nodes-base.stickyNote","position":[12112,3568],"parameters":{"color":3,"width":804,"height":624,"content":"### What To Do\n1. Configure **Notion** to save every analyzed article\n   as a new database page with complete metadata.\n   * Ensure all Notion property `textValue` fields are properly mapped and populated.\n2. Build a **Daily Digest** aggregation step that:\n   * Counts total analyzed articles\n   * Calculates sentiment breakdown (positive / neutral / negative)\n   * Computes average sentiment score\n   * Lists all flagged action items\n   * Selects the top 5 article summaries\n   * Connects to the **Loop Each Article URL → done output (output 0)** to ensure proper execution order.\n3. Configure **Slack Daily Digest** to send the final summary report\n   to your Slack channel at the end of the workflow.\n   * Add an empty-run fallback so the digest still sends\n     even if 0 articles were processed.\n\n### Slack Alert Types\n*  **Urgent Alert** — Trigger immediately when\n  `action_required = true`.\n*  **Daily Digest** — Send once at the end of the run\n  with a complete summary of all processed articles.\n\n### Customize\n* Update Notion database properties directly in the Notion node.\n* Modify Slack message formatting inside the Code node.\n* Optionally add a Gmail node after the Slack Digest step\n  to send the report via email.\n"},"typeVersion":1},{"id":"ab9057d6-3a66-4a47-94dd-7fc431a7e4c4","name":"Get Target News Website","type":"n8n-nodes-base.googleSheets","position":[9776,3408],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1-NGutUhBF7I2pFEzPqsK2IN_d74v8CoKEsC48t750VA/edit#gid=0","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"list","value":"1-NGutUhBF7I2pFEzPqsK2IN_d74v8CoKEsC48t750VA","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1-NGutUhBF7I2pFEzPqsK2IN_d74v8CoKEsC48t750VA/edit?usp=drivesdk","cachedResultName":"Target Website"}},"credentials":{"googleSheetsOAuth2Api":{"id":"HofjgH0Hk3EpOn57","name":"Google Sheets account - Riandra"}},"typeVersion":4.7},{"id":"3dff21e9-7d4c-4996-b88a-bdaec891a894","name":"Sticky Note - Phase ","type":"n8n-nodes-base.stickyNote","position":[9504,3312],"parameters":{"color":4,"width":432,"height":256,"content":"##  Phase 1 — Trigger & Config"},"typeVersion":1},{"id":"c69f77d7-2eec-45c0-86f8-5f3521d48d26","name":"Sticky Note - Phase 6","type":"n8n-nodes-base.stickyNote","position":[9952,3216],"parameters":{"color":2,"width":880,"height":336,"content":"##  Phase 2 — URL Discovery"},"typeVersion":1},{"id":"d0c6aa04-718f-485a-b6c6-81236ee2ca35","name":"Sticky Note - Phase 7","type":"n8n-nodes-base.stickyNote","position":[10864,3216],"parameters":{"color":5,"width":640,"height":336,"content":"##  Phase 3 — Article Extraction"},"typeVersion":1},{"id":"076b8730-b119-4a97-9c4d-4dfb66304df1","name":"Sticky Note - Phase 8","type":"n8n-nodes-base.stickyNote","position":[11520,3216],"parameters":{"color":6,"width":580,"height":336,"content":"## Phase 4 — AI Sentiment Analysis\n"},"typeVersion":1},{"id":"cb91a350-fff8-4351-af78-c26c8bbddbb8","name":"Sticky Note - Phase 9","type":"n8n-nodes-base.stickyNote","position":[12112,3216],"parameters":{"color":3,"width":804,"height":336,"content":"## Phase 5 — Storage & Reporting"},"typeVersion":1},{"id":"767918c2-8a6c-44f7-ae3c-bb59b2d06d20","name":"Extract URLs","type":"n8n-nodes-base.code","position":[10448,3280],"parameters":{"jsCode":"// Get data from previous node\nconst inputData = $input.all();\n\n// Default empty array\nlet urls = [];\n\n// Extract URLs safely (correct nested path)\nif (\n  inputData.length > 0 &&\n  inputData[0].json?.data?.data?.urls &&\n  Array.isArray(inputData[0].json.data.data.urls)\n) {\n  urls = inputData[0].json.data.data.urls;\n}\n\n// Return each URL as separate item\nreturn urls.map((url, index) => ({\n  json: {\n    url,\n    index: index + 1\n  }\n}));"},"typeVersion":2}],"active":false,"pinData":{},"settings":{"binaryMode":"separate","availableInMCP":false,"executionOrder":"v1"},"versionId":"426e85af-2aaf-425d-976a-8ab5e7bfdc13","connections":{"Extract URLs":{"main":[[{"node":"Loop Each Article URL","type":"main","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"Sentiment & Summary AI Agent","type":"ai_languageModel","index":0}]]},"Needs Urgent Alert?":{"main":[[{"node":"Slack - Urgent Alert","type":"main","index":0}],[{"node":"Notion - Save Article Analysis","type":"main","index":0}]]},"Slack - Urgent Alert":{"main":[[{"node":"Notion - Save Article Analysis","type":"main","index":0}]]},"Loop Each Article URL":{"main":[[{"node":"Loop Each News Source","type":"main","index":0}],[{"node":"MrScraper - Extract Article Content","type":"main","index":0}]]},"Loop Each News Source":{"main":[[{"node":"Build Daily Digest Summary","type":"main","index":0}],[{"node":"MrScraper - Discover Article URLs","type":"main","index":0}]]},"Get Target News Website":{"main":[[{"node":"Loop Each News Source","type":"main","index":0}]]},"Build Daily Digest Summary":{"main":[[{"node":"Slack - Daily Digest","type":"main","index":0}]]},"Keep Only Relevant Articles":{"main":[[{"node":"Sentiment & Summary AI Agent","type":"main","index":0}]]},"Schedule Trigger (Daily 8AM)":{"main":[[{"node":"Get Target News Website","type":"main","index":0}]]},"Sentiment & Summary AI Agent":{"main":[[{"node":"Parse AI Response & Format Output","type":"main","index":0}]]},"Notion - Save Article Analysis":{"main":[[{"node":"Loop Each Article URL","type":"main","index":0}]]},"MrScraper - Discover Article URLs":{"main":[[{"node":"Extract URLs","type":"main","index":0}]]},"Parse AI Response & Format Output":{"main":[[{"node":"Needs Urgent Alert?","type":"main","index":0}]]},"MrScraper - Extract Article Content":{"main":[[{"node":"Pick Best Content + Filter Irrelevant","type":"main","index":0}]]},"Pick Best Content + Filter Irrelevant":{"main":[[{"node":"Keep Only Relevant Articles","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":28,"nodeTypes":{"n8n-nodes-base.if":{"count":2},"n8n-nodes-base.code":{"count":4},"n8n-nodes-base.slack":{"count":2},"n8n-nodes-base.notion":{"count":1},"n8n-nodes-base.stickyNote":{"count":11},"n8n-nodes-base.googleSheets":{"count":1},"n8n-nodes-base.splitInBatches":{"count":2},"n8n-nodes-mrscraper.mrscraper":{"count":2},"n8n-nodes-base.scheduleTrigger":{"count":1},"@n8n/n8n-nodes-langchain.chainLlm":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"riandra","username":"riandradiva","bio":"","verified":true,"links":[""],"avatar":"https://gravatar.com/avatar/c085ff3e99cfe2328699b49cb9802f5762a12c94cb8f21692548a0dc0cc6e2e4?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"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-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/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"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/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"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/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"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/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"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/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"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-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"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/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/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"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/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/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"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/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"},{"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.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"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":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"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/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"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/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/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":487,"icon":"file:notion.svg","name":"n8n-nodes-base.notion","codex":{"data":{"resources":{"generic":[{"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 "}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.notion/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/notion/"}]},"categories":["Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"output\"]","defaults":{"name":"Notion"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjU4Mjc2IDYuOTc2NzlDOC44MjA0NyA3Ljk4MjM4IDkuMjg0NzkgNy45MDU2NiAxMS42MDkxIDcuNzUwNTdMMzMuNTIwNiA2LjQzNDg4QzMzLjk4NTMgNi40MzQ4OCAzMy41OTg5IDUuOTcxMjcgMzMuNDQzOSA1Ljg5NDIzTDI5LjgwNDkgMy4yNjM0OEMyOS4xMDc2IDIuNzIyMTMgMjguMTc4NiAyLjEwMjE3IDI2LjM5ODIgMi4yNTcyNkw1LjE4MTE1IDMuODA0NzZDNC40MDczNiAzLjg4MTQ4IDQuMjUyODIgNC4yNjgzNyA0LjU2MDk2IDQuNTc4NDdMNy41ODI3NiA2Ljk3Njc5Wk04Ljg5ODI5IDEyLjA4MzNWMzUuMTM4MUM4Ljg5ODI5IDM2LjM3NzEgOS41MTc0NiAzNi44NDA3IDEwLjkxMSAzNi43NjRMMzQuOTkxOSAzNS4zNzA2QzM2LjM4NjIgMzUuMjkzOSAzNi41NDE1IDM0LjQ0MTcgMzYuNTQxNSAzMy40MzUyVjEwLjUzNTFDMzYuNTQxNSA5LjUzMDE5IDM2LjE1NDkgOC45ODgyOSAzNS4zMDE0IDkuMDY1NjRMMTAuMTM2NyAxMC41MzUxQzkuMjA3OTkgMTAuNjEzMSA4Ljg5ODIxIDExLjA3NzcgOC44OTgyMSAxMi4wODMzSDguODk4MjlaTTMyLjY3MDggMTMuMzJDMzIuODI1MiAxNC4wMTcgMzIuNjcwOCAxNC43MTMzIDMxLjk3MjUgMTQuNzkxN0wzMC44MTIzIDE1LjAyMjlWMzIuMDQzNEMyOS44MDQ5IDMyLjU4NDggMjguODc1OSAzMi44OTQ0IDI4LjEwMTggMzIuODk0NEMyNi44NjI1IDMyLjg5NDQgMjYuNTUyMSAzMi41MDcyIDI1LjYyMzcgMzEuMzQ3NEwxOC4wMzQzIDE5LjQzMjlWMzAuOTYwNUwyMC40MzU5IDMxLjUwMjRDMjAuNDM1OSAzMS41MDI0IDIwLjQzNTkgMzIuODk0NCAxOC40OTgzIDMyLjg5NDRMMTMuMTU2OCAzMy4yMDQyQzEzLjAwMTYgMzIuODk0NCAxMy4xNTY4IDMyLjEyMTQgMTMuNjk4NiAzMS45NjY1TDE1LjA5MjUgMzEuNTgwMlYxNi4zMzg1TDEzLjE1NzIgMTYuMTgzNEMxMy4wMDE5IDE1LjQ4NjQgMTMuMzg4NSAxNC40ODE0IDE0LjQ3MzMgMTQuNDAzNUwyMC4yMDM1IDE0LjAxNzJMMjguMTAxOCAyNi4wODY4VjE1LjQwOTdMMjYuMDg4MSAxNS4xNzg2QzI1LjkzMzUgMTQuMzI2NSAyNi41NTIxIDEzLjcwNzggMjcuMzI2NSAxMy42MzExTDMyLjY3MDggMTMuMzJaTTMuMzk5NzMgMS43MTU5OEwyNS40Njg4IDAuMDkwNzQ1N0MyOC4xNzkgLTAuMTQxNjg4IDI4Ljg3NjMgMC4wMTQwMjQ1IDMwLjU3OTYgMS4yNTEzNUwzNy42MjQzIDYuMjAyNzZDMzguNzg2NyA3LjA1NDIxIDM5LjE3NDIgNy4yODYwMiAzOS4xNzQyIDguMjE0MTlWMzUuMzcwNkMzOS4xNzQyIDM3LjA3MjYgMzguNTU0MiAzOC4wNzkxIDM2LjM4NjUgMzguMjMzMUwxMC43NTc3IDM5Ljc4MDdDOS4xMzA0OSAzOS44NTgzIDguMzU2MDcgMzkuNjI2NCA3LjUwMzkyIDM4LjU0MjZMMi4zMTYwOCAzMS44MTE3QzEuMzg2NTggMzAuNTcyNiAxIDI5LjY0NTcgMSAyOC41NjEzVjQuNDIyODNDMSAzLjAzMTA1IDEuNjIwMTkgMS44NzAwNSAzLjM5OTczIDEuNzE1OThWMS43MTU5OFoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo="},"displayName":"Notion","typeVersion":2,"nodeCategories":[{"id":4,"name":"Productivity"}]},{"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":1123,"icon":"fa:link","name":"@n8n/n8n-nodes-langchain.chainLlm","codex":{"data":{"alias":["LangChain"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Chains","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"Basic LLM Chain","color":"#909298"},"iconData":{"icon":"link","type":"icon"},"displayName":"Basic LLM Chain","typeVersion":2,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":32,"name":"Market Research"},{"id":49,"name":"AI Summarization"}],"image":[]}}