{"id":21387101,"url":"https://github.com/russmatney/org-blog","last_synced_at":"2025-08-21T12:46:53.301Z","repository":{"id":63106942,"uuid":"546093532","full_name":"russmatney/org-blog","owner":"russmatney","description":"A clojure (clerk and org-crud) based blog","archived":false,"fork":false,"pushed_at":"2023-05-01T17:42:23.000Z","size":429,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-13T15:43:04.340Z","etag":null,"topics":["blog","clerk","clojure","org-mode"],"latest_commit_sha":null,"homepage":"","language":"Clojure","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/russmatney.png","metadata":{"files":{"readme":"readme.org","changelog":null,"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-10-05T14:08:24.000Z","updated_at":"2023-10-08T03:34:53.000Z","dependencies_parsed_at":"2024-11-22T12:11:52.518Z","dependency_job_id":"68252124-35dc-4029-a5f3-1034c83f4b01","html_url":"https://github.com/russmatney/org-blog","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/russmatney/org-blog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/russmatney%2Forg-blog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/russmatney%2Forg-blog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/russmatney%2Forg-blog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/russmatney%2Forg-blog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/russmatney","download_url":"https://codeload.github.com/russmatney/org-blog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/russmatney%2Forg-blog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271484539,"owners_count":24767765,"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","status":"online","status_checked_at":"2025-08-21T02:00:08.990Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","clerk","clojure","org-mode"],"created_at":"2024-11-22T12:11:50.185Z","updated_at":"2025-08-21T12:46:53.230Z","avatar_url":"https://github.com/russmatney.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"#+title: Org Blog\n\nNOTE: I've refactored and absorbed this repo into [[https://github.com/russmatney/clawe][Clawe]], my dev-tools monorepo.\n\nI'll leave the repo as-is as a reference, as the implementation is roughly the\nsame.\n\n---\n\nHopefully the last time I overengineer my blog.\n\nI was curious if I could combine the clerk devloop with a blog based on an\norg-roam mind-garden - this repo is that experiment!\n\nYou can see the current state of it here: https://russmatney.com/\n\n- A static blog generator written in clojure\n- Pulls content primarily from an org ([[https://github.com/org-roam/org-roam][org-roam]]) directory\n- Uses [[https://github.com/nextjournal/clerk][clerk]] to define and render the pages (as notebooks) via clojure dynamic vars\n  - The ~org-blog.pages.*~ namespaces define the pages and provide a nice dev-loop when working on them\n- Uses [[https://github.com/russmatney/org-crud][russmatney/org-crud]] to parse the org content\n\n* Status: experimental\nThis is just getting started - plenty of quirks and details left to iron out.\n\nFor now I'm enjoying the repl feedback loop via clerk and the org-watcher (see\n~org-blog.watcher~, which calls ~clerk/recompute!~ when an org-file is changed).\n\n** Quirks and details\n- The static clerk frontend pages are not necessarily SEO/crawler friendly -\n  the static clerk frontends are big data blobs that run via scittle when the\n  page loads. (I'm assuming this, but maybe crawlers run/eval js these days?)\n- The header is kind of hacked into the base hiccup/html (See the\n  ~org-blog.render~ namespace). The devloop for working with this is not great\n  at the moment, as it only shows up in the static export. Probably a new base\n  notebook viewer should be written for the entire blog, to provide some new\n  theming (so we're not just reusing the clerk notebook styles). I've taken a\n  shot or two at this, but don't fully grok it yet - viewers seem to be coupled\n  tightly to the ~clerk.sci-viewer~ implementation, so that needs to be learned\n  to implement a new blog-notebook-viewer.\n- The clerk pages are rendered for each note via clojure's dynamic bindings,\n  which might be kind of crazy(?).\n- Namespaces and functionality from [[https://github.com/russmatney/clawe][russmatney/clawe]] are baked in for now -\n  these were convenient to get things going, but would hopefully be brought into\n  this repo and that dependency should be dropped.\n- Indexes, navigation, and backlinks are a WIP. There is only a last-modified\n  index for now - tag indexes and backlinking content should be added/improved.\n\n** Fairly opinionated\nIn general, the way this works is fairly opinionated at the moment - the daily\nnotes only publish sub-items that have tags, and certain tags are filtered completely.\n\nThe notes need to be opted-into via the ~org-blog.export~ miniapp (run\nclerk/show! in that namespace to render some buttons for 'publishing' recent\nnotes). I hope to build this and other namespaces into clerk notebooks that\nmake managing the content easier.\n\nPublishing right now requires the repl - I call ~org-blog.publish/publish-all~\nto create the latest ~./public~ dir.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frussmatney%2Forg-blog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frussmatney%2Forg-blog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frussmatney%2Forg-blog/lists"}