{"id":13771922,"url":"https://github.com/nov1n/RemarkablePocket","last_synced_at":"2025-05-11T04:31:11.844Z","repository":{"id":46883725,"uuid":"422340144","full_name":"nov1n/RemarkablePocket","owner":"nov1n","description":"Synchronize Pocket articles with the Remarkable tablet.","archived":false,"fork":false,"pushed_at":"2025-04-17T09:11:50.000Z","size":139434,"stargazers_count":156,"open_issues_count":0,"forks_count":10,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-18T00:11:02.183Z","etag":null,"topics":["articles","downloader","epub","pocket","remarkable","remarkable-2","remarkable-tablet"],"latest_commit_sha":null,"homepage":"","language":"Java","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/nov1n.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2021-10-28T20:02:53.000Z","updated_at":"2025-04-17T09:11:54.000Z","dependencies_parsed_at":"2025-02-05T18:47:41.358Z","dependency_job_id":null,"html_url":"https://github.com/nov1n/RemarkablePocket","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nov1n%2FRemarkablePocket","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nov1n%2FRemarkablePocket/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nov1n%2FRemarkablePocket/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nov1n%2FRemarkablePocket/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nov1n","download_url":"https://codeload.github.com/nov1n/RemarkablePocket/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253518941,"owners_count":21921074,"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","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":["articles","downloader","epub","pocket","remarkable","remarkable-2","remarkable-tablet"],"created_at":"2024-08-03T17:00:57.622Z","updated_at":"2025-05-11T04:31:06.827Z","avatar_url":"https://github.com/nov1n.png","language":"Java","funding_links":["https://www.buymeacoffee.com/nov1n"],"categories":["Other"],"sub_categories":["Template Builders"],"readme":"![Example article](assets/logo-title.png)\n\n*Remarkable Pocket* synchronizes articles from [Pocket](https://getpocket.com) to\nyour [Remarkable](https://remarkable.com/) tablet. It can be run on your computer, on a server, or on your Raspberry Pi.\nBecause it does not\nrun on the device itself this approach saves battery life, and is resistant to Remarkable software updates.\n\nAn example run of the program can be found below:\n\n```\n[2021-11-02 14:21:22] Starting sync...\n[2021-11-02 14:21:25] Found 1 read article(s) on Remarkable.\n[2021-11-02 14:21:25] (1/1) Marking 'Getting Unstuck' as read on Pocket...\n[2021-11-02 14:21:25] (1/1) Deleting 'Getting Unstuck' from Remarkable...\n[2021-11-02 14:21:27] Found 5 unread article(s) on Remarkable. Downloading 5 more from Pocket.\n[2021-11-02 14:21:27] (1/5) Downloading: 'What Modules Are About'.\n[2021-11-02 14:21:33] (2/5) Downloading: 'Pursue High-quality Leisure'.\n[2021-11-02 14:21:39] (3/5) Downloading: 'Hunting down a C memory leak in a Go program'.\n[2021-11-02 14:21:45] (4/5) Downloading: 'Beginner's Guide To Abstraction'.\n[2021-11-02 14:22:03] (5/5) Downloading: 'Timer Modules in Microcontrollers'.\n[2021-11-02 14:22:03] No content found. Skipping...\n[2021-11-02 14:22:15] (6/5) Downloading: 'SSH Tunneling Explained'.\n[2021-11-02 14:22:33] Uploading 5 article(s) to Remarkable.\n[2021-11-02 14:22:33] (1/5) Uploading: 'What Modules Are About.epub'.\n[2021-11-02 14:22:34] (2/5) Uploading: 'Pursue High-quality Leisure.epub'.\n[2021-11-02 14:22:34] (3/5) Uploading: 'Hunting down a C memory leak in a Go program.epub'.\n[2021-11-02 14:22:34] (4/5) Uploading: 'Beginner's Guide To Abstraction.epub'.\n[2021-11-02 14:22:34] (5/5) Uploading: 'SSH Tunneling Explained.epub'.\n[2021-11-02 14:22:35] Completed sync in 1m 13s.\n[2021-11-02 14:22:35] Next sync in 30m.\n```\n\n\u003cdetails\u003e\u003csummary\u003e\u003ci\u003eClick here to see what a downloaded article looks like on the Remarkable.\u003c/i\u003e\u003c/summary\u003e\n\u003cimg src=\"assets/article-small.jpg\" alt=\"An example article on the Remarkable.\"\u003e\n\u003c/details\u003e\n\n## Features\n\n- **No installation required.** The application can be run with a single command.\n- **Works on Remarkable 1, Remarkable 2, and Remarkable Paper Pro.**\n- **Full support for images, code blocks, and formulas.**\n- **Articles are downloaded as epubs.** This allows you to customize the font, font size, margins, etc.\n- **Automatically archive read articles on Pocket.** When you finish reading an article and close it while on the last\n  page, it will be automatically deleted from the Remarkable and archived on Pocket. A new unread article will be\n  downloaded in its place.\n- **Download articles from Pocket with a given tag.** If a `tag-filter` (see [Configuration](#configuration)) is\n  supplied then only articles with that tag will be downloaded.\n\n## Usage\n\nThe easiest way to run the application is using Docker. First install Docker for your platform\nfrom https://docs.docker.com/get-docker/. Then run the following command to start the application on Linux or Mac (I\nhave not tested it on Windows yet):\n\n```\nmkdir -p ~/.remarkable-pocket \u0026\u0026 docker run -it --env TZ=Europe/Amsterdam -p 65112:65112 -v ~/.remarkable-pocket:/root/.remarkable-pocket ghcr.io/nov1n/remarkable-pocket:0.6.0\n```\n\nThe first time you run the application, you will be asked to authorize Pocket and Remarkable Cloud. Once you have done\nthis subsequent runs will read the credentials from configuration files in the `~/.remarkable-pocket` directory. You can also change\nthe timezone in the command to match your location.\n\nBy default, articles are synchronized to the `/Pocket/` directory on the Remarkable every 60 minutes.\n\n### Docker Compose\n\nIf you prefer to use [Docker Compose](https://docs.docker.com/compose/) first run the command in the [Usage](#usage)\nsection and complete the authentication steps (this only needs to happen once). When syncing starts you can stop the\ncontainer, download the [docker-compose.yml](docker-compose.yml) file, and run `docker compose up`.\n\n### Raspberry Pi\n\nThere is also a Docker image available for the Raspberry Pi, so the command in [Usage](#usage) will work. If you are\nrunning the pi in headless mode (without a screen), you have two options to complete the authentication flow. The\neasiest way is to use a VNC client to connect to the pi when running the program for the first time.\n\nAlternatively, you can create an ssh tunnel from your machine to the pi like so:\n\n```bash\nssh -L 65112:localhost:65112 \u003crpi username\u003e@\u003crpi ip address\u003e\n```\n\nThen, you can proceed with the initial run Docker command and simply copy the authentication URL from the terminal to\nyour browser. The redirect will be tunneled to the Raspberry Pi via the SSH tunnel.\n\n## Configuration\n\nThe default configuration can be changed by providing command-line arguments. Simply append these to the `docker run`\ncommand. Below is a list of all available options.\n\n```\nUsage: remarkable-pocket [-hnorvV] [-d=\u003cstorageDir\u003e] [-f=\u003ctagFilter\u003e] [-i=\u003cinterval\u003e] [-l=\u003carticleLimit\u003e]\nSynchronizes articles from Pocket to the Remarkable tablet.\n  -o, --run-once     Run the synchronization once and then exit.\n  -r, --reset        Resets all configuration before starting.\n  -f, --tag-filter=\u003ctagFilter\u003e\n                     Only download Pocket articles with the this tag.\n  -n, --no-archive   Don't archive read articles.\n  -l, --article-limit=\u003carticleLimit\u003e\n                     The maximum number of Pocket articles to be present on the Remarkable.\n                       Default: 10\n  -i, --interval=\u003cinterval\u003e\n                     The interval between subsequent synchronizations.\n                       Default: 60m\n  -d, --storage-dir=\u003cstorageDir\u003e\n                     The storage directory on the Remarkable in which to store downloaded Pocket articles.\n                       Default: /Pocket/\n  -v, --verbose      Enable debug logging.\n  -h, --help         Show this help message and exit.\n  -V, --version      Print version information and exit.\n```\n\n## Frequently Asked Questions (FAQ)\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eSomething isn't working right, how do I fix it?\u003c/b\u003e\u003c/summary\u003e\n\nThe first step is to run the command once with the `-r` flag. This resets all configuration, and resolves common\nissues. If that doesn't solve your problem feel free to open an issue. Please run the application with the -v flag\nfor verbose log output, and attach the logs to the ticket. This helps me help you.\n\n\u003c/details\u003e\n\n## Limitations\n\n- Articles behind a paywall cannot be downloaded.\n- Articles on websites with DDOS protection or captcha cannot be downloaded.\n- Articles that use javascript to load the content cannot be downloaded.\n\n## Build Instructions\n\nThe project uses Gradle as a build tool and can be built using the `gradle build` command. This will generate jars\nin `build/libs/`. To run the jar, use the `java -jar build/libs/remarkable-pocket-x.x.x.jar` command, replacing `x.x.x`\nwith the correct version.\n\n### Building docker\n\nTo build the docker image run `gradle jib`. This will use a dynamically generated Dockerfile based on the configuration\nin the `jib` section of the `build.gradle` file. To run the image, see the command in the [Usage](#usage) section.\n\n### Other package formats\n\nIf you would like to package the application in another format e.g. `deb`, `nix` or `AUR`, I'm happy to review a Pull\nRequest.\n\n## Thanks\n\n- https://epub.press/ for providing a free epub generator API. Consider donating to support this project.\n- https://github.com/juruen/rmapi for providing a client for the Remarkable Cloud.\n\n## Support\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/nov1n)\nif you want to say thanks. :-)\n\n## Disclaimer\n\nThe author(s) and contributor(s) are not associated with reMarkable AS, Norway. reMarkable is a registered trademark of\nreMarkable AS in some countries. Please see https://remarkable.com for their product.\n\nRemarkablePocket uses rmapi to connect to Remarkable cloud. The newly released sync protocol is not yet tested through\nand may contain bugs.\nAs [recommended](https://github.com/juruen/rmapi#warning-experimental-support-for-the-new-sync-protocol) by rmapi please\nmake sure you have a backup of your files.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnov1n%2FRemarkablePocket","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnov1n%2FRemarkablePocket","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnov1n%2FRemarkablePocket/lists"}