https://github.com/lucifer1004/typub
Typub - A Typst-first local CMS
https://github.com/lucifer1004/typub
markdown publish typst
Last synced: 2 months ago
JSON representation
Typub - A Typst-first local CMS
- Host: GitHub
- URL: https://github.com/lucifer1004/typub
- Owner: lucifer1004
- License: mit
- Created: 2026-02-13T10:06:51.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-04-04T01:23:18.000Z (2 months ago)
- Last Synced: 2026-04-04T03:26:18.559Z (2 months ago)
- Topics: markdown, publish, typst
- Language: Rust
- Homepage: https://lucifer1004.github.io/typub/
- Size: 14.4 MB
- Stars: 29
- Watchers: 0
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# typub
**English** | [δΈζ](./README_CN.md)
typub is a Typst-first, multi-platform publishing tool.
## User Basics
### Prerequisites
**Important:** typub depends on [typst CLI](https://github.com/typst/typst). You must have `typst` installed and available in your PATH.
Install typst CLI:
```bash
# Via cargo
cargo install typst
# Or via other package managers (see https://github.com/typst/typst for more options)
```
### Install
```bash
cargo install typub
```
### Minimal flow
```bash
typub init
typub new "My Post"
typub dev posts/my-post -p ghost
typub publish posts/my-post -p ghost
```
## Key Features
### π― Typst-first with Markdown-compatibility
Write 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.
### π Multiple-platform Compatibility
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
### π Dev Preview
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
```bash
# Preview with auto-reload
typub dev posts/my-post -p ghost
# Preview for different platforms
typub dev posts/my-post -p confluence
```
Themes are configured in `meta.toml` or `typub.toml`, not via command-line arguments.
### π₯οΈ Terminal User Interface (TUI)
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
```bash
# Launch interactive TUI dashboard
typub tui
```
### π¦ 4 Asset Strategies
Choose 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
### π 3 Math Rendering Strategies
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
### βοΈ Layered Config System
Manage configuration with 5-level resolution priority (highest to lowest):
1. **Post-platform**: Per-content platform-specific (`meta.toml` β `[platforms.]`)
2. **Post**: Per-content default (`meta.toml` β top level)
3. **Global-platform**: Global platform-specific (`typub.toml` β `[platforms.]`)
4. **Global**: Global default (`typub.toml` β top level)
5. Adapter default (fallback)
---
## Showcases
### Preview Examples



---
## Documentation Map
### For users (publishing content)
- 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`
### For developers (contributing to typub)
- Development workflow: `DEVELOPING_GUIDE.md`
- Agent/contributor guardrails: `CLAUDE.md`
- Specifications and architecture: `docs/rfc/` and `docs/adr/`
## User Advanced Features
- 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.
## License
MIT