home / skills / ratacat / claude-skills / medium-paywall-bypass

medium-paywall-bypass skill

/skills/medium-paywall-bypass

This skill helps you access paywalled Medium articles by automatically using Freedium and fallbacks to extract readable content.

npx playbooks add skill ratacat/claude-skills --skill medium-paywall-bypass

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
2.5 KB
---
name: medium-paywall-bypass
description: Use when user shares a Medium article URL behind a paywall and wants to read the full content. Also use for articles on Medium-hosted publications like towardsdatascience.com, betterprogramming.pub, levelup.gitconnected.com, etc.
---

# Medium Paywall Bypass

## Overview
Fetch paywalled Medium articles using free mirror services. Try services in order until one works.

## Service Priority

| Service | URL Pattern | WebFetch | curl | Notes |
|---------|-------------|----------|------|-------|
| **Freedium** | `https://freedium.cfd/{encoded_url}` | Yes | Yes | Best option, returns content directly |
| **Archive.today** | `https://archive.today/latest/{raw_url}` | No | Maybe | Often requires captcha |
| **RemovePaywalls** | `https://removepaywalls.com/{raw_url}` | No | No | Redirect page only, needs browser |
| **ReadMedium** | `https://readmedium.com/en/{encoded_url}` | No | No | Returns 403 programmatically |

- `{encoded_url}` = URL-encoded (slashes become %2F, @ becomes %40, etc.)
- `{raw_url}` = Original URL as-is

**For Claude Code: Use Freedium via WebFetch.** Other services require browser interaction.

## Workflow

```
1. User provides Medium URL
2. Try Freedium first via WebFetch
3. If blocked/empty, try next service
4. Extract and present article content
```

## Example Usage

Given: `https://medium.com/@user/some-article-abc123`

**WebFetch (recommended):**
```
URL: https://freedium.cfd/https%3A%2F%2Fmedium.com%2F%40user%2Fsome-article-abc123
Prompt: Extract the full article content
```

**curl fallback:**
```bash
curl -sL "https://freedium.cfd/https%3A%2F%2Fmedium.com%2F%40user%2Fsome-article-abc123"
```

## Medium-Hosted Domains

These domains use Medium's paywall system:
- `medium.com`, `*.medium.com`
- `towardsdatascience.com`
- `betterprogramming.pub`
- `levelup.gitconnected.com`
- `javascript.plainenglish.io`
- `uxdesign.cc`
- `hackernoon.com`
- `codeburst.io`
- `itnext.io`
- `proandroiddev.com`
- `infosecwriteups.com`

## Common Issues

| Problem | Solution |
|---------|----------|
| Freedium down | Try alternative mirror: `freedium-mirror.cfd` |
| Article not found | Article may be too new to be cached |
| Garbled HTML | Use WebFetch with prompt: "Extract the article text and format as markdown" |
| 403/blocked | Try curl with `dangerouslyDisableSandbox: true` |

## Quick Reference

```python
# URL encoding in Python
from urllib.parse import quote
encoded = quote(url, safe='')

# For WebFetch tool
freedium_url = f"https://freedium.cfd/{quote(medium_url, safe='')}"
```

Overview

This skill fetches full Medium articles that are behind Medium's metered paywall by trying free mirror services in priority order. It prefers a direct mirror that returns article HTML and falls back to alternatives when the first option is blocked or empty. The skill extracts and returns the article text in a readable format.

How this skill works

Given a Medium or Medium-hosted publication URL, the skill constructs mirror service URLs (URL-encoding where required) and requests them in sequence until a usable response is obtained. The recommended path uses a mirror that returns content directly via a WebFetch-style HTTP fetch. Once content is retrieved, the skill extracts the article body and formats it for presentation (plain text or Markdown).

When to use it

  • You have a Medium article URL that shows a paywall or clipped content.
  • The article lives on a Medium-hosted domain (towardsdatascience, betterprogramming, etc.).
  • You need a quick programmatic way to fetch the full article text for reading or analysis.
  • You want a fallback sequence when the preferred mirror is unavailable.

Best practices

  • Try the primary mirror first; it usually returns clean HTML suitable for extraction.
  • URL-encode the full article URL when constructing mirror requests (slashes -> %2F, @ -> %40).
  • If the primary mirror returns empty or blocked content, try secondary mirrors in order.
  • If HTML looks garbled, re-run the fetch with instructions to extract and format as Markdown.
  • Be mindful of legal and terms-of-service constraints when retrieving paywalled content.

Example use cases

  • User shares https://medium.com/@user/article and you need the full article text.
  • Bulk-processing a list of Medium-hosted article URLs for offline reading or NLP.
  • Automated summarization pipeline that first needs the complete article body.
  • Debugging why an article fetch returns truncated content and switching mirrors.

FAQ

Which mirror should I try first?

Use the mirror that returns content directly via WebFetch; it produces the cleanest HTML for extraction.

What if the mirror is blocked or returns a captcha?

Fallback to other mirrors in sequence. Some services may require a browser or present captchas and will not work via programmatic fetch.

How should I encode the Medium URL?

URL-encode the full article URL (no safe characters) when embedding it into the mirror request path.