This workflow corresponds to n8n.io template #13042 — we link there as the canonical source.
This workflow follows the Agent → Chainllm recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "svc2vBXpL5OG4kBC",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Create wordpress posts with reddit content via telegram bot & perplexity",
"tags": [
{
"id": "",
"name": "",
"createdAt": "2025-09-09T19:46:50.767Z",
"updatedAt": "2025-09-09T19:46:50.767Z"
}
],
"nodes": [
{
"id": "3c3b181a-1bfa-435d-88cf-29102340b6a3",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
224,
-240
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "0b0c33f8-3c97-4e47-978b-fc0c5d931b1f",
"name": "Generate Article Idea",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
160,
-464
],
"parameters": {
"text": "=You are an AI assistant helping [Your Author Persona]. Your task is to generate exactly 1 article topic idea based solely on the provided Reddit post title from [your niche] communities from here {{ $json.title }} . The topics must be relevant to [your niche], align with the website's focus [article types related to your niche], and avoid any medical advice or unrelated content. Do not include random or fabricated information beyond the scope of the post title. For each post title, output three article topic ideas in a concise, numbered list.\n\nExample: Reddit Post Title: \"[Quote an example of a relevant reddit post title]\" Output:\n\n[Quote a relevant example of required title output]\n\nReddit Post Title: [Insert Reddit Post Title Here] Output: [Article Topic ]\n\n***the output given should not contain \"Reddit Post Title, Output:\"",
"options": {},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "075fb21d-3926-455a-94bd-56793c37b94d",
"name": "Set Topic Data",
"type": "n8n-nodes-base.set",
"position": [
512,
-464
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "33dace77-b226-4c0e-aba2-59cbb48cf615",
"name": "post_id",
"type": "string",
"value": "={{ $node[\"Get Reddit Posts\"].json[\"id\"] }}"
},
{
"id": "476d6fe1-4f71-4a95-8985-03e05a794a41",
"name": "article_topic",
"type": "string",
"value": "={{ $json.output }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "89f08568-0480-4a0c-bb40-f8f1cfdfc54c",
"name": "Telegram Webhook",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-672,
352
],
"parameters": {
"updates": [
"callback_query"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "b90b0be4-23bd-4f8c-adce-3a14c7d2dfe5",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
-224,
448
],
"parameters": {},
"typeVersion": 1
},
{
"id": "64332e4d-956d-4fb5-9e42-abff0a5cd9c5",
"name": "Content Generation",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1248,
160
],
"parameters": {
"text": "=You're [Author's Name] and the info below stated in ## Author writing summary is your writing style.\n\n**Base Context:** {{ $('Research about Approved Topic').item.json.message }}\n**Article Topic:** Topic : {{ $json.text }}\n\n\n**Article Specifications:**\n- Word count: 2000 words\n- Format: HTML (WordPress compatible)\n- Language: Simple, accessible English (understandable by people with limited vocabulary)\n- Tone: Human-written, natural, avoiding over-complex words\n\n# CORE CONCEPTS\n\n## 1. Contextual Framework\n\n### Macro Context\n- **Definition:** Core focus derived from title tag and primary topic\n- **Requirement:** Must dominate main content\n- **Example:** \"Safest Cities in Germany\"\n\n### Micro Context\n- **Definition:** Supplementary sections exploring semantically related subtopics\n- **Requirement:** Stay within broader domain while exploring related angles\n- **Example:** Antonyms like \"Most Dangerous Cities\"\n\n### Contextual Vector\n- **Purpose:** Process search queries to generate prioritized, context-driven questions\n- **Application:** Create hierarchical question structure based on relevance\n\n### Contextual Structure\n- **Elements:** Define content formats (tables, lists)\n- **Specifications:** Rows, columns, pre/post-text, image design, alt tags, statistics/research integration\n\n### Contextual Connection\n- **Focus:** Internal linking strategies\n- **Hierarchy:** Anchor text progression (root \u2192 seed \u2192 node)\n- **Priority:** Relevance-based linking\n\n## 2. Attribute Analysis Framework\n\n### Attribute Prominence\n- **Test:** If removing the attribute changes entity's core identity, it is prominent\n- **Example:** \"Population\" is prominent for \"Germany\" (without it, Germany's country status is negated)\n- **Usage:** Prioritize prominent attributes in foundational content (root articles)\n\n### Attribute Popularity\n- **Definition:** Reflects search demand and user interest\n- **Distinction:** Can be popular even if not essential to entity's definition\n- **Example:** \"Population of Germany\" is popular despite not defining Germany\n- **Usage:** Align content with user intent through popularity metrics\n\n### Attribute Relevance\n- **Definition:** Ties attributes to source context or topical map\n- **Critical Rule:** Even prominent/popular attributes may be irrelevant if disconnected from thematic focus\n- **Example:** \"Football league\" is irrelevant in visa/culture-focused article about Germany\n- **Application:** Map attributes to contextual vectors (e.g., \"population\" to cultural/visa topics)\n\n## 3. Question Generation Methodology\n\n### Question Type Priority Order\n\n1. **Definitional Questions (\"What...\")**\n - **Position:** Start with these\n - **Purpose:** Establish context\n\n2. **Grouping Questions (category-based)**\n - **Position:** Follow definitional questions\n - **Purpose:** Structure information\n\n3. **Comparative Questions (superlatives/comparisons)**\n - **Position:** Mid-content\n - **Purpose:** Highlight distinctions\n\n4. **Boolean Questions (yes/no)**\n - **Position:** Place last\n - **Purpose:** Expand on prior answers or clarify nuances\n\n### Question Priority Hierarchy\n- Prioritize questions tied to unique attributes first\n- Follow with root/rare attributes\n\n## 4. Content Hierarchy and Flow\n\n### Heading Structure\n- **Higher-level headings (H1/H2):** Set theme for subsections (H3)\n- **Requirement:** Ensure seamless transitions between sections\n- **Goal:** Maintain thematic proximity and logical flow\n\n### Proximity Management\n- Maintain tight contextual relationships between terms across headings\n- Boost coherence and SEO relevance\n\n### Contextual Balance\n- Distribute content space logically\n- Avoid topic overextension\n- Ensure each section enriches overall context without redundancy\n- Maintain semantic connections between headers and body content\n- Prevent context fragmentation\n\n### Question-Based Content Structuring\n- Generate long-form questions combining:\n - Knowledge domains\n - Contextual domains\n - Multiple layers\n- Optimize for chat-like searches and response generation\n- **Example:** \"What are the most useful fruits for children with anxiety under six?\"\n\n## 5. Authority Building\n\n### Competitive Outranking\n- Structure content to surpass authoritative sources\n- Combine: query insights, contextual depth, semantic relevance\n\n### Classification Signals\n- Leverage context terms to align with search engine authority metrics\n- Focus on E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness)\n\n## 6. Contextual Vector Structure\n\n### Order Requirements\n- **Structure:** Start with predicate (action verb) followed by noun\n- **Example:** \"Improves Physical Performance\"\n\n### Grouping by Sub-Topics\n- Categorize related nouns under sub-topics\n- **Example Physical Health:** \"energy,\" \"oxygen cells\"\n- **Example Psychological:** \"brain function,\" \"depression\"\n\n### Hierarchical Sectioning with Colons\n- Use colons to denote sections where subsequent text completes prior context\n- **Example:** \"Physical Performance: Enhances endurance...\"\n\n## 7. Heading Hierarchy and Semantic Structure\n\n### Hierarchical Requirements\n- Use incremental, ordered heading levels (H1, H2, H3, etc.)\n- Create contextual hierarchy\n- Maintain logical flow\n\n### Heading Logic\n- **Root/Grouper Questions:** Guide macro-context (e.g., \"How does X work?\")\n- **Sub-questions:** Follow with deeper exploration (e.g., \"What are the benefits?\")\n\n### Hierarchy Breaking\n- Breaking hierarchy (e.g., skipping H3) may still rank if:\n - Page authority is high, OR\n - No competing content exists\n\n## 8. Content Structure and SEO\n\n### Contextual Vectors\n- Link related queries into cohesive narrative\n- **Example:** \"water intoxication,\" \"how much water is too much\"\n\n### Contextual Bridges\n- Transition logically between sections:\n - Questions \u2192 Definitions \u2192 Symptom lists \u2192 Supplementary content\n\n### Authority Integration\n- Prioritize citations from authoritative sources\n- **Example:** Government websites\n- **Purpose:** Boost credibility and rankings\n\n## 9. Language and Tone Optimization\n\n### Definitive Language\n- Use declarative language wherever possible\n- **Purpose:** Boost credibility\n\n### Modality Alignment\n- Match answer modality to question's intent:\n - **Universal truths:** Present-tense factual statements\n - **Research-based/conditional:** Modal verbs (can, might, may, could)\n - **Personalized suggestions:** \"Should\" + second-person pronouns (you)\n\n---\n\n# WRITING PROCESS\n\n## Stage 1: Introduction\n- Draft abstractive summary to set context\n- Reserve final refinement for post-writing phase\n\n## Stage 2: Body Development\n- Develop macro-context sections (core topic expansion)\n- Develop micro-context sections (supplementary details)\n- Create structured subsections\n- **Priority:** Deepen macro context first to establish topical authority\n\n### Structured Content Methodology\nFollow this predefined structure:\n1. General introduction\n2. Core explanations (e.g., risks, mechanism)\n3. Supplementary sections aligned with user intent and authority-building goals\n\n## Stage 3: Conclusion\n- Post-writing refinement of intro/conclusion\n- Use extractive summaries from key body points\n\n## Stage 4: Coherence Check\n- Continuously check alignment between sections\n- Preserve contextual coherence throughout\n\n## Content Generation Principles\n\n### Anticipatory Content\n- Generate content that triggers new user questions\n- Avoid repeating existing queries\n- Focus on unexplored semantic connections\n- Enhance depth and originality\n\n### Query Term Mirroring\n- Ensure document vocabulary directly mirrors query terms\n- **Example:** \"ice water,\" \"Arctic water\"\n- **Purpose:** Increase relevance\n\n### Featured Snippet Optimization\n- Embed concise lists early in content (e.g., benefits, misunderstandings)\n- Target answer boxes\n- Use summaries at article and subsection levels\n- Reinforce keyword prominence\n\n### Originality Signals\n- Prioritize uncommon word combinations\n- Signal expertise and originality\n- Identify phrases not widely used\n- Enhance content uniqueness\n\n### Long-Tail Integration\n- Incorporate low-volume, long-tail queries naturally\n- Place in supplementary content\n- Align with latent semantic signals from related search queries\n\n### Factual Consistency\n- Ensure factual accuracy and uniformity across all content (e.g., pH values)\n- Avoid semantic conflicts\n- Validate data points site-wide\n- Maintain coherent information graph\n\n### Readability Optimization\n- Replace repetitive nouns with pronouns after 2-3 mentions\n- Improve readability while retaining context\n\n### Semantic Clustering\n- Ensure related terms appear close together\n- **Example:** \"minerals\" and \"biological processes\"\n\n### Definition Structure\n- Use passive voice for definitions\n- **Example:** \"Water is defined as...\"\n\n### Skim-Reader Optimization\n- Front-load critical information in headers and introductory sentences\n- Reduce cognitive load for quick comprehension\n\n### Heading Design\n- Design H2s to mirror primary entity\n- **Example:** \"Drinking water improves brain function\"\n- Use specific verbs/phrases (e.g., \"improved,\" \"developed,\" \"increased\")\n- Naturally align with search intent\n- Reflect semantic relevance\n\n### Pronoun Usage with Modals\n- Use second-person pronouns (you) with \"should\" for advice/guidance\n\n### Avoid Binary Answers\n- For subjective queries, avoid simple yes/no answers\n- Provide contextualized advice (e.g., hydration habits, temperature)\n- Use \"if\" clauses to frame conditions after declarations\n- **Example:** \"You should... if you wish to decrease calorie intake\"\n\n### Citation Strategy\n- Cite credible institutions (e.g., WHO, FDA)\n- Include experts with direct attributions (names, roles)\n- Boost trust and E-E-A-T whenever required\n\n### Term Relationship Management\n- Identify and connect sibling terms\n- Avoid tangential expansions unless aligned with content's scope\n\n---\n\n# SPECIFIC INSTRUCTIONS\n\n## Macro Context Requirements (First 3-4 Paragraphs)\n- Focus on macro context/main entity of the article\n- Establish core topic dominance\n- Build foundational understanding\n\n## Micro Context Requirements (Last 1-2 Paragraphs)\n- Focus on micro context\n- Provide brief and concise information only\n- Enable user to click links and read details on other pages\n- Avoid over-explanation of supplementary topics\n\n## Semantic Relationships\n\n### Hypernyms and Hyponyms\n- Use hypernyms for broad categories (e.g., \"celebrities\")\n- Use hyponyms for specific instances (e.g., \"poets, authors\")\n- Structure hierarchical relationships\n\n### Synonyms\n- Use synonyms of main/related entities (e.g., \"expenses\" for \"cost\")\n- Broaden topical relevance without repetition\n\n### Contextually Related Terms\n- Integrate contextually related terms (e.g., \"work opportunities\" linked to \"visas\")\n- Enhance semantic depth\n\n## FAQ and Concise Answers\n\n### Definitive Single-Sentence Answers\n- Craft for questions not requiring extensive content\n- Influence search engines' \"People Also Ask\" sections\n- Avoid ambiguity\n- Use certainty to preempt follow-up questions\n\n## Search Intent Optimization\n\n### Derive User Questions\n- Identify implicit intents from search queries\n- **Example:** \"Germany minimum wage\" \u2192 \"What is Germany's minimum wage for skilled workers?\"\n- Optimize for featured snippets\n- Align content with search engines' answer-scoring metrics (context, clarity, authority)\n\n### Question-Format Headings\n- Generate headings in question format (e.g., \"Where is Germany?\")\n- Align with search intent\n- Directly pair answers with corresponding questions\n- Help search engines map Q&A pairs efficiently\n\n### Topical Continuity\n- Maintain logical thread between sections\n- **Example:** Location \u2192 Continent \u2192 Population\n- Use H2 for primary questions\n- Use H3 for sub-questions or related attributes\n- Control prominence and relevance flow\n\n### Synonym Phrases in Headings\n- Embed synonym phrases in headings\n- **Example:** \"capital of Germany\" vs. \"Berlin\"\n- Capture diverse search queries\n\n## Writing Style Prohibitions\n- **DO NOT** mention your experience\n- **DO NOT** state you're a writer\n- **DO NOT** use over-complex words\n- **DO NOT** include fluff\n\n## Writing Style Requirements\n- Sound human-written\n- Use simple, accessible language\n- Make content understandable by everyone, including those with limited English vocabulary\n- Maintain natural, conversational flow\n\n## Author Writing Summary\n- [Add Author Writing Style Summary]\n_ Follow the writing style while creating the content.\n\n---\n\n# OUTPUT REQUIREMENT\n\n**CRITICAL:** Output should contain the article itself ONLY. No preamble, no meta-commentary, no explanations\u2014just the article content.",
"options": {},
"promptType": "define"
},
"typeVersion": 2.1
},
{
"id": "2716785e-3803-43a3-aef4-7bf86d4bf6ac",
"name": "Google Gemini Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1312,
384
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "60eb3846-796e-4ca2-970e-117183a4d25e",
"name": "Google Gemini Chat Model4",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
960,
384
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "f3fa245c-9438-4d4e-9128-c205c58a9c83",
"name": "Title Generation",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
896,
160
],
"parameters": {
"text": "=You're a experienced listicle writer who writes effective content and headings that gets thaousands of clicks per day. Create a SEO Optimised title on the basis of this topic : {{ $('Add Approved Topic').item.json.topic }} .\n\n*** Don't add any sort of fluff into your output. The output should be directly be the one title that you create by following the above given instructions.***",
"batching": {},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "5d84c204-005a-45d2-8041-bcf278434541",
"name": "Google Gemini Chat Model5",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1664,
384
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "441b35bf-f98e-4f4f-858d-aec48462a1de",
"name": "Slug Generation",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
1600,
160
],
"parameters": {
"text": "=You're an SEO expert with 20 years of experience in SEO industry. You have ranked many of your client's blogs and websites on first position in search engines like google and bing. Based on {{ $json.output }} , create **only one** URL slug that's relevant and is not too long. Don't output any explanations.\n\n***There should be only one slug as output and there shouldn't be any other fluff***",
"batching": {},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "6f06b505-81c9-4d16-b359-a31f4d282a70",
"name": "No Operation, do nothing1",
"type": "n8n-nodes-base.noOp",
"position": [
224,
352
],
"parameters": {},
"typeVersion": 1
},
{
"id": "2e269a50-0b08-4e69-b9e2-fe7a77f3c157",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1360,
-768
],
"parameters": {
"width": 528,
"height": 1280,
"content": "# Create wordpress posts with reddit content via telegram bot & perplexity\n\n## How it works :\n\n- Schedule Trigger: Schedule Trigger fires on the selected day/time.\n\n- Fetching Reddit Posts: The Reddit node fetches new posts from the communities added into it; only fresh Reddit posts are passed to the article generation process.\n\n- Article Idea Generation: An AI agent converts Reddit post titles into article topics on which articles can be written.\n\n- Sending Article Ideas to users via Telegram Bot: A list of topics on which articles can be created is sent user with options to approve/disapprove the article.\n\n- Article Creation: If an article is approved, Telegram webhook fetches the callback query, a check is run to ensure there's no duplicate article existing on the same topic, Perplexity node creates a well-researched summary about the topic, and AI Agents create a title, SEO optimised content and slug for the post.\n\n- Post Creation: Post is created with a created title, content and slug on WordPress with the desired publishing status.\n\n## Setup Steps :\n\n1. Set up the Reddit API and add its credentials to n8n.\n2. Set up a Telegram bot via Botfather and add credentials to n8n.\n3. Set up Data Tables with columns specified in workflow notes\n4. Setup WordPress API and add it's credentials to n8n.\n5. Set up Perplexity API, and its credentials to n8n\n\n## Requirements :\n\n- WordPress API: Website with WordPress API enabled to create articles\n\n- Reddit API: A Reddit account with API access\n\n- Telegram Bot: A Telegram bot to receive and approve article ideas\n\n- Perplexity API: Perplexity API to research information about the article topic\n\n\n## Need Help?\n\n[Schedule a 1:1 Troubleshooting Call](https://cal.com/mattakshitij/workflow-troubleshoot) or [Ping me on X](https://x.com/matta_kshitij)\n\nHappy Automating :)\n"
},
"typeVersion": 1
},
{
"id": "1f8b7fae-76ee-48e4-8903-1d01679b6719",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-288,
-688
],
"parameters": {
"color": 7,
"width": 320,
"height": 192,
"content": "## 2. Add relevant SubReddits available in your niche\n\nAdd at least 10-15 subreddits relevant to your niche\n"
},
"typeVersion": 1
},
{
"id": "1b402caa-ba28-4ee1-bbb1-57725901d5a6",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-720,
-880
],
"parameters": {
"color": 7,
"width": 368,
"height": 384,
"content": "## 1. Create 2 Data Tables with the following columns:\n\n### a. Reddit Article Ideas\n- post_id\n- topic\n- status\n\n### b. Reddit Approved Topics\n- post_id\n- topic\n- status\n- title\n- url"
},
"typeVersion": 1
},
{
"id": "2ec7e438-3c4c-41fe-bb95-0a396e0dc9cc",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
112,
-688
],
"parameters": {
"color": 7,
"width": 320,
"height": 192,
"content": "## 3. Add relevant information about the author & your niche\n\nAdd relevant information to replace placeholder info in []\n"
},
"typeVersion": 1
},
{
"id": "bfe4c5a9-c986-4e88-966d-dedd9b73e06d",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
832,
-688
],
"parameters": {
"color": 7,
"width": 320,
"height": 192,
"content": "## 4. Add your Telegram chat ID and API credentials\n\nTo receive article ideas, add your Telegram chat ID and API credentials"
},
"typeVersion": 1
},
{
"id": "7f2a7ad9-4ed1-4639-be1d-74272aa6edb4",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
-80
],
"parameters": {
"color": 7,
"width": 320,
"height": 192,
"content": "## 5. Add your Perplexity API credentials\n\nConfigure your Perplexity API credentials to get a detailed research summary about the article topic.\n"
},
"typeVersion": 1
},
{
"id": "43fe2d8c-a7a0-43f1-9377-d147ab5d7fe8",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1216,
-80
],
"parameters": {
"color": 7,
"width": 320,
"height": 192,
"content": "## 6. Add Author Name & Writing Style\n\nRemove placeholder information to add the author's name and writing style so that the content generated sounds human-written\n"
},
"typeVersion": 1
},
{
"id": "6cfb242d-62a9-488b-9011-c4a450784989",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1840,
-112
],
"parameters": {
"color": 7,
"width": 352,
"height": 240,
"content": "## 7. Configure WordPress credentials and fields as per the requirements\n\nAdd WP API credentials and set status and other fields for the content as per your requirement\n"
},
"typeVersion": 1
},
{
"id": "fd712f57-615d-43c0-96d1-dd273db1662d",
"name": "Get Reddit Posts",
"type": "n8n-nodes-base.reddit",
"position": [
-240,
-464
],
"parameters": {
"limit": 10,
"filters": {
"category": "new"
},
"operation": "getAll"
},
"credentials": {
"redditOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "905eab19-7299-4496-89d5-5590dd6a1ef5",
"name": "Approval Check",
"type": "n8n-nodes-base.if",
"position": [
-448,
352
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "75a1b73f-0ad5-4bf5-8ba4-f511eda64d5e",
"operator": {
"type": "string",
"operation": "startsWith"
},
"leftValue": "={{ $node[\"Telegram Webhook\"].json[\"callback_query\"][\"data\"] }}",
"rightValue": "approve_"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "56c8217d-ad99-443e-8562-0ce8a92a86b6",
"name": "Get Approved Topic",
"type": "n8n-nodes-base.dataTable",
"position": [
-224,
256
],
"parameters": {
"filters": {
"conditions": [
{
"keyName": "topic",
"keyValue": "={{ $json.callback_query.message.text.split('\\n\\n')[1] || '' }}"
}
]
},
"matchType": "allConditions",
"operation": "get",
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "9o0s79XTScgMmYOr",
"cachedResultUrl": "/projects/YYiwacWxzStWfbnW/datatables/9o0s79XTScgMmYOr",
"cachedResultName": "Reddit Approved Topics"
}
},
"typeVersion": 1,
"alwaysOutputData": true
},
{
"id": "79135850-d00b-411e-a796-83acbf591b82",
"name": "Check for Already Written Topic",
"type": "n8n-nodes-base.if",
"position": [
0,
256
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "6ca30939-7b63-4808-9ad7-cc7f9ecb6f87",
"operator": {
"type": "string",
"operation": "notEquals"
},
"leftValue": "={{ $('Telegram Webhook').item.json.callback_query.message.text .split('\\n\\n')[1] || ''}}",
"rightValue": "={{ $json.topic }}"
}
]
}
},
"typeVersion": 2.2,
"alwaysOutputData": false
},
{
"id": "9ce13ba9-8417-40f9-a3ea-b1c548d52b01",
"name": "Set Status to Approved",
"type": "n8n-nodes-base.dataTable",
"position": [
224,
160
],
"parameters": {
"columns": {
"value": {
"status": "approved"
},
"schema": [
{
"id": "post_id",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "post_id",
"defaultMatch": false
},
{
"id": "topic",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "topic",
"defaultMatch": false
},
{
"id": "status",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "status",
"defaultMatch": false
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"filters": {
"conditions": [
{
"keyName": "topic",
"keyValue": "={{ $('Telegram Webhook').item.json.callback_query.message.text.split('\\n\\n')[1] || '' }}"
}
]
},
"options": {},
"operation": "update",
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "cKFXOSpXqv5Ffpia",
"cachedResultUrl": "/projects/YYiwacWxzStWfbnW/datatables/cKFXOSpXqv5Ffpia",
"cachedResultName": "Reddit Article Ideas"
}
},
"typeVersion": 1
},
{
"id": "4d55f623-6833-458f-81b8-b2d5c4753c16",
"name": "Add Approved Topic",
"type": "n8n-nodes-base.dataTable",
"position": [
448,
160
],
"parameters": {
"columns": {
"value": {
"topic": "={{ $json.topic }}",
"status": "=in process",
"post_id": "={{ $json.post_id }}"
},
"schema": [
{
"id": "post_id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "post_id",
"defaultMatch": false
},
{
"id": "topic",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "topic",
"defaultMatch": false
},
{
"id": "status",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "status",
"defaultMatch": false
},
{
"id": "title",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "title",
"defaultMatch": false
},
{
"id": "url",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "url",
"defaultMatch": false
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "9o0s79XTScgMmYOr",
"cachedResultUrl": "/projects/YYiwacWxzStWfbnW/datatables/9o0s79XTScgMmYOr",
"cachedResultName": "Reddit Approved Topics"
}
},
"typeVersion": 1
},
{
"id": "48c09c0e-01ca-4c7f-b46b-81b5cab6bff3",
"name": "Research about Approved Topic",
"type": "n8n-nodes-base.perplexity",
"position": [
672,
160
],
"parameters": {
"model": "sonar-pro",
"options": {},
"messages": {
"message": [
{
"content": "=Research on this topic {{ $json.topic }} and create a detailed 700 words summary about it which specifies all the technical/scientific/factual details and should be enough to write a descriptive article upon.\n\n**There should be no fluff in the output. The output should be just the summary generated*** "
}
]
},
"simplify": true,
"requestOptions": {}
},
"credentials": {
"perplexityApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "074586a8-af71-4b16-9a33-41eee63594b4",
"name": "WP Post Creation",
"type": "n8n-nodes-base.wordpress",
"position": [
1952,
160
],
"parameters": {
"title": "={{ $('Title Generation').item.json.text }}",
"additionalFields": {
"slug": "={{ $json.text }}",
"status": "draft",
"content": "={{ $('Content Generation').item.json.output }}"
}
},
"credentials": {
"wordpressApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "5e9d832c-056a-4a45-9bf0-f42db77ed86e",
"name": "Add Title & URL to Approved Topic",
"type": "n8n-nodes-base.dataTable",
"position": [
2176,
160
],
"parameters": {
"columns": {
"value": {
"url": "=yourwebsite.com/{{ $('Slug Generation').item.json.text }}",
"title": "={{ $('Title Generation').item.json.text }}"
},
"schema": [
{
"id": "post_id",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "post_id",
"defaultMatch": false
},
{
"id": "topic",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "topic",
"defaultMatch": false
},
{
"id": "status",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "status",
"defaultMatch": false
},
{
"id": "title",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "title",
"defaultMatch": false
},
{
"id": "url",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "url",
"defaultMatch": false
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"filters": {
"conditions": [
{
"keyName": "topic",
"keyValue": "={{ $('Add Approved Topic').item.json.topic }}"
}
]
},
"options": {},
"operation": "update",
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "9o0s79XTScgMmYOr",
"cachedResultUrl": "/projects/YYiwacWxzStWfbnW/datatables/9o0s79XTScgMmYOr",
"cachedResultName": "Reddit Approved Topics"
}
},
"typeVersion": 1
},
{
"id": "0ffe15ea-5206-44c0-b198-7cb0ba61270f",
"name": "Notify User about Article Creation",
"type": "n8n-nodes-base.telegram",
"position": [
2400,
160
],
"parameters": {
"text": "=Your article with title : {{ $('Title Generation').item.json.text }} has been published.\n\nUrl : {{ $json.url }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "ce68478f-20c8-4221-b818-c87a72896bdf",
"name": "Periodic Check for Reddit Posts",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-464,
-464
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 19
}
]
}
},
"typeVersion": 1.2
},
{
"id": "055ca681-ab7f-4740-9814-f4888012cbd9",
"name": "Remove Duplicate Reddit Posts Fetched Earlier",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
-48,
-464
],
"parameters": {
"options": {},
"operation": "removeItemsSeenInPreviousExecutions",
"dedupeValue": "={{ $json.title }}"
},
"typeVersion": 2
},
{
"id": "eb6328c4-c558-48e2-92d0-df9a40977b56",
"name": "Add Topic Data to DataTable",
"type": "n8n-nodes-base.dataTable",
"position": [
736,
-464
],
"parameters": {
"columns": {
"value": {
"topic": "={{ $json.article_topic }}",
"status": "not approved",
"post_id": "={{ $json.post_id }}"
},
"schema": [
{
"id": "post_id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "post_id",
"defaultMatch": false
},
{
"id": "topic",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "topic",
"defaultMatch": false
},
{
"id": "status",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "status",
"defaultMatch": false
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "cKFXOSpXqv5Ffpia",
"cachedResultUrl": "/projects/YYiwacWxzStWfbnW/datatables/cKFXOSpXqv5Ffpia",
"cachedResultName": "Reddit Article Ideas"
}
},
"typeVersion": 1
},
{
"id": "34c352fe-7678-4652-9658-232e021bac4c",
"name": "Send Article Ideas to User",
"type": "n8n-nodes-base.telegram",
"position": [
960,
-464
],
"parameters": {
"text": "=New article idea: \n\n{{ $node[\"Set Topic Data\"].json[\"article_topic\"] }}\n\nWould you like to approve or disapprove this idea?",
"replyMarkup": "inlineKeyboard",
"inlineKeyboard": {
"rows": [
{
"row": {
"buttons": [
{
"text": "Approve",
"additionalFields": {
"callback_data": "=approve_{{ $node[\"Set Topic Data\"].json[\"post_id\"] }}"
}
},
{
"text": "Disapprove",
"additionalFields": {
"callback_data": "=disapprove_{{ $node[\"Set Topic Data\"].json[\"post_id\"] }}"
}
}
]
}
}
]
},
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "c97c5de8-3b45-4f1d-a793-34944d41d56a",
"connections": {
"Approval Check": {
"main": [
[
{
"node": "Get Approved Topic",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Set Topic Data": {
"main": [
[
{
"node": "Add Topic Data to DataTable",
"type": "main",
"index": 0
}
]
]
},
"Slug Generation": {
"main": [
[
{
"node": "WP Post Creation",
"type": "main",
"index": 0
}
]
]
},
"Get Reddit Posts": {
"main": [
[
{
"node": "Remove Duplicate Reddit Posts Fetched Earlier",
"type": "main",
"index": 0
}
]
]
},
"Telegram Webhook": {
"main": [
[
{
"node": "Approval Check",
"type": "main",
"index": 0
}
]
]
},
"Title Generation": {
"main": [
[
{
"node": "Content Generation",
"type": "main",
"index": 0
}
]
]
},
"WP Post Creation": {
"main": [
[
{
"node": "Add Title & URL to Approved Topic",
"type": "main",
"index": 0
}
]
]
},
"Add Approved Topic": {
"main": [
[
{
"node": "Research about Approved Topic",
"type": "main",
"index": 0
}
]
]
},
"Content Generation": {
"main": [
[
{
"node": "Slug Generation",
"type": "main",
"index": 0
}
]
]
},
"Get Approved Topic": {
"main": [
[
{
"node": "Check for Already Written Topic",
"type": "main",
"index": 0
}
]
]
},
"Generate Article Idea": {
"main": [
[
{
"node": "Set Topic Data",
"type": "main",
"index": 0
}
]
]
},
"Set Status to Approved": {
"main": [
[
{
"node": "Add Approved Topic",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "Generate Article Idea",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Google Gemini Chat Model1": {
"ai_languageModel": [
[
{
"node": "Content Generation",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Google Gemini Chat Model4": {
"ai_languageModel": [
[
{
"node": "Title Generation",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Google Gemini Chat Model5": {
"ai_languageModel": [
[
{
"node": "Slug Generation",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Add Topic Data to DataTable": {
"main": [
[
{
"node": "Send Article Ideas to User",
"type": "main",
"index": 0
}
]
]
},
"Research about Approved Topic": {
"main": [
[
{
"node": "Title Generation",
"type": "main",
"index": 0
}
]
]
},
"Check for Already Written Topic": {
"main": [
[
{
"node": "Set Status to Approved",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing1",
"type": "main",
"index": 0
}
]
]
},
"Periodic Check for Reddit Posts": {
"main": [
[
{
"node": "Get Reddit Posts",
"type": "main",
"index": 0
}
]
]
},
"Add Title & URL to Approved Topic": {
"main": [
[
{
"node": "Notify User about Article Creation",
"type": "main",
"index": 0
}
]
]
},
"Remove Duplicate Reddit Posts Fetched Earlier": {
"main": [
[
{
"node": "Generate Article Idea",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googlePalmApiperplexityApiredditOAuth2ApitelegramApiwordpressApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Create unlimited content from Reddit with just one click. Schedule Trigger: Schedule Trigger fires on the selected day/time. Fetching Reddit Posts: The Reddit node fetches new posts from the communities. Article Idea Generation: An AI agent converts Reddit post titles into…
Source: https://n8n.io/workflows/13042/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow creates a multi-talented AI assistant named Simran that interacts with users via Telegram. It can handle text and voice messages, understand the user's intent, and perform various tasks.
A comprehensive n8n workflow demonstrating advanced AI agent orchestration, stateful conversation management, and multi-modal input processing for nutrition tracking applications.
This n8n workflow automates the entire lead nurturing process from initial contact through a 3-email follow-up sequence, with intelligent reply detection and personalized AI-generated content. It's de
This workflow acts as an intelligent content engine. Simply send a link to your Telegram bot (e.g., a product page or news article), and it will automatically scrape the content, rewrite it into a hig
> Optimize your AI workflows, cut costs, and get faster, more accurate answers.