{"id":13771764,"url":"https://github.com/kconner/gloggery","last_synced_at":"2025-12-30T02:25:51.492Z","repository":{"id":55373391,"uuid":"283071298","full_name":"kconner/gloggery","owner":"kconner","description":"Gemtext blog static site generator","archived":false,"fork":false,"pushed_at":"2021-01-04T20:21:52.000Z","size":40,"stargazers_count":32,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-17T07:34:30.550Z","etag":null,"topics":["gemini","gemlog","glog","go","golang","ssg","static-site-generator"],"latest_commit_sha":null,"homepage":"","language":"Go","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/kconner.png","metadata":{"files":{"readme":"README.md","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}},"created_at":"2020-07-28T02:08:48.000Z","updated_at":"2024-09-09T01:29:22.000Z","dependencies_parsed_at":"2022-08-14T22:50:19.653Z","dependency_job_id":null,"html_url":"https://github.com/kconner/gloggery","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kconner%2Fgloggery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kconner%2Fgloggery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kconner%2Fgloggery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kconner%2Fgloggery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kconner","download_url":"https://codeload.github.com/kconner/gloggery/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253518941,"owners_count":21921074,"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":["gemini","gemlog","glog","go","golang","ssg","static-site-generator"],"created_at":"2024-08-03T17:00:55.230Z","updated_at":"2025-12-30T02:25:51.465Z","avatar_url":"https://github.com/kconner.png","language":"Go","funding_links":[],"categories":["Tools"],"sub_categories":["Graphical"],"readme":"# gloggery\n\ngloggery is a basic static site generator for blogs in [Gemini](https://gemini.circumlunar.space), usually called gemlogs or glogs. Visit [gloggery's home on Gemini](gemini://tilde.team/~easeout/gloggery).\n\nFor posts, gloggery uses a simple post filename convention and plain text content.\n\nWhen you run gloggery, it builds one post page per post, one index page to list all posts, and one Atom feed file to list recent posts. You can customize the templates for these page types.\n\nTo serve your built pages, find a server you like at [Awesome Gemini](https://github.com/kr1sp1n/awesome-gemini).\n\n## Setup\n\n1. Have a [Go language](https://golang.org) environment\n2. `make install`\n\nmake will build the executable, `gloggery`, and install it in `~/bin` by default. You can change that by setting the `prefix` variable; by default it is `$HOME`.\n\nInstalling will also create an empty `~/.gloggery/posts` folder and copy default page templates to `~/.gloggery/templates`.\n\n## Writing posts\n\nFirst, have a look at the [example post files](https://github.com/kconner/gloggery/tree/main/posts).\n\nTo create a post, add a file to `~/.gloggery/posts`, named like:\n\n`2020-08-15-1427-hello-world`\n\nThis filename consists of the UTC year, month, day, and 24-hour time of day, plus a readable but URL-friendly slug title. You can get the current date and time with `date -u +%Y-%m-%d-%H%M`.\n\nInside the file, the first line (text up to the first `\\n\\n`) will be treated as the post title. The rest of the file is the post body, in which you can write Gemtext or just plain text.\n\n\u003e To make the most of your glog, you will want to understand Gemtext syntax, described by section 5 of the [Gemini specification](https://gemini.circumlunar.space/docs/specification.html). Link lines, which begin with `=\u003e`, are of particular interest.\n\n## Publishing\n\nGiven posts, templates, and a few other bits of information, gloggery will generate Gemtext page files and an Atom feed, all of which you can serve up with the Gemini protocol.\n\nFirst, run `gloggery --help` and understand its arguments.\n\nBy default, gloggery consumes posts and templates as `--input` from `~/.gloggery` and emits pages as `--output` into `~/public_gemini/glog`, which is compatible with the author's home pubnix, [tilde.team](https://tilde.team).\n\nThe default `--title` of the glog itself is \"Glog\".\n\ngloggery assumes your glog `--output` folder is within a broader site. The index template links to it using a `--site-title`, which defaults to your username prefixed with `~`. The default `--feed-title` for Atom readers is the `--site-title`.\n\nThe `--url` argument should be a `gemini://` URL corresponding to the `--output` folder.\n\n\u003e Make sure and get this URL right. gloggery doesn't have a reliable way to identify your host's domain name for the default value, which may cause Atom feed links to be incorrect.\n\nRun gloggery with the options appropriate to your glog.\n\ngloggery will emit to the output folder:\n\n- one post page file per post that has changed\n- a index file listing all posts, if any post changed\n- an Atom feed file listing recent posts, if any post changed\n\n\u003e Post page filenames will not exactly match post input filenames. gloggery omits the time of day and adds the `.gmi` extension, but preserves the date and slug.\n\n## Page templates\n\nYou can modify the page templates in `~/.gloggery/templates`. These are [Go text templates](https://golang.org/pkg/text/template/), but you don't need to understand that syntax if you leave the `{{ }}` terms alone.\n\nBy default, gloggery only rebuilds pages when post files change. If you change a template, you can rebuild all pages by running gloggery with the `--rebuild` argument.\n\n## Developing gloggery\n\nThe smoothest way to work on gloggery's code is with `make watch-run`, which observes code file changes, builds the app, and runs it to publish the sample posts in `posts` to an `output` folder. This requires the very nice tool [entr](http://eradman.com/entrproject/).\n\nIf you just want to build when saving a code file, you can use `make watch`.\n\nBefore submitting changes, please run `make format`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkconner%2Fgloggery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkconner%2Fgloggery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkconner%2Fgloggery/lists"}