DEV Community

Cover image for How I Cross-Post Blog Articles (Without Making It Complicated)
Dave Cross
Dave Cross

Posted on • Originally published at blog.dave.org.uk on

How I Cross-Post Blog Articles (Without Making It Complicated)

Someone asked me on LinkedIn recently how to cross-post blog content from a GitHub Pages site to places like Medium, dev.to and LinkedIn.

I started writing a quick reply and, as often happens, it turned into something longer. So here’s the slightly more organised version.

Two different problems

There are actually two separate things people mean when they ask this.


1. Sharing links on social media

This is the easy one.

When I publish a post, I’ll usually share it by:

  • pasting the link
  • adding a short description
  • maybe tweaking the wording per platform

The only slightly technical thing worth doing here is making sure your site has Open Graph tags set up properly.

That ensures:

  • the right title appears
  • the right description is used
  • and, importantly, the right image is shown

If you don’t do this, your carefully written post ends up looking like a random bare link.

What about “Share to…” buttons?

Many blogging platforms (and themes) offer “Share to Facebook/LinkedIn/etc.” buttons.

They:

  • generate a pre-filled post
  • save a bit of time

I don’t tend to use them – I prefer writing a slightly different intro per platform – but they’re perfectly reasonable if you want something quick and consistent.


2. Reposting the article elsewhere

This is where it gets more interesting.

My usual workflow is:

  • write on my own site (WordPress in my case, but GitHub Pages is fine)
  • then repost to other platforms

The two I use most are Medium and dev.to – and they take slightly different approaches.


First requirement: you need a web feed

If you want any level of automation, your site needs an RSS/Atom feed.

  • WordPress: you get this automatically
  • GitHub Pages: depends how your site is built

A lot of people use Jekyll on GitHub Pages (it’s the default and best-supported option), but it’s not the only choice — you can also use other static site generators or even pre-built HTML.

Whichever approach you use, you’ll need to make sure it produces a web feed.

If you’re using Jekyll

Add the official feed plugin:

plugins:
- jekyll-feed
Enter fullscreen mode Exit fullscreen mode

GitHub Pages supports this plugin natively, so there’s no extra build step needed.

Your feed will usually be available at:

/feed.xml
Enter fullscreen mode Exit fullscreen mode

If you’re using something else

Most static site generators (Hugo, Eleventy, Astro, etc.) can generate feeds, but:

  • it’s often not enabled by default
  • the configuration varies

So you’ll need to:

  • check the documentation for your tool
  • enable or add a feed generator
  • confirm the feed URL works

That feed is what tools like dev.to use to discover your posts.


Medium: “Import a story”

Medium has a built-in Import a story feature.

You give it the URL of your original post and it:

  • pulls in the content
  • recreates the article
  • lets you edit it before publishing

It works surprisingly well.

The only slight downside is that it always takes me a few minutes to find the option. It’s on your Stories page (when you’re logged in). Look for the big button in the top right corner.


dev.to: RSS-based automation

dev.to does something a bit cleverer.

You can:

  • point it at your RSS/Atom feed
  • and it will automatically create draft posts for new articles

A few notes from experience:

  • it can take a few hours for drafts to appear
  • formatting is usually good but you’ll probably want to tweak it a bit
  • it often misses the featured image, so I add that manually

The really important bit: canonical URLs

This is the part that many people miss.

When you repost content, you are technically creating duplicate content – which search engines don’t love.

However…

If you use the official import tools:

  • Medium
  • dev.to

…they both add a canonical link back to your original post.

That’s the equivalent of saying:

“This content originally lives over here – treat that as the primary version.”

Which means:

  • your original site gets the SEO benefit
  • you don’t get penalised for duplication

If you’re manually copying and pasting, you need to be careful about this – or at least be aware of the trade-off.


What about LinkedIn?

LinkedIn is a bit different.

As far as I’m aware, there isn’t a clean equivalent of:

  • Medium’s import tool
  • or dev.to’s RSS integration

It’s worth checking – platforms change – but I haven’t found anything comparable.

So my approach is:

  • write a short summary
  • link to the original post

That also tends to fit LinkedIn better as a platform.

I’ve seen various guides suggesting ways to automate LinkedIn reposting, but many of them rely on long-dead platforms or brittle integrations. As far as I can tell, there’s no clean, supported equivalent of Medium’s import tool or dev.to’s RSS integration. These days, I treat LinkedIn as a place to promote posts rather than republish them.


Is any of this automated?

A bit, but not completely.

  • Medium: semi-automated (import tool)
  • dev.to: semi-automated (RSS → draft)
  • LinkedIn: manual

You could build a fully automated pipeline with APIs and scripts.

But in practice:

  • a small amount of manual editing is useful
  • each platform benefits from slightly different positioning

So I don’t try to over-automate it.


The takeaway

There’s no standard protocol for cross-posting blog content.

What you actually have is:

  • a few helpful platform features
  • a bit of light automation
  • and some copy-and-paste

And honestly, that works perfectly well.

Like most things on the web, there’s no single ‘right’ way to do this — just a collection of tools that mostly work if you don’t try to be too clever.


If you’d like help building this kind of thing without overcomplicating it, there’s a brief overview of what I do here:


The post How I Cross-Post Blog Articles (Without Making It Complicated) appeared first on Davblog.

Top comments (0)