This is the first paragraph of the article.
\nThis is the second paragraph with an external link.
\n`.\n * No external links unless explicitly provided.\n * Do **not** conduct any extra research or include any commentary/explanation—just the finished article HTML. \n * **YouTube URLs:** Don't embedd the youtube link only palce the you link in different line don't embedd it.\n\n4. **Tone, Style & Audience**\n\n * Determine if the outline’s intent is **informational**, **editorial**, or **entertainment news**; write in a matching, fan-friendly, and engaging style.\n * Value for Netflix, web series, or pop culture fans should be clear throughout.\n * Avoid keyword stuffing—keep it natural and flowing.\n\n5. **Conclusion**\n\n * End with a strong **Call to Action** for \"Keeperfact\" readers (stream, comment, or explore more).\n\n---\n\n**Output:**\n\n* Return **only** the completed HTML article with all sections, images, and YouTube URLs properly placed and formatted.\n* Ensure the article is ready to be pasted directly into WordPress.\n* Do not include any extra commentary or formatting explanation.\n\n**Output Structure**\n\n```json\n{\n \"title\": \"the original title here\",\n \"content\": \"the rephrased HTML content here\"\n}\n```\n\n\n", "role": "system" }, { "content": "=1. The Outline of article: \n{{ $json.articleOutline }}\n\n2. YouTube trailer/teaser URLs:\n{{ $json.videoData }}\n\n3. Image URLs:\n{{ $json.imageData }}" } ] }, "jsonOutput": true, "options": {} }, "type": "@n8n/n8n-nodes-langchain.openAi", "typeVersion": 1.8, "position": [ 1120, 448 ], "id": "4f7361dc-eddf-46be-babc-67a3825dba29", "name": "Ready Article", "credentials": { "openAiApi": { "id": "jtLWrEq6HGCqOhD7", "name": "OpenAi account" } } }, { "parameters": { "jsCode": "const title = $json[\"Title\"];\nconst content = $json[\"content\"];\n\n// Extract the first URL inside square brackets []\nconst urlMatch = content.match(/\\[(https?:\\/\\/[^\\]]+)\\]/);\n\nlet featureImage = null;\nlet cleanedContent = content;\n\nif (urlMatch) {\n featureImage = urlMatch[1];\n // Remove the first occurrence of the URL including brackets\n cleanedContent = content.replace(urlMatch[0], \"\");\n}\n\nreturn [\n {\n json: {\n title,\n featureImage,\n cleanedContent\n }\n }\n];\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ -416, 240 ], "id": "6253a062-a05d-4c96-9ac0-35092ede503e", "name": "Content & Title" }, { "parameters": { "method": "POST", "url": "https://keeperfacts.com//wp-json/wp/v2/media", "authentication": "predefinedCredentialType", "nodeCredentialType": "wordpressApi", "sendHeaders": true, "headerParameters": { "parameters": [ { "name": "content-disposition", "value": "=attachment;filename= {{ $binary.data.fileName.replace(/\\.[^/.]+$/, \"\") }}.jpg" }, { "name": "content-type", "value": "={{ $binary.data.mimeType }}" } ] }, "sendBody": true, "contentType": "binaryData", "inputDataFieldName": "data", "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ 224, 752 ], "id": "e79ef2d3-feac-49fc-bc35-6c6376d77eb2", "name": "Upload Img to WP", "executeOnce": true, "credentials": { "wordpressApi": { "id": "8qCR4kNx0Vvnkq0y", "name": "Keeperfacts wp acc" } } }, { "parameters": { "content": "**Title:** RSS Article Filtering & Deduplication\n\n**Process Flow:**\n1. **Trigger & Fetch:** A scheduled trigger automatically runs this workflow to fetch the latest articles from an RSS feed.\n2. **Limit & Enrich:** The flow limits the number of articles processed to avoid overload, then extracts the website name from each article's URL for better organization.\n3. **Filter & Deduplicate:** Articles are first filtered by URL rules to remove unwanted sources. Then, each article is checked against a Google Sheet database to identify duplicates.\n4. **Decision Point:** If an article is new (not in the sheet), the workflow continues for further processing (e.g., posting, notification). If it's a duplicate, the branch stops, doing nothing.\n\n**Key Purpose:** To automatically collect, clean, and check new articles from an RSS feed, ensuring only unique content is processed further, preventing redundant actions.", "height": 416, "width": 1360 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ -2368, 192 ], "id": "10839cba-9eb7-472f-b482-375f1dde79c8", "name": "Sticky Note" }, { "parameters": { "content": "**Purpose:** Processes unique articles by extracting content, images, and metadata, then formats and publishes to WordPress.\n\n**Key Steps:**\n1. **Content Extraction:** Pulls full article title, HTML content, and all images from the source URL.\n2. **Structuring:** Analyzes the article to create an outline/message structure.\n3. **Aggregation:** Combines all extracted data into a final, formatted payload.\n4. **Publication:** Automatically uploads the complete article as a new post to the WordPress site.\n\n**Final Result:** A fully formatted blog post published automatically from the RSS feed.", "height": 256, "width": 944 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ -384, -240 ], "id": "a43bcc3a-3ebb-46bb-8148-e05eea6b7c6d", "name": "Sticky Note1" }, { "parameters": { "content": "### Final Step - Structuring & Logging\n\n**Purpose:** Formats the final data and publishes it, then logs the action for record-keeping.\n\n**Actions:**\n1. **Structure Data:** Prepares and organizes all extracted content (title, HTML, images) into the correct format for WordPress.\n2. **Publish to WordPress:** Sends a POST request to create a new post on the specified WordPress site.\n3. **Log to Sheets & DB:** Appends a record of the published post to a Google Sheet creating a complete audit trail.\n\n**Result:** The article is now live on the website and its details are saved for tracking and analysis.", "height": 304, "width": 800 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 1744, 80 ], "id": "af8f95a7-c711-42ef-870e-923ad7227261", "name": "Sticky Note2" } ], "pinData": {}, "connections": { "Images": { "main": [ [ { "node": "GET All Images", "type": "main", "index": 0 } ] ] }, "Videos": { "main": [ [ { "node": "Aggregate2", "type": "main", "index": 0 } ] ] }, "GET All Images": { "main": [ [ { "node": "Loop Over Items", "type": "main", "index": 0 } ] ] }, "Loop Over Items": { "main": [ [ { "node": "Aggregate", "type": "main", "index": 0 } ], [ { "node": "Upload Img to WP", "type": "main", "index": 0 } ] ] }, "Aggregate": { "main": [ [ { "node": "Merge", "type": "main", "index": 3 } ] ] }, "Merge": { "main": [ [ { "node": "Structure the data", "type": "main", "index": 0 } ] ] }, "Aggregate2": { "main": [ [ { "node": "Merge", "type": "main", "index": 2 } ] ] }, "Schedule Trigger1": { "main": [ [ { "node": "RSS Read", "type": "main", "index": 0 } ] ] }, "Filter by URL": { "main": [ [ { "node": "Duplicate ArticleCheck", "type": "main", "index": 0 } ] ] }, "Duplicate ArticleCheck": { "main": [ [ { "node": "If", "type": "main", "index": 0 } ] ] }, "RSS Read": { "main": [ [ { "node": "Limit Article", "type": "main", "index": 0 } ] ] }, "Get Website Name": { "main": [ [ { "node": "Filter by URL", "type": "main", "index": 0 } ] ] }, "If": { "main": [ [ { "node": "fetch Article HTML", "type": "main", "index": 0 } ] ] }, "Get Category ID": { "main": [ [ { "node": "Publish Article", "type": "main", "index": 0 } ] ] }, "Update New Data": { "main": [ [ { "node": "GET F Image", "type": "main", "index": 0 } ] ] }, "Publish Article": { "main": [ [ { "node": "Update New Data", "type": "main", "index": 0 } ] ] }, "Set New Category": { "main": [ [ { "node": "Get Category ID", "type": "main", "index": 0 } ] ] }, "Update Embedding": { "main": [ [ { "node": "Set New Category", "type": "main", "index": 0 } ] ] }, "Limit Article": { "main": [ [ { "node": "Get Website Name", "type": "main", "index": 0 } ] ] }, "fetch Article HTML": { "main": [ [ { "node": "Clean HTML", "type": "main", "index": 0 } ] ] }, "Clean HTML": { "main": [ [ { "node": "Take Websites data", "type": "main", "index": 0 }, { "node": "Images", "type": "main", "index": 0 }, { "node": "Content & Title", "type": "main", "index": 0 }, { "node": "Videos", "type": "main", "index": 0 } ] ] }, "Take Websites data": { "main": [ [ { "node": "Merge", "type": "main", "index": 0 } ] ] }, "Upload F img to WP": { "main": [ [ { "node": "Update Feature Img", "type": "main", "index": 0 } ] ] }, "GET F Image": { "main": [ [ { "node": "Upload F img to WP", "type": "main", "index": 0 } ] ] }, "Structure the data": { "main": [ [ { "node": "Ready Article", "type": "main", "index": 0 } ] ] }, "Outline of article": { "main": [ [ { "node": "Merge", "type": "main", "index": 1 } ] ] }, "Ready Article": { "main": [ [ { "node": "Update Embedding", "type": "main", "index": 0 } ] ] }, "Content & Title": { "main": [ [ { "node": "Outline of article", "type": "main", "index": 0 } ] ] }, "Upload Img to WP": { "main": [ [ { "node": "Loop Over Items", "type": "main", "index": 0 } ] ] } }, "active": true, "settings": { "executionOrder": "v1" }, "versionId": "aba5a79e-80c7-4ba4-b6a5-27de6d4de79d", "meta": { "templateCredsSetupCompleted": true, "instanceId": "1f1785d995b3fa32ab6b8219168659331dbe1459fee9ca0c94987e0285ae2676" }, "id": "Sx9MOcD0HnAk7o7E", "tags": [ { "createdAt": "2025-07-23T09:03:28.998Z", "updatedAt": "2025-07-23T09:03:28.998Z", "id": "0TIhg6ju9FxO2Lcp", "name": "Wordpress" }, { "createdAt": "2025-07-23T09:03:28.999Z", "updatedAt": "2025-07-23T09:03:28.999Z", "id": "EytiJJPwSOxyW6Jx", "name": "Article Post" } ] }