A minimalistic static site generator written in Rust.
picoblog turns a directory of Markdown and text files into a single, self-contained index.html with built-in search1 and tag filtering. It's designed for speed, simplicity, and zero-dependency deployment.
- Single-Page Output: Generates one index.html for easy hosting.
- Client-Side Search: Instant full-text search with a pre-built JSON index.
- Tag Filtering: Dynamically generates tag buttons to filter posts.
- Flexible Content: Supports YAML frontmatter and infers metadata from filenames.
- Automatic Favicons: Creates favicons from your blog's title.
- Highly Portable: A single, dependency-free binary.
Done! Your new blog is ready in the public/ directory. Open public/index.html in your browser to see it.
Place your .md and .txt files in a source directory (or many).
Markdown with Frontmatter (.md):
Plain Text (.txt):
The filename is used for the title and date (e.g., 2024-10-26-quick-note.txt).
Of course. Here is the elaborated section on the share syntax for the README.
You can generate social media sharing links for each article using the --share flag. This flag can be used multiple times to define different sharing providers.
The format for the flag is: --share "PROVIDER_NAME:URL_TEMPLATE"
- PROVIDER_NAME: The text that will be displayed for the link (e.g., "X", "LinkedIn", "Reddit").
- URL_TEMPLATE: The sharing URL provided by the social media platform.
The URL_TEMPLATE can contain the following placeholders, which picoblog will automatically replace with the article's data. The values are URL-encoded for safety.
- {URL}: Replaced by the article's link_url from the frontmatter or the first URL found in the post content.
- {TITLE}: Replaced by the article's title.
- {TEXT}: Replaced by the raw content of the article (the Markdown or text body).
Here are some common examples of how to use the --share flag:
For X (formerly Twitter):
For LinkedIn:
For Reddit:
For Email:
Combining Multiple Providers:
To include links for X, LinkedIn, and Reddit, simply use the flag for each one:
-
For security reasons, search only works when the site is being server through a server. ↩
.png)



