{"id":"567e5cd7-c7eb-43f5-9c85-353e3e0c7032","slug":"substack-migration-skill","kind":"skill","name":"substack-migration-skill","summary":"Claude Code skill: offline audit of your Substack export ZIP before migrating - report, cleaned subscriber CSV, post dependency inventory","owner":"david-is-back","repoUrl":"https://github.com/david-is-back/substack-migration-skill","license":"MIT","licenseTier":"permissive","trust":"community","stars":2,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-07-09T13:55:21.000Z","addedAt":"2026-10-21T13:21:58.422Z","logoUrl":"https://avatars.githubusercontent.com/u/58107918?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["developer-tools","files-documents"],"tags":["claude-code","newsletter-migration","substack"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-22T21:27:12.511Z","sample":false,"url":"https://conduits.dev/tools/substack-migration-skill","language":"Python","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# substack-migration-check\n\nA [Claude Code](https://claude.com/claude-code) skill that audits a Substack\nexport ZIP before you migrate to another newsletter platform. Companion to the\n[Substack Migration Checklist](https://github.com/david-is-back/substack-migration-checklist).\n\n## What it does\n\nPoint it at the ZIP you downloaded from Substack and it produces, fully offline:\n\n- **`report.md`** — export integrity, subscriber list audit, and post archive\n  dependencies, with exact counts, plus the manual steps that remain.\n- **`subscribers-cleaned.csv`** — import-ready list (malformed and duplicate\n  emails removed, disabled addresses excluded, paid status flagged), matching\n  the checklist's platform-agnostic template.\n- **`subscribers-excluded.csv`** — every excluded contact and why, for review.\n- **`posts-inventory.csv`** — per post: Substack-hosted images, substack.com\n  links, embeds, paywall status — everything that needs attention when moving\n  your archive.\n\nYour original export is never modified.\n\n## Privacy\n\nEverything runs locally. Subscriber data is processed only by a\ndependency-free Python script on your machine; the AI model only sees\naggregate counts and redacted samples (`a***@example.com`). No network access.\n\n## Requirements\n\n- [Claude Code](https://claude.com/claude-code)\n- Python 3.9+ (standard library only — nothing to `pip install`)\n\n## Install\n\nAs a plugin (recommended — gets updates through the plugin system):\n\n```\n/plugin marketplace add david-is-back/substack-migration-skill\n/plugin install substack-migration-check@substack-migration-check\n```\n\nOr as a personal skill:\n\n```bash\ngit clone https://github.com/david-is-back/substack-migration-skill ~/.claude/skills/substack-migration-check\n```\n\nThe target directory name must be `substack-migration-check` (the skill name).\n\n## Use\n\nIn Claude Code:\n\n> Check my Substack export at ~/Downloads/my-export.zip — I'm migrating.\n\nArtifacts land in `migration-check/` next to your ZIP.\n\n## Development\n\n```bash\npython -m unittest discover -s tests -v\n```\n\nMIT licensed. Issues and PRs welcome.\n"}