noteframe is a Rust CLI tool that converts Markdown notes into Instagram-ready 1080×1080px PNG images. Write a short .md file, run just post, get an image.
just build # cargo build --release
just test # cargo testAlways run just build after making changes to confirm it compiles cleanly before considering a task done.
just post notes/my-note.md # generate image(s) from a note
just new "My Title" # scaffold a new note in notes/
just new "My Title" --layout carousel| File | Responsibility |
|---|---|
src/main.rs |
CLI entrypoint (post and new subcommands via clap) |
src/note.rs |
YAML frontmatter parsing + markdown → slides |
src/render.rs |
Image generation: layout, font sizing, text rendering |
src/fonts.rs |
Font resolution by script (Latin → Merriweather, Persian → Noto Sans Arabic UI) |
---
title: "Post title"
layout: post # post (single image) | carousel (one image per ## section)
bg: "#FAFAF8"
text: "#1A1A1A"
accent: "#AAAAAA"
hashtags: []
---
Body text. Supports **bold**, *italic*, and ***bold italic***.post— single 1080×1080 PNG; title + body vertically centeredcarousel— one PNG per##heading; output namedstem-01.png,stem-02.png, …
- Script is auto-detected from content — no config needed
- Latin/English → Merriweather (regular/italic) + New York Large (bold)
- Persian → Noto Sans Arabic UI Medium; text is right-aligned
- Font size auto-scales based on word count — shorter text renders larger
Generated PNGs are saved alongside the source .md file.
Managed via mise.toml (Rust stable) and Cargo.toml.