Front matter post-processor for static site generators
Project description
Prelims
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | a502d50be2255e25fbd4fdf30ba422a268c2a26bc41e8e65d6960cf351015157 |
|
MD5 | 7e78d8079bec53c66de3bc25e688c80b |
|
BLAKE2b-256 | 8dc1002040107f986b1a409769124aed1d039543eb0bc40bed7c8e0b48f83c98 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81b2ffeef206181ec4dc387cc1371aeea033f2063338944580a1c6bc431bc71f |
|
MD5 | e65962cd2bed013903a7ee86a6598b45 |
|
BLAKE2b-256 | e47967099b2853af24fd20f8454b4dc054512452cfda7309f82c44923836db42 |