<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>N8n | Derek Armstrong — Software Engineer · AI · Infrastructure</title><link>https://derekarmstrong.dev/tags/n8n/</link><atom:link href="https://derekarmstrong.dev/tags/n8n/index.xml" rel="self" type="application/rss+xml"/><description>N8n</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Thu, 01 Jan 2026 00:00:00 +0000</lastBuildDate><image><url>https://derekarmstrong.dev/media/sharing.png</url><title>N8n</title><link>https://derekarmstrong.dev/tags/n8n/</link></image><item><title>Blog Cross-Post Automation Pipeline</title><link>https://derekarmstrong.dev/projects/blog-cross-post-automation/</link><pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate><guid>https://derekarmstrong.dev/projects/blog-cross-post-automation/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Every time I publish a blog post, I want it to reach readers on Dev.to and Hashnode too — without spending time manually reformatting and reposting. So I built an N8N workflow that handles the entire syndication pipeline.&lt;/p&gt;
&lt;p&gt;The workflow triggers when a new post appears on the blog, formats it for each platform&amp;rsquo;s API, publishes it with a canonical link back to the source, and tracks state so nothing gets duplicated or lost.&lt;/p&gt;
&lt;h2 id="how-it-works"&gt;How It Works&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Trigger&lt;/strong&gt;: Detects new blog posts via RSS feed or file watch&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transform&lt;/strong&gt;: Converts markdown to each platform&amp;rsquo;s required format&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publish&lt;/strong&gt;: Posts to Dev.to and Hashnode simultaneously via their APIs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Canonical&lt;/strong&gt;: Sets canonical URLs pointing back to derekarmstrong.dev&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Track&lt;/strong&gt;: Records publication state to prevent duplicates and enable re-posts&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="why-it-matters"&gt;Why It Matters&lt;/h2&gt;
&lt;p&gt;Content syndication is a numbers game. One article, three distributions. But the manual effort adds up fast — reformatting, managing API keys, tracking which posts went where. Automating it means the content does the work, not me.&lt;/p&gt;
&lt;p&gt;The canonical URL setup is critical: search engines need to know the original source to avoid duplicate content penalties. Every cross-post points back to the blog.&lt;/p&gt;
&lt;h2 id="technologies"&gt;Technologies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;N8N (workflow automation)&lt;/li&gt;
&lt;li&gt;Dev.to API&lt;/li&gt;
&lt;li&gt;Hashnode API&lt;/li&gt;
&lt;li&gt;Markdown transformation&lt;/li&gt;
&lt;li&gt;State tracking and deduplication&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>