Skip to content

Conversion of handwritten notes exported from Boox e-ink devices into structured Markdown summaries suitable for Obsidian. It uses GPT-4o for summarization and runs continuously in the background, monitoring a synced folder for new PDFs.

License

Notifications You must be signed in to change notification settings

DowswellDigital/BooxNotes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 BooxNotes: Automated Handwritten Note Summarization Pipeline

This project automates the conversion of handwritten notes exported from Boox e-ink devices into structured Markdown summaries suitable for Obsidian. It uses GPT-4o for summarization and runs continuously in the background, monitoring a synced folder for new PDFs.


🚀 How It Works

  1. Boox Sync: Notes exported from your Boox device are saved to ~/Dropbox/BooxNotes/Raw/
  2. Folder Watcher: A launchd-managed Python script (boox-watcher.py) detects new PDFs
  3. Processing Pipeline:
    • Converts PDF pages to images (via poppler)
    • Sends images to OpenAI's GPT-4o API
    • Receives a structured Markdown summary
    • Outputs a Markdown file to ~/Dropbox/BooxNotes/Processed
    • Moves the original PDF to ~/Dropbox/BooxNotes/Archive
  4. Persistent Logging and macOS notifications provide transparency

🧠 Example Output

---
title: Systems
tags: [boox, notes]
---


Summary of my handwritten notes on complex systems theory...

(Structured output generated by GPT-4o)

📁 Directory Structure

Scripts/BooxNotes/
├── boox_parser.py          # PDF-to-summary processor
├── boox-watcher.py         # Folder watcher with notification/logging
├── .env                    # API key (excluded from Git)
├── processed.json          # Tracks processed PDFs (excluded from Git)
├── boox-watcher.log        # stdout log (excluded from Git)
├── boox-watcher-error.log  # stderr log (excluded from Git)

🔧 Requirements

  • Python 3.11+
  • openai >= 1.0
  • watchdog
  • python-dotenv
  • poppler (pdftoppm must be in PATH)

Installation

brew install poppler
pip install -r requirements.txt

🔐 Environment Setup

Create a .env file in the same directory:

OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxx

🔁 macOS Background Service

A launchd job (via com.readist.booxwatcher.plist) ensures boox-watcher.py runs continuously, even after reboot.

Set up

cp com.readist.booxwatcher.plist ~/Library/LaunchAgents/
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.readist.booxwatcher.plist

To check the log:

tail -f ~/Scripts/BooxNotes/boox-watcher.log

🛡 .gitignore

.env processed.json *.log

✅ Status

This script is currently running as a persistent background service. All new Boox-synced handwritten PDFs are automatically summarized and moved to your Obsidian-ready folder structure.

🧼 To Do

  • YAML frontmatter enrichment (e.g., date, tags from note)
  • Optional OCR fallback
  • Multiple vault support

About

Conversion of handwritten notes exported from Boox e-ink devices into structured Markdown summaries suitable for Obsidian. It uses GPT-4o for summarization and runs continuously in the background, monitoring a synced folder for new PDFs.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages