Canvas Sync Bridge

approved

by Joshua Wortz

Receives Canvas data from a browser extension and syncs it into your vault. - This plugin has not been manually reviewed by Obsidian staff.

โ˜… 1 starsโ†“ 73 downloadsUpdated 1d agoMIT

Canvas Sync Bridge

License: MIT Version CI TypeScript Obsidian Chrome Web Store Firefox Add-on Privacy: Zero Telemetry

Seamlessly sync Canvas LMS courses, modules, assignments, discussions, grades, files, and calendars directly into your Obsidian knowledge vault as clean, structured, and cross-linked Markdown notes.


โœจ Key Features & Hybrid Ingestion

Canvas Sync provides two flexible sync workflows depending on your institutional setup:

1. ๐ŸŽ“ Direct Canvas REST API (Primary / Mobile Compatible)

  • Direct connection from Obsidian using your Canvas API token.
  • Interactive course selector modal with multi-course batch syncing and in-modal auto-sync interval selection.
  • Scheduled Background Sync: Automatically resyncs active courses on a schedule (15m, 30m, 1h, 2h, 4h, 6h, 12h, 24h) with course selection filters and silent background operation.
  • Supports active and completed/concluded courses.
  • Fully compatible with Obsidian Desktop and Obsidian Mobile.

2. ๐ŸŒ Companion Browser Extension (Zero-Token Bridge)

  • Operates in Google Chrome, Brave, Edge, Arc, Opera, and Mozilla Firefox.
  • Uses your logged-in browser session cookies โ€” no API token required (ideal for institutions locking down student API tokens).
  • Granular extraction toggles in the extension popup.
  • Bridges securely to Obsidian over localhost (127.0.0.1).

๐Ÿ“Š Comprehensive Course Synchronization

Both ingestion pathways feed into a unified rendering engine:

  • Course & Home: Course overview, home page banners/navigation, and full syllabus formatting.
  • Modules: Hierarchical module folders, lecture wiki pages, readings, and embedded assets.
  • Assignments & Rubrics: Due dates, points possible, submission instructions, and structured rubric criteria tables.
  • Student Submissions & Grades: Live gradebook standing (Grades.md), score breakdowns, submitted files, and instructor feedback comments.
  • Discussions: Full discussion topics, announcements, and complete multi-tier student reply trees (Discussions.md).
  • Calendar & Milestones: Schedule events, assignment due date milestones, and Zoom meeting links (Calendar.md).
  • ๐Ÿ“ Student Personal Notes Preservation: Type student notes and annotations freely under ## ๐Ÿ“ Personal Notes on any course note โ€” personal content is automatically preserved across all future syncs without tag clutter.
  • โฑ๏ธ Per-Page "Last Synced" Timestamps: Every generated note and hub displays a localized timestamp showing exactly when the note was fetched.
  • ๐Ÿ›ก๏ธ Safe Filename Capping: Automatically sanitizes and caps oversized module item titles (up to 100 chars) while preserving extensions to prevent OS ENAMETOOLONG errors.
  • Internal Obsidian Wikilinks: Automatically cross-links notes into native Obsidian [[wikilinks]] with pipe escaping ([[path|alias]]).
  • Local File & Asset Downloader: Downloads embedded images, assignment attachments, and course documents (.pdf, .docx, .pptx, .xlsx, .zip) with configurable size and extension filters.
  • 100% Local-First & Private: Zero cloud relays, zero analytics, zero tracking.

๐Ÿ“ธ Screenshots

1. Interactive Course Selector (REST API)2. Companion Browser Extension (Zero-Token)
Course Selector ModalExtension Popup
3. Canvas API & Bridge Settings4. Granular Asset & File Downloads
Plugin SettingsAsset Settings

๐Ÿš€ Quick Start & Installation

Step 1: Install the Obsidian Plugin

Method A: Community Plugins (Recommended)

  1. In Obsidian, open Settings > Community Plugins.
  2. Turn off Restricted mode if prompted.
  3. Search for Canvas Sync Bridge, click Install, and then Enable.

Method B: Obsidian BRAT (Beta Releases)

  1. Install the BRAT Plugin in Obsidian.
  2. In BRAT settings, click Add Beta plugin and enter: https://github.com/SixFiveMil/obsidian-canvas-sync.

Method C: Manual Installation

  1. Download main.js, manifest.json, and styles.css from the Latest GitHub Release.
  2. Extract into <Vault>/.obsidian/plugins/canvas-sync-bridge/ and restart Obsidian.

Step 2: Choose Your Sync Method

Option A: Direct REST API (Recommended)

  1. In Canvas, go to Account > Settings > Approved Integrations > + New Access Token.
  2. Copy the generated token string.
  3. In Obsidian settings (Canvas Sync), enter your Canvas Base URL and API Token.
  4. Press Ctrl/Cmd + P and run Canvas Sync: Select & sync courses (or click the ๐ŸŽ“ ribbon icon) to sync.

Option B: Browser Extension Bridge (Zero-Token Session Sync)

  1. In Obsidian settings (Canvas Sync), toggle on Enable browser bridge listener.
  2. Install the extension:
  3. Navigate to any Canvas course tab in your browser, click the extension icon, test the bridge connection, select your extraction options, and click Sync Active Course.

๐Ÿ—‚๏ธ Generated Vault Structure

Courses are written to your vault using the configured template (default: {{courseCode}} - {{courseName}}):

Canvas/
โ””โ”€โ”€ CS-101 - Introduction to Computer Science/
    โ”œโ”€โ”€ Course.md         # Master course index, metadata, and quick navigation
    โ”œโ”€โ”€ Home.md           # Course home page with banner and graphic links
    โ”œโ”€โ”€ Syllabus.md       # Complete course syllabus and policies
    โ”œโ”€โ”€ Tasks.md          # Assignment checklists, due dates, points, and submissions
    โ”œโ”€โ”€ Grades.md         # Gradebook table with scores, percentages, and status
    โ”œโ”€โ”€ Discussions.md    # Discussion board topics with full student reply trees
    โ”œโ”€โ”€ Calendar.md       # Course events, milestones, and Zoom meeting links
    โ”œโ”€โ”€ Modules/
    โ”‚   โ”œโ”€โ”€ 01 - Week 1 - Foundations & Architecture/
    โ”‚   โ”‚   โ”œโ”€โ”€ 01 - Page - Lecture Overview.md
    โ”‚   โ”‚   โ”œโ”€โ”€ 02 - Assignment - Lab 1 Analysis.md
    โ”‚   โ”‚   โ””โ”€โ”€ 03 - Discussion - Class Introductions.md
    โ”‚   โ””โ”€โ”€ 02 - Week 2 - Algorithms & Data Structures/
    โ”‚       โ”œโ”€โ”€ 01 - Page - Algorithm Complexity.md
    โ”‚       โ””โ”€โ”€ 02 - Assignment - Problem Set 2.md
    โ”œโ”€โ”€ Files/            # Downloaded PDFs, DOCX, slides, spreadsheets, and archives
    โ””โ”€โ”€ Attachments/      # Embedded images, course banners, and diagrams

๐Ÿ› ๏ธ Building from Source

# Clone repository
git clone https://github.com/SixFiveMil/obsidian-canvas-sync.git
cd obsidian-canvas-sync

# Install dependencies (Node.js 20+ required)
npm install

# Run unit tests
npm test

# Type-check TypeScript files
npm run typecheck

# Build Obsidian plugin
npm run build

๐ŸŒ Companion Browser Extension

The browser extension source code, pre-packaged .zip release files, and store deployment pipelines are maintained in a dedicated repository:


๐Ÿ”’ Security & Privacy

  • Closed by Default: The local loopback listener (127.0.0.1:27125) only runs when explicitly toggled on in Obsidian settings.
  • Origin & Header Guards: Inbound requests verify trusted extension origins (chrome-extension://, moz-extension://) and custom application headers.
  • Local Storage: API tokens are stored strictly within .obsidian/plugins/canvas-sync-bridge/data.json inside your local vault.
  • Read our full Security Policy and Privacy Policy.

๐Ÿ“„ License & Author

Developed and maintained by Joshua A. Wortz (SixFiveMil).

Licensed under the MIT License.

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.