Skip to main content

A Pelican plugin providing “task notes” capabilities.

PyPI version number Changelog Supported Python version License Download Count

Note that this relies on my CommonMark reader.

Quickstart

  1. Install the plugin via pip: pip install minchin.pelican.readers.tasknotes

  2. Generally, the plugin should be loaded and configured automatically without further effort on your part.

  3. Create a tasks folder in your content folder (to hold your tasknotes!).

  4. Create a new “post” in your tasks folder. This file will mostly be metadata, but the title and date are the only mandatory fields (and, depending on how you’re configured Pelican, you might be able to read the date from the filesystem, making it not needed either!) You can also provide a text body, which will be read as Markdown (so plain text effectively works too)!

  5. Regenerate your Pelican site!

Sample (Tasknote) “Post” File

<!-- ./content/tasks/task-202509011519.md -->

---
tasknote: true
date: 2025-09-01T15:19:17.427-06:00
modified: 2025-09-01T15:19:17.427-06:00
category: tasks
title: Create a Plugin for Tasknotes
task_status: open
priority: normal
projects:
  - "[[pelican]]"
tags:
  - task
  - test
---

Also, you can put Markdown, including italics and bold as a body!

Background Notes

This format is based on the format used by the Obsidian TaskNotes <https://callumalpass.github.io/tasknotes/>_ plugin. The basic idea is that each task (or “todo item”) is its own file. On one hand, this leads to a ton of small files, but it does make it easy to filter and search based on file properties. One additional advantage over relying on inline todos (in other notes), is that note about the todo item can be stored in the tasknote itself.

Nothing in this reader relies on Obsidian or the TaskNotes (Obsidian) plugin, nor does this reader implement any of the specialized views of the TaskNote plugin.

Installation

The easiest way to installed TaskNotes is through pip:

pip install minchin.pelican.reader.tasknotes

Requirements

Tasknotes relies on Pelican, and the autoloader plugin (for autoloading). If this plugin is installed from PyPI, these should automatically be installed.

If you need to insrall them manually:

pip install pelican
pip install minchin.pelican.plugins.autoloader

Pelican Settings

These settings can be set in your pelicanconf.py file (your Pelican settings file) to alter the behavior of the plugin.

If a value is given below, this represents the effective default value. If no value is given, the effective default value is None.

Tasknotes also auto-configures itself when possible. If you need to manually create the default configuration, you would need the following:

# pelicanconf.py

# if PLUGINS is not defined on Pelican 4.5+, these plugins will autoload
PLUGINS = [
    "minchin.pelican.readers.tasknotes",
    # others, as desired...
]

# the rest of the your configuration file...

This documentation has to be manually updated. If the settings no longer match the plugin’s behavior, or a setting is missing from here, please open a ticket on GitHub.

ARTICLE_ORDER_BY = “reverse-date”

Sorting order for micro blog posts (also used for sorting posts generally); micro posts will be sorted among all posts. (Regular Pelican setting)

AUTHOR

Default author for micro blog posts. Can be overwritten by the metadata at the top of individual posts. (Regular Pelican setting; you don’t have to supply an author.)

TASKNOTES_APPEND_HASHTAGS = True

Tags gets appended at the end of the tasknote “summary line” as hashtags. #taggedyou Tags have the CSS class .tasknotes-post-tag applied, if you want to conditionally control their display or formatting.

TASKNOTES_CANCELLED_STATUS = [“cancelled”, “canceled”, “50-cancelled”]

Status that are considered “in progress”. c.f. TASKNOTES_IN_PROGRESS_STATUS, TASKNOTES_DUPLICATE_STATUS, and TASKNOTES_DONE_STATUS.

TASKNOTES_CATEGORY = “tasks”

Default category for your tasknotes. It could be overwritten by the metadata on top of individual posts.

TASKNOTES_DONE_STATUS = [“done”, “30-done”]

Status that are considered “in progress”. c.f. TASKNOTES_IN_PROGRESS_STATUS, TASKNOTES_IN_CANCELLED_STATUS, and TASKNOTES_DUPLICATE_STATUS.

TASKNOTES_DUPLICATE_STATUS = [“duplicate”, “60-duplicate”]

Status that are considered “in progress”. c.f. TASKNOTES_IN_PROGRESS_STATUS, TASKNOTES_IN_CANCELLED_STATUS, and TASKNOTES_DONE_STATUS.

TASKNOTES_FOLDERS = [“tasks”, ]

Folders containing your tasknotes, relative to your content root folder.

TASKNOTES_IN_PROGRESS_STATUS = [“in-progress”, “in progress”, “20-in-progress”]

Status that are considered “in progress”. c.f. TASKNOTES_IN_CANCELLED_STATUS, TASKNOTES_DUPLICATE_STATUS, and TASKNOTES_DONE_STATUS.

TASKNOTES_SAVE_AS = ARTICLE_SAVE_AS

What to save the tasknote output file as. Defaults to using the same file structure as you are using for articles (aka “regular” posts). c.f. TASKNOTES_URL.

TASKNOTES_SLUG = “task-{date:%Y%m%d%H%M}”

The slug that will be used for micro blog posts. Eg. task-202307091701.

Note that Pelican expects slugs to be universally unique.

TASKNOTES_URL = ARTICLE_URL

What URL to post the tasknote to. Defaults to using the same URL structure as you are using for articles (aka “regular” posts). c.f. TASKNOTES_SAVE_AS.

Integration with Themes

For best support, you will need to modify your theme, or select a theme that already supports Tasknotes, like my Seafoam.

Some helpful notes:

  • Tasknotes are considered Articles by Pelican, and will be included in the articles and dates “lists” provided by the templating engine.

  • Tasknotes all have article.tasknote = True.

  • Tasknotes posts are added to the tasks category (by default).

  • Generally, you’ll want to show the rendered tasknote, but perhaps as “regular” (or body) text. The title is set manually, and is generally the todo item proper. In general, use the summary (article.summary) for a short entry where you might otherwise show the post title. The whole body (article.content) will add any additional text added to the “body” of the tasknote.

  • Appended tags have the CSS class .tasknotes-post-tag applied.

Changelog

Changelog

Roadmap

To avoid (too much) premature optimization, I’ve written the plugin based on how I am using it locally. That said, Pull Requests (and Feature Requests) based on different usecases are welcomed!

Known Issues

  • Processing relies on CommonMark (Markdown) reader, which means you probably have to use it for the rest of your site as well.

  • Default slug processing means that you can’t have two tasks created the same minutes (or Pelican will break).

  • Don’t use “context” as a metadata key or it breaks Pelican link resolution.

  • Having two tasks with created in the same minute will cause Pelican to try and overwrite files, and will crash Pelican. To fix, change the created times of tasks so that no two tasks are created in the same minute, or alternately, change the slug for Tasknotes to include the seconds as well.

  • Doesn’t processs Wiki-style links (for projects, etc)

Metadata

Release files for minchin.pelican.readers.tasknotes 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for minchin.pelican.readers.tasknotes 1.0.0
File Size Uploaded
minchin_pelican_readers_tasknotes-1.0.0.tar.gz 18.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for minchin.pelican.readers.tasknotes 1.0.0
File Interpreter ABI Platform
minchin_pelican_readers_tasknotes-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 31.1 kB

Release files / minchin_pelican_readers_tasknotes-1.0.0.tar.gz

Download URL minchin_pelican_readers_tasknotes-1.0.0.tar.gz
Size 18.2 kB
Tags Source
SHA-256 checksum
How to use checksums
b107ea5f2feae6e8c7c77ec9f09fed0a940db99a370de9db53f306ab35901351
BLAKE2b-256 checksum
How to use checksums
de20f1cecb6dfb367850f20c624f6f7a4cf7009b727060232da5ec21cdc5d069
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release files / minchin_pelican_readers_tasknotes-1.0.0-py3-none-any.whl

Download URL minchin_pelican_readers_tasknotes-1.0.0-py3-none-any.whl
Size 13.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f4a482093e29dfbc270d8cce46270c29e3419cea74c0339e8cc5ada717fc6450
BLAKE2b-256 checksum
How to use checksums
53753b57391d7c7c81664086c3bd063e45a712044037067c2742327772aafe00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page