Cron Runner
pendingby Maxence Maireaux
Run scheduled tasks defined as markdown files with cron expressions.
Cron Runner
Schedule recurring tasks in Obsidian using simple markdown files with cron expressions.
How it works
- Create a folder in your vault (default:
Crons/) - Add markdown files with a cron schedule in the frontmatter
- The plugin checks every minute and runs matching jobs automatically
Cron file format
---
name: "My Scheduled Task"
cron: "0 9 * * 1-5"
enabled: true
action_type: command
action: "daily-notes"
---
# My Scheduled Task
Description of what this cron does (optional, for your reference).
Frontmatter fields
| Field | Required | Description |
|---|---|---|
cron | Yes | Standard cron expression (minute, hour, day, month, weekday) |
action_type | Yes | One of: command, notice, create-note, templater, shell |
action | Yes | The action target (see below) |
name | No | Display name (defaults to filename) |
enabled | No | true or false (defaults to true) |
output_folder | No | Output folder for create-note and templater actions |
last_run | Auto | Updated automatically after each execution |
Cron expression syntax
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sunday=0)
│ │ │ │ │
* * * * *
Supports: * (any), ranges (1-5), steps (*/5), lists (1,3,5).
Action types
command
Execute any Obsidian command by its ID. You can find command IDs in Settings > Hotkeys.
action_type: command
action: "daily-notes"
notice
Display a notification inside Obsidian.
action_type: notice
action: "Time to take a break!"
create-note
Create a new note with the content specified in the action field.
action_type: create-note
action: "# Daily Standup\n\n- What I did yesterday:\n- What I'll do today:\n- Blockers:"
output_folder: "Meetings"
templater
Render a Templater template and create a new note. Requires the Templater plugin.
action_type: templater
action: "Templates/meeting.md"
output_folder: "Meetings"
shell
Execute a shell command. Desktop only. Use with caution.
action_type: shell
action: "echo 'backup' >> /tmp/cron.log"
Security warning: Shell commands run with the same permissions as Obsidian. Only use commands you trust.
Examples
Open daily note every weekday at 9am
---
name: "Open Daily Note"
cron: "0 9 * * 1-5"
enabled: true
action_type: command
action: "daily-notes"
---
Git backup every 2 hours
---
name: "Git Backup"
cron: "0 */2 * * *"
enabled: true
action_type: command
action: "obsidian-git:commit"
---
Reminder every 30 minutes
---
name: "Drink Water"
cron: "*/30 9-17 * * 1-5"
enabled: true
action_type: notice
action: "Stay hydrated! Drink some water."
---
Commands
- Check and run due crons now — manually trigger a cron check
- List all cron jobs — show all configured crons in a notice
Settings
| Setting | Default | Description |
|---|---|---|
| Cron folder | Crons | Vault folder containing cron files |
| Check interval | 60s | How often to check for due crons (min: 10s) |
| Show notices | true | Display a notification when a cron runs |
| Allow shell commands | false | Enable shell command execution (see Security section) |
| Debug mode | false | Log debug info to the developer console |
Security & Disclosures
This plugin:
- Does not make any network requests and does not collect telemetry or analytics
- Does not access files outside your vault, except when using the
shellaction type - Shell command execution is disabled by default and must be explicitly enabled in settings. When enabled, shell commands run with the same OS-level permissions as Obsidian. Only enable this if you fully trust the contents of your cron files. This feature requires desktop (Node.js) and is the reason the plugin is marked
isDesktopOnly - Modifies cron files in your vault only to update the
last_runfrontmatter field after each execution
Installation
From Obsidian Community Plugins
- Open Settings > Community Plugins > Browse
- Search for "Cron Runner"
- Install and enable
Manual
- Download
main.jsandmanifest.jsonfrom the latest release - Create a folder
.obsidian/plugins/cron-runner/in your vault - Copy the files into that folder
- Enable "Cron Runner" in Settings > Community Plugins
License
MIT
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.