{"id":29850471,"url":"https://github.com/giannibyoung/kscribbler","last_synced_at":"2026-01-28T04:56:20.414Z","repository":{"id":305663342,"uuid":"961201529","full_name":"GianniBYoung/kscribbler","owner":"GianniBYoung","description":"Kobo highlight|annotation sync to hardcover.app","archived":false,"fork":false,"pushed_at":"2025-07-20T15:29:05.000Z","size":80,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-21T11:56:38.946Z","etag":null,"topics":["ebook","epub","ereader-tools","golang","hardcover","kepub","kobo","kobo-ereader"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GianniBYoung.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"GianniBYoung","ko_fi":null,"buy_me_a_coffee":null}},"created_at":"2025-04-06T01:24:36.000Z","updated_at":"2025-07-20T15:31:09.000Z","dependencies_parsed_at":"2025-07-21T11:56:42.331Z","dependency_job_id":"18264c57-97a6-4b42-9742-16d4c2c1f348","html_url":"https://github.com/GianniBYoung/kscribbler","commit_stats":null,"previous_names":["giannibyoung/kscribbler"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/GianniBYoung/kscribbler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GianniBYoung%2Fkscribbler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GianniBYoung%2Fkscribbler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GianniBYoung%2Fkscribbler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GianniBYoung%2Fkscribbler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GianniBYoung","download_url":"https://codeload.github.com/GianniBYoung/kscribbler/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GianniBYoung%2Fkscribbler/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267755944,"owners_count":24139474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ebook","epub","ereader-tools","golang","hardcover","kepub","kobo","kobo-ereader"],"created_at":"2025-07-29T20:46:39.067Z","updated_at":"2026-01-28T04:56:20.408Z","avatar_url":"https://github.com/GianniBYoung.png","language":"Go","funding_links":["https://github.com/sponsors/GianniBYoung"],"categories":[],"sub_categories":[],"readme":"# kscribbler\n\nSync your Kobo highlights to [hardcover.app](https://hardcover.app)!\n\nHere is an [example](https://hardcover.app/books/crooked-kingdom/journals/@countmancy?referrer_id=28377) for the book Crooked Kingdom by Leigh Bardugo:\n\n\n\n*K* - Kobo|kepub\n*Scribe* - Someone who writes stuff to a new location\n\nps. add me on hardcover 🤓 [https://hardcover.app/@countmancy](https://hardcover.app/@countmancy?referrer_id=28377) \n\n## Installation\n1. Download and install [nickelmenu](https://pgaskin.net/NickelMenu)\n2. Download the latest release of `kscribbler` from the [releases page](https://github.com/GianniBYoung/kscribbler/releases/latest)\n3. Install `kscribbler` on your Kobo:\n   - Connect your Kobo to your computer and mount the device\n   - Navigate to the `.kobo` directory on your Kobo (might need to show hidden files)\n   - Copy the `KoboRoot.tgz` into this directory and unmount the device safely. This will trigger a reboot and upgrade.\n4. Remount the device and navigate to `/mnt/onboard/.adds/kscribbler`.\n  - If you don't see this directory check for `/mnt/onboard/.adds/kscribbler`\n5. Copy the example config file and add your token:\n    - `cp config.env.example config.env`\n    - `vi config.env`\n\n## Upgrade\n\nFrom the main menu of your Kobo device open nickelmenu and select `Update Kscribbler` to download and install the latest version.\n\n## Usage\n\nOnce installed `nickelmenu` should have a new entry in the right corner of reading view that will trigger a sync when clicked.\n\nThis will trigger `kscribbler` to generate its database of quotes and upload them to hardcover.app.\nWARNING: This will attempt to upload all quotes from all books on the device. If you want to tame this you will need to manipulate the `kscribblerdb` yourself. More info below.\n\nThe quotes are uploaded to hardcover.app based on the book's ISBN. See the note below or the troubleshooting section if quotes are not being uploaded.\n\n- If your book doesn't have an ISBN saved to the kobo device's database you can highlight the book's ISBN on its copyright page and `kscribbler` will attempt to parse it and save it to the book's metadata.\n  - A note with `kscrib:\u003cyou isbn number with no angle brackets` can be added anywhere in the book to manually set the ISBN\n  - Can be useful for sideloaded books\n\n## Troubleshooting\n- Logs are stored in `/mnt/onboard/.adds/kscribbler/kscribbler.log`\n- If you are having issues with the quotes not being uploaded, check that hardcover.app has an edition for the ISBN.\n\n## Advanced Usage\n- The database of quotes is stored at `/mnt/onboard/.adds/kscribbler/kscribblerdb`\n- This is a sqlite database with two tables: `books` and `quotes`\n- You can manipulate this database directly if you want to control what gets uploaded by setting `kscribbler_uploaded` to `1` for quotes you don't want uploaded\n- `telnet/ssh` into the kobo is possible and allows for manually running `kscribbler` if so desired\n- From the main Kobo screen you can open nickelmenu and `Toggle Visibility of Kscribbler Options` to run the following commands:\n  - `kscribbler --init` will initialize the database but not upload anything\n  - `kscribbler --mark-all-as-uploaded` will initialize the database, mark all found quotes as upload but will not upload anything\n    - Useful for testing/migrating\n  - The initial output is displayed but truncated. Full output is in the log file\n\n\n## Contributing\n- Star the repository ⭐\n- File bug reports\n- Submit pull requests\n- Suggest improvements\n- Share the project with others if you find it useful\n\n## Check out my other ebook-related projects\n  - [hardcover-quotes](https://github.com/GianniBYoung/hardcover-quotes) -\u003e Display hardcover *reading journal* quotes in your terminal or on a [trmnl e-ink display](https://usetrmnl.com) \n  - [simpleISBN](https://github.com/GianniBYoung/simpleISBN) -\u003e A simple library to parse and convert ISBNs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiannibyoung%2Fkscribbler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgiannibyoung%2Fkscribbler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiannibyoung%2Fkscribbler/lists"}