writing-schedule

writing-schedule turns a weekly org-mode block table into three artifacts, namely a dated schedule .org file, an iCalendar .ics file, and a printable time-block PDF. It is a Python port of the Emacs package mooerslab/writing-schedule.el, and it produces the same schedule and the same calendar from the same table.

You do not need Emacs, and you do not need writing-schedule.el, to use this package. It is a standalone command-line program and Python library whose only runtime dependency is ReportLab, because the PDF is drawn with ReportLab rather than with a TeX distribution.

The weekly table is the single planning surface. You write it in any text editor, you keep it under version control if you wish, and the tool stamps it with real dates and hands the result to your calendar, your org agenda, and your printer.

A one-minute example

pip install writing-schedule
writing-schedule template 5 --out my-week.org   # scaffold a blank table
# edit my-week.org to place your project codes in the day cells
writing-schedule generate my-week.org --week 2026-01-19 --dir out
writing-schedule sheets   my-week.org --week 2026-01-19 --dir out --format both

The first command scaffolds a blank table, the generate command writes the dated schedule and the calendar, and the sheets command draws the printable PDF and an editable per-day org file.