The Content Publishing Pipeline: RSS to Ghost to Social

You wrote the article. Now you need it on your website, in the RSS feed, across three social platforms, and in your subscribers' inboxes — ideally without logging into five different dashboards. The "write once, publish everywhere" dream is real, but the "everywhere" part is held together with API tokens, RSS polling, and platform-specific formatting quirks that break on a schedule nobody publishes. This is the workflow I run in production, what it actually does, and where the automatic part still needs a human checking the wires.

What The Docs Say

The architecture looks clean on paper. Ghost publishes your article and fires a webhook. That webhook hits your automation platform — n8n, Zapier, or Make — which then distributes the content downstream. Ghost's API and webhook system are well-documented and genuinely reliable as a trigger source. The docs describe custom webhooks you can set up for post.published events, and they work exactly as described. RSS updates automatically when Ghost publishes, giving you a second trigger mechanism that's platform-agnostic.

The downstream platforms each have APIs for posting content. Twitter/X has v2 with OAuth 2.0. LinkedIn has a Share API. Bluesky has an AT Protocol-based posting endpoint. Buffer and Typefully offer scheduling APIs that sit between your automation and the platforms themselves. Every one of these has documentation, authentication flows, and rate limits that are — in theory — well-specified.

The docs suggest this is a connect-the-dots problem. Ghost fires the event, your automation catches it, the APIs accept the posts. Three steps, five platforms, zero manual intervention.

What Actually Happens

The core of the workflow is solid. Ghost as the trigger point is the right architectural choice — its webhook system fires reliably on publish events, and the API response includes the full post content, excerpt, featured image URL, tags, and metadata. I've run Ghost webhooks triggering n8n workflows for months at a time without a missed fire. RSS works as a backup trigger if you prefer polling over webhooks — n8n's RSS trigger node checks your feed at whatever interval you set, detects new items, and kicks off the workflow. RSS is slower (polling intervals mean a delay of 1-15 minutes depending on your config) but more resilient because it doesn't depend on your automation platform having a publicly accessible webhook URL.

Here's where the gap between the docs and reality opens up. Social platform APIs are individually functional but collectively a maintenance nightmare. Twitter/X's API requires OAuth 2.0 with PKCE, and the free tier limits you to 1,500 tweets per month with a 17-post-per-24-hour creation limit on the basic tier [VERIFY]. That's enough for automated posting, but the token refresh flow is finicky — OAuth tokens expire, and the refresh token mechanism has a documented tendency to fail silently in long-running automations. You'll discover your tweets stopped going out two weeks ago because a token refresh failed at 3 AM and your automation platform swallowed the error.

LinkedIn's Share API works but enforces formatting constraints that the API response doesn't clearly communicate. Your post body has a character limit around 3,000 characters, images need to be uploaded through a separate multi-step process (register upload, upload binary, then reference the asset in your post), and link previews only generate if you include the URL in the share commentary rather than as a separate field [VERIFY]. The result is that a generic "post to all platforms" automation produces LinkedIn posts that look wrong — no preview image, truncated text, or a bare URL that LinkedIn doesn't unfurl.

Bluesky is the easiest to automate as of early 2026. The AT Protocol posting endpoint accepts text and embedded links, image uploads are a single API call with a blob reference, and authentication uses a simple app password rather than OAuth. The character limit is 300, which means your automation needs to generate Bluesky-specific short-form copy rather than reusing your Ghost excerpt. But the API is stable and the rate limits are generous — the best-behaved platform in the batch.

Threads has no public posting API for third-party apps as of March 2026 [VERIFY]. You can't automate it. You post manually or you skip it. Meta's documentation hints at future API access, but "future" in Meta's timeline could mean anything.

The image transfer problem is universal. Ghost stores images at URLs that social platforms need to fetch, resize, and re-host. Twitter/X handles image URLs in cards reasonably well. LinkedIn requires you to upload images through its own pipeline. Bluesky needs a blob upload. The automation has to handle each platform's image ingestion differently — this is not a "send the same payload everywhere" situation. In practice, I run a branch in the n8n workflow that downloads the Ghost featured image, then uploads it separately to each platform that needs a direct upload, and passes the URL to platforms that accept URL-based cards. This single requirement adds three to four nodes per platform to the workflow.

The n8n vs. Zapier vs. Make Decision

For this specific workflow, the platform choice matters more than the marketing comparisons suggest. Zapier is the fastest to set up — the Ghost trigger is pre-built, and the social posting actions mostly work out of the box. You can have a basic Ghost-to-Twitter-to-LinkedIn pipeline running in under an hour. The problem is cost. Each social post is a task, each image download is a task, each data transformation is a task. A single article publish that hits three platforms with images can consume 10-15 Zapier tasks. At Zapier's current pricing — roughly $20/month for 750 tasks on the Starter plan — you'll burn through your allocation quickly if you publish frequently.

Make (formerly Integromat) sits in between. The scenario builder handles branching and data transformation more naturally than Zapier, and the pricing is per operation rather than per task — more granular but also more affordable. The Ghost module works, the social modules are adequate, and you get enough operations on a free or low-cost plan to run this workflow without worry. The downside is that Make's error handling for social API failures is opaque. When a LinkedIn post fails because your token expired, Make tells you there was an error but the error message is often a generic HTTP status code rather than the platform's specific error response.

n8n is what I run, and the reason is economics plus control. Self-hosted n8n costs nothing per execution — you pay for the server (a $5-12/month VPS handles it) and you get unlimited workflow runs. More importantly, when a social API returns an error, I can inspect the full HTTP response in n8n's execution log, see exactly what went wrong, and fix it without guessing. The Code node lets me write JavaScript for the platform-specific formatting that each social API demands — generating a Bluesky-compatible short-form post from a Ghost excerpt, building the LinkedIn image upload flow, handling Twitter's media upload endpoint. This is more work upfront. It is meaningfully less work over time because when something breaks, I can actually see why.

The Maintenance Cost

This workflow is not a set-and-forget system. It runs reliably for weeks, sometimes months, and then something changes. The changes are always on the social platform side — Ghost's webhook system has never been the failure point in my experience.

Twitter/X changes its API policies, rate limits, or authentication requirements roughly quarterly. Each change may or may not affect your automation, but you won't know until your posts stop appearing. LinkedIn refreshes access tokens on a 60-day cycle [VERIFY], which means your automation needs either a token refresh workflow or a calendar reminder to manually re-authenticate every two months. Bluesky's API has been the most stable, but it's also the youngest — stability might just mean they haven't broken anything yet.

The practical maintenance schedule is a monthly check. Log into each platform, verify that recent automated posts actually went live, check that formatting looks correct, and confirm that images are displaying. This takes about 20 minutes. The alternative — not checking — means you discover three weeks later that your LinkedIn posts have been failing silently because your access token expired on day 61.

The other maintenance cost is formatting drift. Social platforms change their display rules for cards, link previews, and image aspect ratios without warning or changelog entries. A Twitter card that looked perfect in January might display differently in March because Twitter changed their unfurling behavior. You can't prevent this. You can only notice it and adjust.

When To Use This

This workflow earns its setup time if you publish at least twice a week and maintain an active presence on two or more social platforms. The math is straightforward — manual publishing to three platforms takes 15-20 minutes per article between logging in, formatting, uploading images, and copying URLs. At two articles per week, that's roughly two hours per month of mechanical work. The automation takes 4-8 hours to build (depending on your platform) and 30 minutes per month to maintain. It pays for itself in month two or three and keeps paying after that.

The bigger win is consistency. Automated posting means your social presence doesn't depend on you remembering to post after you hit publish. The article goes live, the workflow fires, and the posts appear — even if you published at 6 AM and don't check social media until noon. For publishers maintaining multiple sites, this scales linearly — each new site adds a Ghost webhook and shares the downstream distribution workflow.

When To Skip This

If you publish once a week or less and only maintain one social platform, the manual process is faster than the automation — permanently. The setup time never pays back, and you'll spend more time maintaining expired tokens than you would have spent copy-pasting posts.

Skip this also if you don't have the technical comfort for the platform-specific API work. Zapier abstracts most of it, but even Zapier won't save you from debugging a failed LinkedIn image upload or a Twitter token refresh that went wrong. If "read the API error message and figure out what changed" sounds like a bad afternoon, this automation will be a source of frustration rather than leverage.

And skip the full automation if you care deeply about platform-native engagement. Auto-posted content performs measurably worse than native posts on most platforms — LinkedIn's algorithm in particular seems to suppress posts that arrive via API rather than the native compose interface [VERIFY]. If social media is a primary growth channel rather than a distribution afterthought, the time you save on posting might cost you in reach.


This is part of CustomClanker's Automation Recipes series — workflows that actually run.