# Substack

> Substack

- Skill: `spike-faye-lei/substack` (Agent Skill, multi-file: 11 files)
- Install (CLI): `npx skillmds@latest add spike-faye-lei/substack`
- Raw SKILL.md: https://api.skillmd.com/api/skills/spike-faye-lei/substack/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: spike-faye-lei (https://skillmd.com/u/spike-faye-lei)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/spike-faye-lei/substack

---

# Substack

## Overview
Newsletter and long-form content platform. Content platform archetype.

## Workflows

### Find and read a post
1. `searchPosts(query)` → `slug`, `publication.subdomain`
2. `getPost(subdomain=publication.subdomain, slug)` → full article with `body_html`

### Browse a publication's posts
1. `getArchive(subdomain)` → posts with `id`, `slug`
2. `getPost(subdomain, slug)` → full article with `id`, `title`, `body_html`
3. `getPostComments(subdomain, postId=id)` → discussion with `body`, `name`, `children`

### Search within a publication
1. `getArchive(subdomain, search="keyword")` → filtered posts with `slug`
2. `getPost(subdomain, slug)` → full article

## Operations

| Operation | Intent | Key Input | Key Output | Notes |
|-----------|--------|-----------|------------|-------|
| searchPosts | find posts by keyword | query | title, slug, publication.subdomain, post_date | entry point; cross-publication |
| getArchive | list/search posts in a publication | subdomain ← searchPosts (or known) | id, title, slug, post_date, audience | paginated (offset, limit) |
| getPost | read full article | subdomain, slug ← searchPosts / getArchive | title, body_html, word_count, reaction_count | slug from search or archive |
| getPostComments | read discussion | subdomain, postId ← getArchive / getPost | body, name, date, reaction_count, children | nested replies via children |

## Quick Start

```bash
# Search for posts about AI
openweb substack exec searchPosts '{"query":"artificial intelligence"}'

# List recent posts from a publication
openweb substack exec getArchive '{"subdomain":"astralcodexten","sort":"new","limit":5}'

# Read a specific post
openweb substack exec getPost '{"subdomain":"astralcodexten","slug":"open-thread-427"}'

# Get comments on a post
openweb substack exec getPostComments '{"subdomain":"astralcodexten","postId":158504113}'
```

