You publish on Substack or Ghost. You want to repurpose those posts — turn them into threads, newsletters, summaries, or follow-ups. But your posts live on a remote CMS, and your AI tools live in your local Obsidian or Logseq vault. The gap between them is manual copy-paste.
Ghost-Writer Sync bridges that gap. One command pulls all your published blog posts into your local vault as Markdown files with rich metadata. Your AI assistant can then read, remix, and repurpose them directly.
python3 sync.py sync --vault ~/my-obsidian-vault- Substack support — reads the public RSS feed, no API key needed
- Ghost support — connects via Content API with admin JWT auth
- HTML to Markdown — converts rich post content to clean Markdown
- Dual format — Obsidian (YAML frontmatter) or Logseq (property list)
- Rich metadata — title, URL, publish date, tags, excerpts, sync timestamp
- Zero dependencies — pure Python standard library
# Add a Substack publication
python3 ghost-writer-sync/sync.py add-substack --url https://example.substack.com
# Add a Ghost blog
python3 ghost-writer-sync/sync.py add-ghost --url https://myblog.ghost.io --api-key abc123:def456...
# Sync everything to your vault
python3 ghost-writer-sync/sync.py sync --vault ~/ObsidianVaultPosts appear in ~/ObsidianVault/Ghost-Writer/ as .md files.
| Source | Authentication | What it fetches |
|---|---|---|
| Substack | None (public RSS) | Title, URL, date, full HTML body |
| Ghost | Content API key (id:secret) |
Title, URL, date, HTML body, tags, excerpt, feature image |
---
title: "My Blog Post"
source: substack
url: https://example.substack.com/p/my-post
published: 2024-03-15
synced: 2024-03-20T12:00:00Z
post_id: a1b2c3d4e5f6
---
# Post content in Markdown...title:: My Blog Post
source:: substack
url:: https://example.substack.com/p/my-post
published:: 2024-03-15
synced:: 2024-03-20T12:00:00Z
Post content in Markdown...Once posts are synced into your vault:
- Rewrite as Twitter/X threads
- Generate LinkedIn summaries
- Compile into a weekly newsletter
- Extract key quotes and talking points
- Draft follow-up posts based on themes
- Build a content calendar from your archive
ghost-writer-sync/
├── SKILL.md # OpenClaw skill definition
└── sync.py # Core sync engine (single file, stdlib only)
- Python 3.10 or later
- No external packages
MIT