Skip to main content
AC
Content & Publishing4.3 KBMIT licensed

medium-publisher

Original, written for TechTide client work

Publish long-form articles to Medium via browser automation, with canonical URLs pointing back to your own domain. Use when the user says "post to Medium", "republish on Medium", or "syndicate this article". Not for newsletter platforms: use beehiiv, substack-publisher, ghost-publisher, or listmonk-publisher. Not for writing the article itself: use a content or copywriting skill.

  • medium
  • publisher

SKILL.md

Medium Publisher

Medium stopped issuing new API tokens in 2023, so publishing is browser automation. The one non-negotiable: every syndicated post sets a canonical URL to the original on your own domain, or you split search authority and risk duplicate-content demotion.

When to use

  • Republishing a post from your newsletter or blog for extra search surface
  • Targeting a query where Medium's domain authority can rank faster than your own site
  • Building backlinks from Medium to <YOUR_DOMAIN>

Publish the original on your own domain first. Medium is the syndication copy, never the source of truth.

Workflow

  1. Prepare inputs. Title, article body in markdown, up to 5 tags, canonical URL of the original, visibility (public or draft). Confirm the canonical page is live and indexable before publishing the copy.
  2. Authenticate once, interactively. Drive a real browser (Playwright or equivalent) through Medium login and persist the session state to a local file (Playwright: context.storageState()). Medium logins often involve email magic links, so the first run needs a human. Store the session file outside version control and treat it as a credential.
  3. Publish headless on later runs. Load the saved session, open the Medium editor, paste title and body, apply tags.
  4. Set the canonical URL. In the editor: story settings, "Advanced settings", "Customize canonical link". This step is the reason the workflow exists. Do not skip it when automating, the field is buried and easy to miss.
  5. Confirm and record. Capture the published URL. Log title, Medium URL, canonical URL, and date wherever you track published content.

Configuration: MEDIUM_USERNAME (your handle), optional MEDIUM_PUBLICATION_ID if publishing into a publication instead of your profile.

Verification

After publishing, run:

curl -s <MEDIUM_POST_URL> | grep -o 'rel="canonical" href="[^"]*"'

Expect the canonical href to be your original article's URL on <YOUR_DOMAIN>. If it points at medium.com, the canonical was not set: edit the story settings and fix it before the page gets crawled.

Also open the post logged out. Expect formatting intact (headers, code blocks, images) and correct tags. If markdown pasted as plain text, re-paste section by section, Medium's editor mangles some bulk pastes.

Good vs Bad

Bad: Paste the article, hit publish, done. No canonical set, Medium copy outranks your original, your domain gets nothing.

Good: Original live on your domain first, Medium copy published with canonical pointing home, verified via curl, URL logged. Medium ranks, clicks and authority flow to you.

Completion checklist

  • [ ] Original article live on your own domain before syndicating
  • [ ] Canonical URL set in Medium advanced settings
  • [ ] Canonical verified in the published page's HTML
  • [ ] Tags applied (max 5, matched to the target query)
  • [ ] Published URL recorded
  • [ ] Session file stored privately, not committed

Any box unchecked: not done. Fix or say so.

Footguns

  • Missing canonical. The single most damaging failure: Medium outranks your original and you lose the authority you were trying to build. Fix: verify with the curl check every publish, no exceptions.
  • Expired session. Medium sessions die quietly, automation then fails at a login wall or, worse, posts nothing while reporting success. Fix: assert a logged-in marker (e.g. profile avatar selector) before editing, re-run interactive login when it fails.
  • Bulk-pasted markdown mangling. Code blocks and nested lists often break. Fix: review the rendered draft before hitting publish, never auto-publish sight unseen.
  • Treating Medium as the source of truth. If you later edit the original, the Medium copy drifts. Fix: log the pairing, update or at least link-check syndicated copies when the original changes materially.

More in Content & Publishing

All skills