Skip to main content

Front matter post-processor for static site generators

Project description

Prelims

Dry Run Build PyPI version

Front matter post-processor for static site generators.

Overview

Prelims eases updating YAML front matter of the static site generator contents (e.g., Hugo, Jekyll, Hexo).

You can extract keywords based on TF-IDF weighting, generate a list of recommended posts by content-based filtering, and even apply arbitrary custom functions to update front matters on-the-fly.

Example

Below is an original front matter for "User-Centricity Matters: My Reading List from RecSys 2021" at takuti.me:

---
categories: [Recommender Systems]
date: 2021-10-05
lang: en
title: 'User-Centricity Matters: My Reading List from RecSys 2021'
---

Once a Python script is executed against all the posts, new metadata recommendations and keywords are dynamically generated and inserted as:

---
categories: [Recommender Systems]
date: 2021-10-05
keywords: [recsys, bias, papers, wordcloud, echo, user, recommendations, metrics,
  recommender, users]
lang: en
recommendations: [/note/recsys-2021-echo-chambers-and-filter-bubbles/, /note/recsys-wordcloud/,
  /note/ethical-challenges-in-recommender-systems/]
title: 'User-Centricity Matters: My Reading List from RecSys 2021'
---

Installation

$ pip install prelims

Usage

Assume your posts are under /path/to/posts where a static site generator uses as a document root:

posts
├── article-aaa.md
├── ...
└── article-zzz.md

Here, the following script reads all .md and .html files in the folder, builds recommendations, and update each post's front matter:

from prelims import StaticSitePostsHandler
from prelims.processor import Recommender


handler = StaticSitePostsHandler('/path/to/posts')
handler.register_processor(
	Recommender(permalink_base='/post')
)
handler.execute()

For instance, a front matter of article-aaa.md may eventually become:

---
date: 2022-01-01
title: Awesome Blog Post
recommendations: [/post/article-zzz/, /post/article-abc/, /post/article-xyz/]
keywords: [happy, beer, coffee, park, ...]
---

You can run the script as a pre-commit hook and automate the process e.g., with lint-staged:

$ npm install -D lint-staged
{
  ...
  "lint-staged": {
    "posts/*.{md,html}": [
      "python ./scripts/prelims.py",
      "git add -u posts/"
    ]
  },
  ...
}

Limitations

  • The author is testing and using Prelims mainly with Hugo. Although the tool is intended to be applicable to a variety of static site generators, there must be several edge cases that won't work properly due to unique behaviors associated with a specific generator.
  • We assume there are hundreds of posts at most, not thousands. Every single post is sequentially processed one-by-one, and the Recommender module, for example, trains a model from scratch every time. As the number of posts increases, you may encounter scalability issues.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prelims-0.0.7.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

prelims-0.0.7-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file prelims-0.0.7.tar.gz.

File metadata

  • Download URL: prelims-0.0.7.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.14

File hashes

Hashes for prelims-0.0.7.tar.gz
Algorithm Hash digest
SHA256 67b7c76737e63b4e464becd7f59cc0f94a55119c1ba4b26c7b66e24813244f18
MD5 47346d5465bdd99db62e232d5160a13b
BLAKE2b-256 138922109203daebabae145f96a9fe7da7a875fdfc27d043aafbae38faf86b59

See more details on using hashes here.

File details

Details for the file prelims-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: prelims-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.14

File hashes

Hashes for prelims-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 28c8a7c95b70b58844e1c78a87c2be49ade66f5e4a7b5de32a09bd3763659493
MD5 3883d314c831737390b790e3c6dd0e9c
BLAKE2b-256 f62c52ad1aaf9f0df9ce0b9822fadb6146ef38f3403a86aeca66a9f9e69ef938

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page