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.6.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

prelims-0.0.6-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: prelims-0.0.6.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.10

File hashes

Hashes for prelims-0.0.6.tar.gz
Algorithm Hash digest
SHA256 a502d50be2255e25fbd4fdf30ba422a268c2a26bc41e8e65d6960cf351015157
MD5 7e78d8079bec53c66de3bc25e688c80b
BLAKE2b-256 8dc1002040107f986b1a409769124aed1d039543eb0bc40bed7c8e0b48f83c98

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prelims-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.10

File hashes

Hashes for prelims-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 81b2ffeef206181ec4dc387cc1371aeea033f2063338944580a1c6bc431bc71f
MD5 e65962cd2bed013903a7ee86a6598b45
BLAKE2b-256 e47967099b2853af24fd20f8454b4dc054512452cfda7309f82c44923836db42

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