A lightweight, high-performance Swift CLI tool that syncs Schoology assignments to an Obsidian Markdown file. It bridges the gap between your LMS and your personal knowledge management system.
- SSO Authentication: Bypasses Microsoft SSO using a headless Python helper (
login_helper.py). - Course Scraping: Automatically fetches course titles (e.g.,
[Physics]) from Schoology links. - SQLite Persistence: Uses a local database to track processed tasks via unique URLs.
- Smart Formatting: Appends tasks with
(@YYYY-MM-DD)markers for Obsidian compatibility. - WAL Mode: Utilizes SQLite Write-Ahead Logging for database stability.
- Swift: macOS (comes with Xcode) or Linux.
- Python 3: Required for the SSO login helper.
- SQLite3: Pre-installed on macOS.
- Compile the binary:
swiftc -O -whole-module-optimization main.swift -o stm
2. **Initialize Config:**
Run the tool once to generate the default config file:
```bash
./stm
Edit the generated file at ~/.STM_config.json with your credentials and Obsidian paths.
3. Move to Path (Optional):
mv stm /usr/local/bin/
sync: Full check + scrape missing subjects.fastsync: Quick check (iCal only, no web scraping).builddb: Populate the database without writing to Obsidian.login: Force a session refresh via the Python helper.hash: Debug utility to check for remote file changes.
The file ~/.STM_config.json contains:
syncPeriodHours: Frequency of background syncs.remoteUrl: Your Schoology iCal feed URL.tasksPath: Absolute path to your Obsidian.mdfile.dbPath: Path where the.dbfile will reside.
MIT License. This tool is not affiliated with Schoology or PowerSchool. Use at your own risk.