Skip to content
Back to skills

Content Rescue

ASecurity

> Rescue your content from enshittified platforms. Own it as clean, git-committed, > universal Markdown + local assets you control and republish. > > Part of MOOLLM. Glance: `GLANCE.yml` · Interface: `CARD.yml` · Scripts: `scripts/`

  • 56 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
content-marketingpythongobashgitapi

Works with

  • cursor
  • api
  • mcp

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned October 6, 2026

npx -y skills add SimHacker/moollm --skill content-rescue --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Content Rescue?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Content Rescue
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/simhacker-content-rescue/badge)](https://www.skillsdirectory.com/skills/simhacker-content-rescue)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# content-rescue 🛟

> Rescue your content from enshittified platforms. Own it as clean, git-committed,
> universal Markdown + local assets you control and republish.
>
> Part of MOOLLM. Glance: `GLANCE.yml` · Interface: `CARD.yml` · Scripts: `scripts/`

## Why

Platforms enshittify; your writing, images, and talks shouldn't be hostage to them.
This skill repatriates **your own** content (and clearly public material — HN is still
good) into **local, diffable, universal Markdown + assets** under version control.
*If it's not on git, it don't exist.*

## The core trick

> **The page may be walled; the asset CDN usually isn't.**

A `curl` of a Medium article is often bot-walled to a ~5KB stub. But:
1. the image CDN (`miro.medium.com`) serves assets freely, and
2. the rendered page embeds `window.__APOLLO_STATE__` — every image id + caption, in
   paragraph order, independent of lazy-loading.

So we **extract the manifest from embedded page state in a real browser**, then **fetch
assets directly from the open CDN**. (Born from the 2026-06-27 Will-Wright rescue: 167
images pulled in order, captioned, and wired into the local transcript.)

## Protocol

### EXTRACT-MANIFEST `FROM <url> [VIA browser]`
When `curl` is walled, open the page in a real browser. The **Cursor browser MCP** is
ideal headless:
- `browser_navigate` → the article,
- `browser_cdp` → `Runtime.evaluate` (`returnByValue: true`) running
  `scripts/medium_extract_manifest.js` (image block) → ordered `index|id|caption` lines;
  run the video block for embedded YouTube ids.

Save the image lines to `manifest.psv`. (Generic sites: derive `id|caption` from
`<figure>`/`srcset`/JSON-LD, or put full asset URLs in column 2.)

### FETCH-ASSETS `FROM <manifest.psv> TO <dir>`
```bash
python3 scripts/fetch_images.py manifest.psv images --source-url '<article url>'
```
Downloads each asset in order as `NNN-slug.ext` (extension auto-detected), and emits
`images/INDEX.md` (a captioned, ordered gallery = an illustrated transcript) and
`images/map.tsv`. Re-runnable (skips existing).

### WIRE-MARKDOWN `<text-capture> WITH <gallery>`
Localize a text capture into clean universal Markdown:
- fix the "images omitted" placeholder; link the gallery (`images/INDEX.md`),
- inline figures at their caption anchors where the prose preserves them,
- collect embedded video links into a `videos.md`,
- keep provenance + third-party credits.

### SCRAPE-HN `<user|thread>`
Harvest a user's HN comments/threads (HN's API/site are scrape-friendly) into
YAML/Markdown capture files. (HN is one of the good ones — preserve, don't fight it.)

## Ethics
- For the **author's own** content or clearly public material. Respect robots/ToS and
  others' copyright; **credit third-party assets** (the gallery caption carries it).
- Polite single-pass fetches; re-runnable so you don't hammer.

## Roadmap (sibling skills, planned — see `CARD.yml` related_planned_skills)
- **youtube** — transcripts/STT/cleanup, speaker + section splitting, timecoded refs,
  ingest interviews → STT → cleanup, publish via the Data API.
- **stream-deck** — Twitch + OBS (and alternatives/plugins) screencast control + metadata.
- **publish-sync** — git-centric auto-publish + cross-service sync (YouTube/Twitch/GitHub)
  via GitHub Action workflows.

## Part of MOOLLM
A standalone, publishable skill. Related: `skills/card` (a rescued page can become a
CARD), `skills/cursor-mirror` (introspection sibling, same `scripts/` pattern).

Files in this skill

  • CARD.yml3.3 KB
  • GLANCE.yml2.3 KB
  • SKILL.md3.4 KB
  • scripts/README.md1.4 KB
  • scripts/fetch_images.py4.1 KB
  • scripts/medium_extract_manifest.js2.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…