Skip to content

feat(typefully): add Substack Notes platform support - #31

Merged
frankdilo merged 2 commits into
mainfrom
claude/typ-7359-23e659
Jul 29, 2026
Merged

feat(typefully): add Substack Notes platform support#31
frankdilo merged 2 commits into
mainfrom
claude/typ-7359-23e659

Conversation

@frankdilo

Copy link
Copy Markdown
Contributor

What

Adds Substack Notes (shipped in Typefully on July 27) to the agent skill and CLI. Closes TYP-7359.

  • substack joins POST_PLATFORM_ORDER, so it works with --platform substack, is included in --all and platform auto-selection when connected, and resolves correctly on drafts:update.
  • New CLI-side validation: thread content (--- separators or --append) targeting substack now fails fast with a clear error instead of surfacing the API's generic 422 (List should have at most 1 item...).
  • SKILL.md documents the platform: single post per draft, 10,000 character limit, images/GIFs only (up to 6, no video), and how --all interacts with thread content. Platform lists updated in README, CLAUDE.md, marketplace.json, and x-articles.md; dated changelog entry added.
  • 4 new tests: substack create payload, --all inclusion, thread rejection on create, --append rejection on update.

Why

Agents using the skill had no way to target Substack Notes, and without the fail-fast check they'd hit an unhelpful 422 when drafting threads to it.

Reviewer notes

  • Constraints were verified against both the live API v2 (created/updated/deleted real drafts, including the X-thread + single-note mixed draft pattern the docs recommend) and the backend source: SubstackPlatform schema (max_items=1, plain Post with extra=forbid), SUBSTACK_CONFIG media limits (image=6, video=0, gif=6), and SUBSTACK_NOTE_MAX_CHARS = 10_000 (enforced at publish time only — hence documenting it so agents draft within it).
  • API v2 does not fetch link previews for substack (LINK_PREVIEW_PLATFORMS excludes it), so the existing link-preview docs are unchanged; a possible backend follow-up for that is tracked separately.
  • Full suite: 124 tests passing.

frankdilo and others added 2 commits July 29, 2026 14:35
Typefully shipped Substack Notes (July 27); this adds it to the agent
skill and CLI (TYP-7359):

- Add substack to POST_PLATFORM_ORDER so it works with --platform,
  --all, platform auto-selection, and drafts:update platform resolution
- Fail fast when thread content (--- separators or --append) targets
  substack: the API allows a single post per note, and its 422 is less
  actionable than a CLI-side error
- Document the platform in SKILL.md (single-post constraint, 10,000
  character limit, images/GIFs only with no video), README, CLAUDE.md,
  marketplace.json, and the skill changelog

Constraints verified against the live API v2 and the backend
implementation (SubstackPlatform schema, SUBSTACK_CONFIG media limits,
SUBSTACK_NOTE_MAX_CHARS).
…ide-link-preview

Backend PR typefully-backend#1802 adds Substack Notes to API v2's
link-preview platforms: API-created notes with a URL now publish with a
rich link card (skipped when the note has images), and the API accepts
hide_link_preview on the substack post.

- Add substack to HIDE_LINK_PREVIEW_PLATFORMS so --hide-link-preview
  applies to Substack Notes alongside LinkedIn and Threads (matching the
  editor's per-note hide control).
- Update SKILL.md link-preview docs and the flags table; add a CHANGELOG
  entry.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@frankdilo

Copy link
Copy Markdown
Contributor Author

Pushed a follow-up commit covering Substack Notes link previews: typefully/typefully-backend#1802 adds substack to API v2's link-preview platforms, so API-created notes with a URL now publish with a link card and accept hide_link_preview. This PR's docs and CLI now reflect that — --hide-link-preview supports substack, SKILL.md documents the card (including that images suppress it), and the CHANGELOG has an entry.

⚠️ Merge order: the backend PR should deploy before (or together with) this one, since the skill now documents behavior that only exists with that change.

🤖 Generated with Claude Code

@frankdilo
frankdilo merged commit 8ab1e74 into main Jul 29, 2026
2 checks passed
@frankdilo
frankdilo deleted the claude/typ-7359-23e659 branch July 29, 2026 14:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant