blogit

A tool for curating Common Mark and Markdown front matter and publishing to a staging blog directory.

https://github.com/rsdoiel/blogit

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.5%) to scientific vocabulary

Keywords

blog commonmark front-matter markdown
Last synced: 6 months ago · JSON representation ·

Repository

A tool for curating Common Mark and Markdown front matter and publishing to a staging blog directory.

Basic Info
Statistics
  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • Open Issues: 6
  • Releases: 0
Topics
blog commonmark front-matter markdown
Created 7 months ago · Last pushed 6 months ago
Metadata Files
Readme License Citation Codemeta

README.md

BlogIt

I've written various scripts and programs over the years for managing my personal website and blog. BlogIt is the latest incarnation taking over duties from the now venerable pttk. I've found increasingly there are good off the shelf options for software chores. Examples include PageFind and FlatLake. Between those two you have a turn key search system and a JSON API. FlatLake itself can turn your CommonMark front matter into an aggregated JSON API. This is particularly nice for implementing features like RSS feeds and sitemap XML files. The net result is the tools I've previously written for similar tasks are no longer needed. This lead to re-access what my old "blogit" tool did. Core features are as follows.

  1. Validation and curation of front matter in my posts
  2. A means, when ready, of copying those CommonMark documents into a blog directory tree.

BlogIt is now implemented in TypeScript and compiled to an executable via Deno. It is focused on curating the metadata around blog post and "publishing" it to a blog staging directory.

BlogIt blogging process

  1. Use my favorite edit to create CommonMark (Markdown) documents
  2. Use BlogIt to edit or curate the front matter and include any required code samples.
  3. Run FlatLake to render the JSON API
  4. Use JSON API to render the RSS feeds and sitemaps
  5. Render the CommonMark documents to HTML
  6. Run PageFind for search
  7. Review the staged site and deploy when ready

BlogIt Software structure

  • mod.ts (used to generate the executable and to allow BlogIt to be used in other Deno+TypeScript projects)
  • src
    • blogit.ts (holds workflows for blogit tool)
    • commonMarkDoc.ts (defines a simple object made of front matter and markdown content)
    • editor.ts (allows you to launch a text editor to update the field in your front matter)
    • frontMatter.ts (this does the real work of validation and curation of the front matter)

Presently the prototype is less than 2000 lines of TypeScript.

Installing BlogIt

BlogIt is in the early stage of development and not currently built for distribution. You can easily compile BlogIt using Deno.

Required software

Suggested Software

  • CMTools >= v0.0.35 (used to generate CITATION.cff, version.ts, etc.)
  • Pandoc >= 3.5 (used to produce documentation in HTML)

Also helpful if you use BlogIt to generate a blog website.

  • PageFind, site search from HTML documents
  • FlatLake, JSON API from Front Matter
  • jq, nice for view JSON and checking for values
  • htmlq, like jq but for HTML documents

Steps to build

  1. Clone the repository
  2. Change into the repository directory
  3. Run deno task build
  4. Check the the help
  5. Copy ./bin/blogit (or .\bin\blogit.exe on Windows) to someplace in your path (e.g. $HOME/.deno/bin)

~~~shell git clone https://github.com/rsdoiel/BlogIt cd BlogIt deno task build ./bin/blogit --help cp -v ./bin/blogit $HOME/.deno/bin/ blogit --version ~~~

Or for Windows 10/11 using PowerShell

~~~pwsh git clone https://github.com/rsdoiel/BlogIt cd BlogIt deno task build ./bin/blogit --help copy .\bin\blogit.exe $HOME.deno\bin\ blogit --version ~~~

Author

LICENSE

GNU Affero General Public License 3.0 or newer, see https://www.gnu.org/licenses/agpl-3.0.html#license-text

Questions and collaboration

Owner

  • Name: R. S. Doiel
  • Login: rsdoiel
  • Kind: user
  • Location: California
  • Company: California Institute of Technology

I am a human. Once upon a time I wrote music and prose. I write software.

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
type: software
title: BlogIt
abstract: "__BlogIt__ is a command line program for curating front matter in CommonMark (Markdown) documents used in producing a blog. __BlogIt__ primary purpose is curating the fornt matter 
posts. It also supports a preprocessor for handling markdown linked files as HTML linked files and code include blocks. Additional functionality includes editing, checking and 
publishing the CommonMark document to a blog directory structure.

Here's an example of creating a blog from scratch while levaraging __BlogIt__.

~~~shell
# Pick an editor, example nano in the case
export EDITOR=nano
mkdir -p $HOME/Site/website/blog
cd $HOME/Site/website
# Create your first post
nano $HOME/Documents/FirstPost.md
# Create/curate the Front Matter for your first blog post
BlogIt edit $HOME/Documents/FirstPost.md
# Check to make sure everything is ready to go
BlogIt check $HOME/Documents/FirstPost.md
# Publishing into your blog's directory tree
BlogIt $HOME/Document/FirstPost.md
# See the blog post ready in your blog directory
tree blog
~~~

Run a Common Mark to HTML converter like Pandoc on the Common Mark files to produce HTML. Then you're ready to run [PageFind](https://pagefind.com) for search and 
[FlatLake](https://flatlake.app) to render your blog's JSON API."
authors:
  - family-names: Doiel
    given-names: Robert
    orcid: https://orcid.org/0000-0003-0900-6903
    email: rsdoiel@gmail.com

contacts:
  - family-names: Doiel
    given-names: Robert
    orcid: https://orcid.org/0000-0003-0900-6903
    email: rsdoiel@gmail.com

repository-code: "https://github.com/rsdoiel/BlogIt"
version: 0.0.3
date-released: 2025-07-28

license-url: "https://www.gnu.org/licenses/agpl-3.0.html#license-text"
keywords:
  - blog
  - front matter
  - CommonMark
  - Markdown

CodeMeta (codemeta.json)

{
  "@context": "https://w3id.org/codemeta/3.0",
  "type": "SoftwareSourceCode",
  "codeRepository": "https://github.com/rsdoiel/BlogIt",
  "author": [
    {
      "id": "https://orcid.org/0000-0003-0900-6903",
      "type": "Person",
      "givenName": "Robert",
      "familyName": "Doiel",
      "email": "rsdoiel@gmail.com"
    }
  ],
  "maintainer": [
    {
      "id": "https://orcid.org/0000-0003-0900-6903",
      "type": "Person",
      "givenName": "Robert",
      "familyName": "Doiel",
      "email": "rsdoiel@gmail.com"
    }
  ],
  "dateCreated": "2025-07-12",
  "dateModified": "2025-09-13",
  "datePublished": "2025-09-13",
  "description": "__BlogIt__ is a command line program for curating front matter in CommonMark (Markdown) documents used in producing a blog. __BlogIt__ primary purpose is curating the fornt matter \nposts. It also supports a preprocessor for handling markdown linked files as HTML linked files and code include blocks. Additional functionality includes editing, checking and \npublishing the CommonMark document to a blog directory structure.\n\nHere's an example of creating a blog from scratch while levaraging __BlogIt__.\n\n~~~shell\n# Pick an editor, example nano in the case\nexport EDITOR=nano\nmkdir -p $HOME/Site/website/blog\ncd $HOME/Site/website\n# Create your first post\nnano $HOME/Documents/FirstPost.md\n# Create/curate the Front Matter for your first blog post\nBlogIt edit $HOME/Documents/FirstPost.md\n# Check to make sure everything is ready to go\nBlogIt check $HOME/Documents/FirstPost.md\n# Publishing into your blog's directory tree\nBlogIt $HOME/Document/FirstPost.md\n# See the blog post ready in your blog directory\ntree blog\n~~~\n\nRun a Common Mark to HTML converter like Pandoc on the Common Mark files to produce HTML. Then you're ready to run [PageFind](https://pagefind.com) for search and \n[FlatLake](https://flatlake.app) to render your blog's JSON API. It also works with [antennaApp](https://rsdoiel.github.io/antennaApp).",
  "keywords": [
    "blog",
    "front matter",
    "CommonMark",
    "Markdown"
  ],
  "name": "BlogIt",
  "license": "https://www.gnu.org/licenses/agpl-3.0.html#license-text",
  "programmingLanguage": [
    "TypeScript"
  ],
  "runtimePlatform": "Deno >= 2.5.0",
  "softwareRequirements": [
    "Deno >= 2.5.0",
    "Git >= 2.3"
  ],
  "softwareSuggestions": [
    "CMTools >= v0.0.40",
    "Pandoc >= 3.6"
  ],
  "version": "0.0.5",
  "developmentStatus": "wip",
  "issueTracker": "https://github.com/rsdoiel/BlogIt/issues",
  "releaseNotes": "Added release process, now supporting easy command line install via curl or irm.",
  "copyrightYear": 2025,
  "copyrightHolder": "R. S. Doiel"
}

GitHub Events

Total
  • Issues event: 4
  • Issue comment event: 7
  • Public event: 1
  • Push event: 12
Last Year
  • Issues event: 4
  • Issue comment event: 7
  • Public event: 1
  • Push event: 12