Automatically pulls your published blog posts (Substack / Ghost) into your local Obsidian or Logseq vault for AI-assisted repurposing.
text
Blog Source → Fetch Posts → HTML → Markdown → Write to Vault
(Substack RSS / Ghost API) (stdlib) (frontmatter + body)
SourceAuthNotesSubstackNone (public RSS)Reads the /feed endpointGhostContent API key ( id:secret)Uses Admin API JWT auth
FormatFrontmatterFilenameObsidianYAML block ( --- delimited){slug}.mdLogseqProperty list ( key:: value){date} {slug}.md
Every synced post includes:
FieldDescriptiontitlePost titlesource``substack or ghost``urlOriginal post URLpublishedPublication datesyncedTimestamp of last syncpost_idStable hash-based ID for deduptags(Ghost only) Tag namesexcerpt(Ghost only) Post excerptfeature_image(Ghost only) Hero image URL
bash
# Substack — just the URL
python3 sync.py add-substack --url https://example.substack.com
# Ghost — URL + API key
python3 sync.py add-ghost --url https://myblog.ghost.io --api-key abc123:def456...
bash
python3 sync.py sync --vault /path/to/obsidian-vault
bash
python3 sync.py list
python3 sync.py config
Once posts are in your vault, use your AI assistant to:
Posts land as standard Markdown files, so they work with any Obsidian plugin, Logseq graph, or AI tool that reads .md files.