English | δΈζ
typub is a Typst-first, multi-platform publishing tool.
Important: typub depends on typst CLI. You must have typst installed and available in your PATH.
Install typst CLI:
# Via cargo
cargo install typst
# Or via other package managers (see https://github.com/typst/typst for more options)cargo install typubtypub init
typub new "My Post"
typub dev posts/my-post -p ghost
typub publish posts/my-post -p ghostWrite content in Typst (content.typ) or Markdown (content.md). Typst is the primary format with powerful typesetting capabilities, while Markdown provides a familiar alternative. Both formats can be published to any supported platform.
Publish to multiple platforms from a single content source:
- API-based: Dev.to, Ghost, HashNode, Confluence, Notion, WordPress
- Copy-paste (HTML): WeChat, Zhihu, Toutiao, Bilibili, Weibo, Baijiahao, Wangyihao, Sohu, Sspai, OSChina
- Copy-paste (Markdown): CSDN, Juejin, SegmentFault, Cnblogs, Medium, Jianshu, InfoQ, 51CTO, TencentCloud, Aliyun, HuaweiCloud, Elecfans, ModelScope, Volcengine
- Local output: Astro, Static, Xiaohongshu
Preview your content locally before publishing:
- Live reload: Auto-refresh on save with built-in dev server (
typub dev) - Platform-specific preview: See exactly how content renders on each platform
- Theme support: Choose from built-in themes (github, notion, minimal, tech, etc.) or create custom ones
- Math rendering: MathJax-powered LaTeX rendering
# Preview with auto-reload
typub dev posts/my-post -p ghost
# Preview for different platforms
typub dev posts/my-post -p confluenceThemes are configured in meta.toml or typub.toml, not via command-line arguments.
Interactive terminal dashboard for content management:
- Post management: Browse, sort, and manage all your posts
- Platform overview: See publishing status across all platforms at a glance
- Preview content: Preview posts in terminal or browser for selected platform
- Publish control: Selectively publish to individual platforms or all at once
- Real-time progress: Track publishing progress and results
# Launch interactive TUI dashboard
typub tuiChoose how images and other assets are handled:
- embed: Base64 encode inline β small images, no upload dependency
- upload: Upload to platform storage β platforms with native media APIs
- copy: Copy to local output β local/static outputs
- external: Upload to S3-compatible host β CDN, large assets, cross-platform URLs
Render mathematical expressions based on platform capabilities:
- SVG: Platform supports inline SVG β use Typst's native SVG rendering (default)
- LaTeX: Platform requires LaTeX math macros β preserve original LaTeX source
- PNG: Platform supports base64 images but not SVG β rasterize to PNG via resvg
Manage configuration with 5-level resolution priority (highest to lowest):
- Post-platform: Per-content platform-specific (
meta.tomlβ[platforms.<id>]) - Post: Per-content default (
meta.tomlβ top level) - Global-platform: Global platform-specific (
typub.tomlβ[platforms.<id>]) - Global: Global default (
typub.tomlβ top level) - Adapter default (fallback)
- Basic path:
docs/guide/getting-started.md - Platform setup:
docs/guide/adapters.md - Assets:
docs/guide/assets.md - Copy-paste profiles:
docs/guide/profiles.md - Advanced customization:
docs/guide/advanced-customization.md
- Development workflow:
DEVELOPING_GUIDE.md - Agent/contributor guardrails:
CLAUDE.md - Specifications and architecture:
docs/rfc/anddocs/adr/
- Per-platform asset strategy (
embed/upload/copy/external) - External storage integration for cross-platform asset URLs
- Copy-paste profile selection and customization
- Node policy override (
raw/unknown) via platform config
See docs/guide/advanced-customization.md for a platform-agnostic overview.
MIT