SN
Substack Notes Scraper
🟡 Experimental🕐 updated 2026-06-08
🔷 SkillSpec L3
pm-writers
Scrapes a Substack Notes page and exports engagement data to a formatted .xlsx file. Use when asked to download, analyse, or export Substack Notes performance data including likes, comments, and restacks. Produces a formatted spreadsheet with conditional formatting, summary stats, and per-note engagement metrics.
🗣 Say this to your agent
“Scrape my Substack Notes and export to Excel — my handle is @handle, last 60 days”“Use the substack-notes-scraper skill on https://substack.com/@handle/notes for Q1 2026”“Pull my notes engagement data into a spreadsheet”“Export my Substack Notes stats with likes and restacks — author: Jane Smith, Jan–Mar 2026”“Run the Substack scraper on my notes page and show me which posts performed best”
What to give it
▸Notes URL — `https://substack.com/@handle/notes`
▸Author handle or name — `@handle` or `Jane Smith`
▸Date range — `last 30 days` or `Jan 2026 – Mar 2026`
✅ The bar it holds itself to
Every skill in this library self-verifies — these are this skill's own quality checks, straight from its definition.
✓All three required inputs were confirmed before starting
✓Rate limiting honored: 2-second delay between paginated requests
✓Author filter applied correctly — restacks are included as rows but flagged, not silently dropped
✓Date range filter applied — no notes outside the window appear in the data
✓Total Engagement column is Likes + Comments + Restacks (not hardcoded)
✓Top 20% highlight is based on the actual data distribution, not a fixed threshold
✓Header row is frozen and auto-filter is active
✓Summary sheet stats reference only `original` notes, not restacks
⚠️ What it refuses to do
Do not proceed without a valid Substack handle or profile URL — scraping without a specific target cannot be completed
Do not ignore rate-limit responses from Substack — implement backoff and reduce request frequency before retrying
Do not export data without conditional formatting and summary stats — raw data without visualisation is not the expected output
Do not attempt to access private or subscriber-only notes — this skill is for public Notes content only
Do not produce output without a clear date range filter — undated exports make trend analysis impossible
Install
npx pm-claude-skills add --agent claude # or codex · cursor · gemini · hermes
# or one-line MCP (every skill, any client):
claude mcp add pm-skills -- npx -y pm-claude-skills-mcp
Start with
Related skills
🔌 Embed this skill
Drop this on your blog, docs, or site — it renders a "Run this skill" card:
<div data-pm-skill="substack-notes-scraper"></div>
<script src="https://mohitagw15856.github.io/pm-claude-skills/embed.js" async></script>
💬 Discussion
Substack Notes Scraper is one of 1174 open-source professional AI agent skills — all SkillSpec L3.
Try them all in the browser · ⭐ Star on GitHub · Browse the full catalog