Package Information
Released: this month
Downloads: 0 weekly / 0 monthly
Latest Version: 0.2.0
Author: phbreyzon
Documentation
n8n-nodes-uni-schedule
An n8n community node that reads a live university timetable
(a sked campus HTML "Veranstaltungsplan" page) and turns it into a
Markdown table, so that AI agents (or humans) can easily look over the current schedule.
It was built for the THWS FIW lecture plan, e.g.https://fiw.thws.de/fileadmin/share/vlplan/BaInf1_2026ws.html,
but the calendar URL is a flexible node parameter, so any sked campus page in the same
format works.
Features
- Fetches the timetable live on each execution (always up to date).
- Configurable Calendar URL — change it whenever your study group / semester URL changes.
- Window-bounded output by default (
Next 7 Days): keeps the tool result small (~a few KB)
so AI agents don't burn their context on the whole semester. Go bigger only when needed. - Outputs a clean Markdown table (
week/day/ single-table grouping). - Detects the red framing used by sked:
- a red-framed event is flagged as
changed(e.g. "Raumänderung", "Asynchrone Lehre",
"Prüfung") orcancelled("Entfällt"); - a red day header (e.g. "Campus Day", public holiday) is reported as a special day
and attached to that day's rows.
- a red-framed event is flagged as
- Structured JSON output is available as well.
- Usable as a tool by n8n AI agents (
usableAsTool).
Node options
| Parameter | Description |
|---|---|
| Calendar URL | Public URL of the sked campus timetable page (default: THWS BIN1 winter semester 2026). |
| Period | Next 7 Days (default), Next 14 Days, This Week, This Month, or Whole Semester (All). Controls how much output is generated — keep it small for AI agents. |
| Fixed Date Range | Optional From / To date to override the period with an exact window. |
| Output Format | Markdown Table (default), Events (JSON), or Markdown + Events. |
| Max Events | Safety cap on the number of returned events (0 = no limit). Useful to bound context. |
| Group By | Week (default), Day, or None. |
| Include Cancelled Events | Keep or drop cancelled entries (default: keep). |
| Only Changed or Cancelled | Return only the "what changed" digest (default: off). |
Output fields
markdown– the Markdown document (when the format includes Markdown) with the covered
date range shown in its header.events– array of structured events (when the format includes events).planTitle,sourceUrl,scrapedAt.stats–{ range, weeks, events, changed, cancelled }.
Each event contains: date, weekday, start, end, title, group, lecturer,room, status (scheduled | changed | cancelled), changed, cancelled,notes, note, dayNote, weekLabel.
Example output
# Veranstaltungsplan BIN1
_13 events across 1 weeks from 2026-10-19 to 2026-10-21 (changed: 1, cancelled: 0). Status legend: scheduled, changed (red frame in source), cancelled._
## 4. Studienwoche, 43. KW: 19. - 25.10.2026
_Special days: 2026-10-21 - Campus Day_
| Date | Time | Title | Group | Lecturer | Room | Status | Note |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 2026-10-19 (Mo) | 10:00-13:15 | SU Algebra [BIN] | Gruppe 1 | Keller | H.1.3 | changed | Asynchrone Lehre |
| 2026-10-20 (Di) | 08:15-09:45 | Ü Programmieren I [BIN] | Gruppe 1 | Zilker | I.2.18 | scheduled | - |
Installation
npm install
npm run build
Then load the package in n8n:
- Local development: point the
N8N_CUSTOM_EXTENSIONS/n8n-nodesvolume at this
folder, or runnpm linkinside it and link it into your n8n installation. - Community node: publish the package and install it via
Settings → Community nodes.
Development
npm run build # tsc + copy icons
npm run dev # tsc --watch
npm run lint # eslint
npm run format # prettier
How the parsing works
The helpers in nodes/UniversitySchedule/helpers are dependency-free:
htmlTable.tsparses the HTML<table>into a grid of cells, resolvingrowspan/colspanso each cell knows its column position.parseSchedule.tssplits the page into week blocks, maps event cells to their day column,
extractstime / title / group / lecturer / room / notes, and interprets the sked
red-framing aschanged/cancelled.markdown.tsrenders the parsed schedule as grouped Markdown tables.