{"id":18572402,"url":"https://github.com/a/obsidian-blog","last_synced_at":"2025-08-19T08:38:02.694Z","repository":{"id":43304385,"uuid":"445546835","full_name":"A/obsidian-blog","owner":"A","description":"Static site/blog generator for obsidian.md","archived":false,"fork":false,"pushed_at":"2024-08-29T17:05:25.000Z","size":389,"stargazers_count":41,"open_issues_count":5,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T18:05:34.122Z","etag":null,"topics":["blog","obsidian-md","ssg"],"latest_commit_sha":null,"homepage":"https://obsidian-blog.anto.sh/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/A.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-07T14:24:28.000Z","updated_at":"2025-02-12T17:35:10.000Z","dependencies_parsed_at":"2024-12-04T05:40:48.141Z","dependency_job_id":null,"html_url":"https://github.com/A/obsidian-blog","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/A%2Fobsidian-blog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/A%2Fobsidian-blog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/A%2Fobsidian-blog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/A%2Fobsidian-blog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/A","download_url":"https://codeload.github.com/A/obsidian-blog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248176309,"owners_count":21060044,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blog","obsidian-md","ssg"],"created_at":"2024-11-06T23:06:06.027Z","updated_at":"2025-04-10T07:31:19.737Z","avatar_url":"https://github.com/A.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Obsidian SSG Blog [![PyPI](https://img.shields.io/pypi/v/obsidian-blog)](https://pypi.org/project/obsidian-blog \"PyPI\")\n\n**DISCLAIMER: Still work-in-progress, so API definitely will change. To use it you'd better to have some programming experience**\n\nThe idea is to create a simple blog generated from obsidian [Map Of Content][moc]\nnotes [original zettelkasten benefit][zettelkasten].\n\n### Features\n\n- Yet another static site generator for obsidian.\n- Built to use with git, github pages and action.\n- Uses handlebars template engine\n- Supports `--watch` and `--serve` modes for local writing\n- Recursively parses [[includes]] and has cycles detection\n- Automatically copies included local images into the build\n- Supports `--drafts` mode to work unpublished files locally\n- Privacy. Notes can be published only with explicit `published: True` annotation.\n- Fluent title detection from [[note | alt title]], frontmatter `title` attribute, or a filename.\n- Render notes as links, in case they're included in the middle of the paragraph and have `link` frontmatter attribute.\n- Supports filename delimeters: `Topic - Category - Note` becomes just `Note`\n\n### Installation\n\n```\npip install obsidian-blog\n```\n\n### Usage\n\n```\n$ obsidian-blog -h\nobsidian-blog\n\nStatic site generator for obsidian.md notes.\n\nUsage:\n  obsidian-blog [-d] [-w] [-s] [--port \u003cnumber\u003e] [--title \u003cstring\u003e] [--posts_dir \u003cdirectory\u003e] [--pages_dir \u003cdirectory\u003e]\n\nOptions:\n  -h --help                     Show this screen.\n  -w --watch                    Enable watcher\n  -s --serve                    Enable web-server\n  -p --port=\u003cnumber\u003e            Web-server port [default: 4200]\n  -d --drafts                   Render draft pages and posts\n\n  --title=\u003cstring\u003e              Blog title [default: My Blog]\n\n  --version             Show version.\n```\n\n### Example\n\nSee [Obsidian Blog Theme][obsidian-blog-theme]\n\n### Env\n\n`obsidian-blog` expects you have an `.env` file. Supported variables and their default values can be found\nin `src/dataclasses/config_data`.\n\n### Blog files\n\n```\nnotes ❯ tree .blog -a -I .git\n├── .blog\n│   ├── _assets # static files to be copied into .build\n│   │   └── styles.css\n│   └── _layouts # layout files\n│       └── main.hbs # name of layout, can be selected with `layout` frontmatter attribute. Default: `main`\n├── .build # build directory created by run `obsidian-blog` to be deployed\n├── .env # environment variables\n├── Pages # Pages directory, contains handlebars and markdown files\n└── Posts # Posts directory contains obsidian markdown files (which are anyway processed via handlebars)\n```\n\n### Posts\n\nPosts are obsidian markdown files with includes, images, and anything you usually have in your obsidian notes.\nPosts are post-processed by handlebars, so you can use it if you need (but not sure if it's a good idea tho).\n\n```\n---\ntitle: My awesome post\ndate: 2021-01-01 (used for sorting)\npublished: True # privacy, can't be skipped\nlayout: main (default_layout is used if it skipped)\n---\n```\n\n### Pages\n\nPages are handlebars templates (or just markdown files), rendered via global (`pages` and `posts` lists) and local (`self` points\nto the entity being rendered) contexts.\n\n### Assets\n\nAssets are divided into 2 types:\n- `.blog/_assets` copyed during the build unconditionally\n- Images insluded either with markdown reference or incline images, or by obsidian ![[\u003cfile\u003e]] syntax. This ones are detected and copyed during the build.\n\n### Deployment\n\nSo far I'm using github actions to deploy my stuff to [my blog][my-blog].\n\n### Alternatives\n\n- [Obsidian Export][obsidian-export] - cli to render obsidian notes into markdown written in Rust\n\n[moc]: https://www.youtube.com/watch?v=7GqQKCT0PZ4\n[zettelkasten]: https://en.wikipedia.org/wiki/Niklas_Luhmann#Note-taking_system_(Zettelkasten)\n[my-blog]: https://anto.sh\n[obsidian-blog-theme]: https://github.com/A/obsidian-blog-theme/\n[obsidian-export]: https://crates.io/crates/obsidian-export\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fa%2Fobsidian-blog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fa%2Fobsidian-blog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fa%2Fobsidian-blog/lists"}