Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/a/obsidian-blog
Static site/blog generator for obsidian.md
https://github.com/a/obsidian-blog
blog obsidian-md ssg
Last synced: 6 days ago
JSON representation
Static site/blog generator for obsidian.md
- Host: GitHub
- URL: https://github.com/a/obsidian-blog
- Owner: A
- Created: 2022-01-07T14:24:28.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-08-29T17:05:25.000Z (3 months ago)
- Last Synced: 2024-08-29T18:57:01.163Z (3 months ago)
- Topics: blog, obsidian-md, ssg
- Language: Python
- Homepage: https://obsidian-blog.anto.sh/
- Size: 380 KB
- Stars: 37
- Watchers: 1
- Forks: 4
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
## Obsidian SSG Blog [![PyPI](https://img.shields.io/pypi/v/obsidian-blog)](https://pypi.org/project/obsidian-blog "PyPI")
**DISCLAIMER: Still work-in-progress, so API definitely will change. To use it you'd better to have some programming experience**
The idea is to create a simple blog generated from obsidian [Map Of Content][moc]
notes [original zettelkasten benefit][zettelkasten].### Features
- Yet another static site generator for obsidian.
- Built to use with git, github pages and action.
- Uses handlebars template engine
- Supports `--watch` and `--serve` modes for local writing
- Recursively parses [[includes]] and has cycles detection
- Automatically copies included local images into the build
- Supports `--drafts` mode to work unpublished files locally
- Privacy. Notes can be published only with explicit `published: True` annotation.
- Fluent title detection from [[note | alt title]], frontmatter `title` attribute, or a filename.
- Render notes as links, in case they're included in the middle of the paragraph and have `link` frontmatter attribute.
- Supports filename delimeters: `Topic - Category - Note` becomes just `Note`### Installation
```
pip install obsidian-blog
```### Usage
```
$ obsidian-blog -h
obsidian-blogStatic site generator for obsidian.md notes.
Usage:
obsidian-blog [-d] [-w] [-s] [--port ] [--title ] [--posts_dir ] [--pages_dir ]Options:
-h --help Show this screen.
-w --watch Enable watcher
-s --serve Enable web-server
-p --port= Web-server port [default: 4200]
-d --drafts Render draft pages and posts--title= Blog title [default: My Blog]
--version Show version.
```### Example
See [Obsidian Blog Theme][obsidian-blog-theme]
### Env
`obsidian-blog` expects you have an `.env` file. Supported variables and their default values can be found
in `src/dataclasses/config_data`.### Blog files
```
notes ❯ tree .blog -a -I .git
├── .blog
│ ├── _assets # static files to be copied into .build
│ │ └── styles.css
│ └── _layouts # layout files
│ └── main.hbs # name of layout, can be selected with `layout` frontmatter attribute. Default: `main`
├── .build # build directory created by run `obsidian-blog` to be deployed
├── .env # environment variables
├── Pages # Pages directory, contains handlebars and markdown files
└── Posts # Posts directory contains obsidian markdown files (which are anyway processed via handlebars)
```### Posts
Posts are obsidian markdown files with includes, images, and anything you usually have in your obsidian notes.
Posts are post-processed by handlebars, so you can use it if you need (but not sure if it's a good idea tho).```
---
title: My awesome post
date: 2021-01-01 (used for sorting)
published: True # privacy, can't be skipped
layout: main (default_layout is used if it skipped)
---
```### Pages
Pages are handlebars templates (or just markdown files), rendered via global (`pages` and `posts` lists) and local (`self` points
to the entity being rendered) contexts.### Assets
Assets are divided into 2 types:
- `.blog/_assets` copyed during the build unconditionally
- Images insluded either with markdown reference or incline images, or by obsidian ![[]] syntax. This ones are detected and copyed during the build.### Deployment
So far I'm using github actions to deploy my stuff to [my blog][my-blog].
### Alternatives
- [Obsidian Export][obsidian-export] - cli to render obsidian notes into markdown written in Rust
[moc]: https://www.youtube.com/watch?v=7GqQKCT0PZ4
[zettelkasten]: https://en.wikipedia.org/wiki/Niklas_Luhmann#Note-taking_system_(Zettelkasten)
[my-blog]: https://anto.sh
[obsidian-blog-theme]: https://github.com/A/obsidian-blog-theme/
[obsidian-export]: https://crates.io/crates/obsidian-export