# Obsidian-tasks A Python script that synchronizes tasks from an Obsidian vault to a Nextcloud calendar. ## Features - Parses task lists in Markdown files using specific syntax - Supports due dates, start times, and scheduled times for tasks - Automatically syncs completed tasks with the calendar - Handles recurring tasks and priorities ## Prerequisites - Python 3.7+ - Poetry (for dependency management) - Obsidian vault with task list markdown files - Nextcloud server with CalDAV support ## Setup ### Step 1: Clone the repository ```bash git clone https://gitea.dresselhaus.cloud/Drezil/obsidian-tasks.git cd obsidian-tasks ``` ### Step 2: Configure environment variables Copy `env.example` to `.env` and fill in your values: ```bash cp env.example .env nano .env ``` Required variables: - `OBSIDIAN_VAULT_PATH`: Path to your Obsidian vault (default: current directory) - `NEXTCLOUD_URL`: Your Nextcloud CalDAV URL - `NEXTCLOUD_USER`: Your Nextcloud username - `NEXTCLOUD_PASSWORD`: Your Nextcloud password or app-password (app-passwords are VERY much preferred!) ### Step 3: Install dependencies ```bash poetry install ``` ### Step 4: Set up as a cronjob Add the following line to your crontab (edit with `crontab -e`): ```bash 0 2 * * * cd /path/to/obsidian-tasks && poetry run python ./find_obsidian_tasks.py >> /var/log/obsidian-sync.log 2>&1 ``` This will run the script daily at 2 AM and log output to `/var/log/obsidian-sync.log`. ## Task Syntax Tasks are defined in Markdown files using this syntax: - `- [x] Completed task` or `- [-] Cancelled task` - `- [ ] Pending task` - `- [+/?!] Incomplete task` Optional metadata: - `📅 2025-12-31`: Due date - `🛫 2025-12-31`: Start time - `⏳ 2025-12-31`: Scheduled time (if different from due date) - `🔁 weekly`: Recurrence pattern - `‼` or `❗`: Priority indicator Example: ``` - [ ] 📝 Write documentation 📅 2025-12-31 ⏳ 2025-12-28 🔁 weekly ‼ ``` ## License This project is licensed under the MIT License.