| src | ||
| .editorconfig | ||
| .eslintignore | ||
| .eslintrc | ||
| .gitignore | ||
| .npmrc | ||
| CONTRIBUTING.md | ||
| esbuild.config.mjs | ||
| LICENSE | ||
| manifest.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| styles.css | ||
| tsconfig.json | ||
| version-bump.mjs | ||
| versions.json | ||
Inkporter 📝➡️📓
Seamlessly digitize handwritten notes into Obsidian with smart ink isolation and adaptive theming
Why Inkporter?
Tired of manually processing notebook scans? This plugin automates the workflow from this while adding powerful Obsidian integration: Please Watch this video to understand the motivation behind the plugin. Go Sub this Guy his works really somethink to see
| Manual Process | Inkporter Automation |
|---|---|
| 20min/page in Photoshop | Instant clipboard processing |
| Manual CSS theming | Auto-adaptive ink colors |
| Static file naming | Smart filename templates |
| No OCR integration | Optional text extraction |
🚀 Installation
Via Obsidian
- Settings → Community plugins → Browse
- Search "Inkporter" → Install
Manual
- Download the latest release.
- Copy to
vault/.obsidian/plugins.
🔧 Key Features
✂️ Intelligent Ink Isolation
- Real-time preview of processed images
- Dual threshold modes:
- Luminosity mode (perceptual brightness)
- Simple RGB average
- Grayscale conversion option
🌈 Dynamic Theming
/* Apply to note CSS classes */
.inkporter-scan {
--ink-color: var(--text-normal);
--paper-color: var(--background-primary);
filter: contrast(120%);
}
📂 Smart Asset Management
# File naming templates
filename_template: "note-{date}-{shortId}"
# Supported variables:
# - {date}: YYYYMMDD
# - {timestamp}: epoch ms
# - {shortId}: 8char hash
# - {uuid}: v4 UUID
📎 Usage Workflow
- Scan → Import via clipboard (
Ctrl/Cmd+Shift+V) - Preview → Adjust settings in real-time
- Insert → Automatically saved to vault
- Style → Apply CSS classes for theming
⚙️ Configuration
// Settings structure
{
outputDirectory: "InkporterScans", // Save location
alphaThreshold: 200, // 0-255 darkness cutoff
fileNameTemplate: "note-{date}-{shortId}",
convertToGrayscale: false, // B/W conversion
useLuminosityForAlpha: true // Perceptual vs simple
}
🌐 Compatibility
| Environment | Support |
|---|---|
| Obsidian | v1.4+ |
| OS | Win/Mac/Linux |
| Mobile | iOS/Android* |
| Scanners | Any clipboard |
*Mobile requires clipboard permission.
🚧 Work-in-Progress Notice 📝
⚠️ Heads Up! This plugin is currently in beta development.
While fully functional, you might encounter:
- Occasional edge cases with low-contrast scans
- Limited support for colored inks (best with black/dark pens)
- Slight variations in ink detection accuracy
Optimal Results When:
- 📜 Using light-colored paper (white/cream)
- ✍️ Writing with high-contrast ink (black/dark blue)
- 💡 Scanning in bright, even lighting
Why? The alpha threshold detection works best with clear light/dark separation. We're working on:
- Dark background support 🎨
- Multi-ink color detection 🔍
- Adaptive lighting compensation 💡
🤝 Contributing
Help improve:
- Mobile scanning UX
- Multi-ink detection
- Batch processing
See our contribution guidelines.
📜 License
MIT License - See LICENSE.
💡 Why This Name?
Inkporter combines:
- Ink (handwritten notes)
- Port (transfer/carry)
- -er (active tool suffix)
Represents "carrying ink into digital" while sounding like a professional tool.
🛣️ Support
Found a bug? Have feature ideas?
📧 your@email.com
🔍 GitHub Issues
💬 Discord ID
From the Developer
"This plugin was born from 47 hours spent cleaning up scans of my Moleskine notebooks. What started as a simple threshold script became an obsession with perfectly bridging analog and digital note-taking. May your handwritten wisdom live forever in both paper and pixels!" - Ayush

