Skip to content

nikhil1raghav/kindle-send

Repository files navigation

Send blogs, documents, collection of webpages to your kindle


Documentation

kindle-send is a CLI tool to send files and webpages to your e-reader via e-mail.

Webpages are optimized for viewing on e-reader

Credits - Netflix tech blogFixing Performance Regressions Before they Happen


An epub is created from the url, then mailed to the kindle. Amazon converts that epub into azw3 for viewing on kindle. So you can use kindle-send, even if you're using a different ereader like Kobo and Remarkable if it supports pushing ebooks via email.


Installation

To run kindle-send you just need the compiled binary, no other dependency is required.

Brew

Kindle-send can be installed via brew

brew install nikhil1raghav/tap/kindle-send

Download binary

Download the binary for your operating system and architecture from release page and add it to your PATH. If there is no binary compatible for your system. Please create an issue.

Go install

If you have golang installed, you can also install kindle-send using

go install github.com/nikhil1raghav/kindle-send@latest

For the first time when you run kindle-send, you need to answer some questions to create a configuration file, which has options like sender, receiver, password and path to store the generated files.

If you're using gmail to send mails to kindle, consider creating an app password and then using it.


Following modes of operation are supported

1. Send a file

Using kindle-send to mail an already existing file.

kindle-send send Jane-eyre-Autobiography.epub

2. Send a webpage

Quickly send a webpage to kindle

kindle-send send http://paulgraham.com/hwh.html

3. Multiple webpages combined in a single volume

Create a text file with new line separated links of webpages and then all the webpages mentioned in the file will be bound in a single ebook as chapters and sent to ereader.

kindle-send send links.txt

4. Send Multiple files at once

You can send multiple files or links at once.

kindle-send auto detects the type of file and takes required action.

Each argument is sent as a separate file.

For example, the command below will send an html page (converted to ebook), an ebook and a collection of bookmarks post downloading the webpages and creating an ebook from them.

kindle-send send http://paulgraham.com/hwh.html jane-eyre-autobiography.epub some-links.txt

5. Download but not send

If you just want to save a webpage for reading later, replace send with download and the files will be saved in local directory but will not be sent to an ereader.

Example

kindle-send download https://blog.maxgio.me/posts/linux-scheduler-journey/

Additional options

Default timeout for mail is 2 minutes, if you get timeout error while sending bigger files. Increase the timeout using --mail-timeout <number of seconds> or -m option

Specify a different configuration file using --config or -c option. Configuration is stored in home directory as KindleConfig.json. You can directly edit it if you want.

When sending a collection of pages if no title is provided, volume takes the title of the first page.

You can always get more information about usage of commands and options by typing kindle-send help


Contribute

Feel free to create an issue and then working on some feature, so that we don't overwrite each other.

Todo

  • Weekly RSS feed dump, when combined with cron
  • Better CSS & formatting for epub
  • Compressing images before embedding to reduce final file size
  • Simple UI form driven by CLI. Something like kindle-send dashboard.
  • Auto detect file type
  • Option to download but not send the files
  • Remove dependency on percollate and calibre
  • Make installation easier, add brew and other package managers.