| src | ||
| esbuild.config.mjs | ||
| main.js | ||
| manifest.json | ||
| package.json | ||
| README.md | ||
| screenshot-default.png | ||
| screenshot-ember.png | ||
| tsconfig.json | ||
| versions.json | ||
GitHub Contributions for Obsidian
View your GitHub and local Git contribution heatmap directly in the Obsidian sidebar — with streak tracking, per-repo tooltips, colour palettes, and one-click daily note creation.
![GitHub contribution graph in Obsidian sidebar]
Features
- Contribution heatmap - full year or month view, dark/light theme aware
- Local Git support - scans your local repos and merges commits into the same graph
- Year and month navigation - flip back through any year since 2008, or browse month by month
- Stats bar - total contributions, current streak, best streak, days since last commit, most recent repo
- Hover tooltips - date, total count, and per-repo breakdown on every cell
- Click to open daily note - clicking any day opens (or creates) the matching daily note
- Five colour palettes - Default (GitHub greens), High Contrast, Cobalt (blue/cyan), Neon (purple/yellow), Ember (amber/gold)
- Configurable size - Ultra compact, Compact, Medium, Large, or Fit to sidebar
- Three stats styles - Default list, Compact chips, or Grid
- Demo mode - generates realistic fake data for screenshots or testing
- OAuth connect - connect GitHub with one click, no token copying required
- Mobile safe - GitHub contributions work on mobile; local Git gracefully disabled
Installation
Community Plugin Registry (recommended)
- Open Obsidian -> Settings -> Community Plugins -> Browse
- Search for GitHub Contributions
- Click Install, then Enable
- Open plugin settings and click Connect GitHub
Manual
- Download
main.jsandmanifest.jsonfrom the latest release - Copy both files into your vault's plugin directory:
<YourVault>/.obsidian/plugins/github-contributions/ - In Obsidian → Settings → Community Plugins, enable GitHub Contributions
Connecting GitHub
The recommended way is OAuth - no token copying required:
- Open plugin settings
- Under Authentication, select Connect with GitHub (recommended)
- Click Connect GitHub
- A code appears in the settings panel - enter it at github.com/login/device
- Approve in your browser - the plugin connects automatically
Personal Access Token (advanced)
If you prefer a PAT, switch Authentication to Personal Access Token and enter:
- Your GitHub username
- A PAT from github.com/settings/tokens with only the
read:userscope
The token is stored locally in your vault and never leaves your machine except to call the GitHub GraphQL API.
Local Git Support
To include commits from local repositories:
- Set Source to Local git only or Both
- Set Local repo root to a folder containing your git repos (e.g.
C:\Users\You\Projects) - The plugin scans that folder up to the configured depth and finds all git repos automatically
Local Git mode only runs git log locally - no data is sent anywhere.
Opening the panel
- Click the GitHub icon in the ribbon
- Or run the command palette:
GitHub Contributions: Open GitHub Contributions panel
Settings reference
Data Sources
| Setting | Description |
|---|---|
| Source | GitHub only, Local git only, or Both |
| Authentication | OAuth (recommended) or Personal Access Token |
| Local repo root | Root folder to scan for git repositories |
| Scan depth | How many levels deep to search (2–5, or unlimited) |
Display
| Setting | Description |
|---|---|
| Sidebar side | Left or right panel |
| Stats display | Default list, Compact chips, or Grid |
| Colour palette | Default, High Contrast, Colorblind Friendly, Neon, or Ember |
| Size | Ultra compact, Compact, Medium, Large, or Fit to sidebar |
| Default view | Year or Month |
| Default year | Year shown on first open |
| Demo mode | Show fake data for screenshots or testing |
Daily Notes
| Setting | Description |
|---|---|
| Daily notes folder | Folder to look for / create daily notes (blank = vault root) |
| Date format | Moment.js format matching your filenames (default: YYYY-MM-DD) |
Daily note integration
Clicking any contribution cell opens the matching daily note. If it doesn't exist yet it's created automatically. Works alongside the core Daily Notes and Periodic Notes plugins - just make sure the folder and date format match.
Privacy
- GitHub OAuth token - stored locally, only used to call the GitHub GraphQL API
- Local Git mode - only runs
git loglocally, reads commit metadata only, no data sent anywhere
Building from source
git clone https://github.com/gearheaded/obsidian-github-contributions
cd obsidian-github-contributions
npm install
npm run build
For live development with auto-rebuild on save:
npm run dev
License
MIT