A simple script that generates an EPUB from a single URL, zero-config
Go to file
Nemo cdfda9714f
Create FUNDING.yml
2022-05-30 14:49:58 +05:30
.github Create FUNDING.yml 2022-05-30 14:49:58 +05:30
.dockerignore Adds Docker support 2020-01-16 14:14:41 +05:30
.gitignore initial commit 2020-01-08 02:26:50 +05:30
CHANGELOG.md v1.2.3 2020-07-19 19:14:11 +05:30
Dockerfile Adds Docker support 2020-01-16 14:14:41 +05:30
LICENSE Update LICENSE date 2020-04-26 07:02:49 +05:30
README.md Adds Docker support 2020-01-16 14:14:41 +05:30
TODO.md Adds Docker support 2020-01-16 14:14:41 +05:30
generate.js Fixes dc:date element 2020-01-28 02:24:33 +05:30
index.js General improvements 2020-01-28 00:45:41 +05:30
package-lock.json 1.2.4 2022-01-04 09:43:59 +05:30
package.json 1.2.4 2022-01-04 09:43:59 +05:30



npm Docker Build Status GitHub issues Docker Pulls npm bundle size

A simple script that generates an EPUB from a single URL, taking care for the following:

  1. Cover Image
  2. Readability
  3. Standard-compliance metadata (and Author information)


You can either run this script as an NPM package, or as a docker container.


You will need pandoc and npm installed. To install this script globally:

npm install --global url-to-epub

Please make sure that the global node_modules/bin directory is added to your PATH. You can check that directory by running npm bin --global.


docker pull captn3m0/url-to-epub:latest



url-to-epub <url>

Generate EPUB file from URL

  url  The URL to download                                   [string] [required]

  --version       Show version number                                  [boolean]
  -h              Show help                                            [boolean]
  --output, -o    Output file to save EPUB[string] [default: "url-to-epub.epub"]
  --title, -t     Title of the book, if not the same as the page title
                                                        [string] [default: null]
  --cover-url     Image URL to download as cover        [string] [default: null]
  --language, -l  A valid language tag
     [string] [choices: "af", "af-ZA", "ar", "ar-AE", "ar-BH", "ar-DZ", "ar-EG",
         "ar-IQ", "ar-JO", "ar-KW", "ar-LB", "ar-LY", "ar-MA", "ar-OM", "ar-QA",
          "ar-SA", "ar-SY", "ar-TN", "ar-YE", "az", "az-AZ", "az-Cyrl-AZ", "be",
   "be-BY", "bg", "bg-BG", "bs-BA", "ca", "ca-ES", "cs", "cs-CZ", "cy", "cy-GB",
         "da", "da-DK", "de", "de-AT", "de-CH", "de-DE", "de-LI", "de-LU", "dv",
      "dv-MV", "el", "el-GR", "en", "en-AU", "en-BZ", "en-CA", "en-CB", "en-GB",
   "en-IE", "en-JM", "en-NZ", "en-PH", "en-TT", "en-US", "en-ZA", "en-ZW", "eo",
   "es", "es-AR", "es-BO", "es-CL", "es-CO", "es-CR", "es-DO", "es-EC", "es-ES",
         "es-GT", "es-HN", "es-MX", "es-NI", "es-PA", "es-PE", "es-PR", "es-PY",
   "es-SV", "es-UY", "es-VE", "et", "et-EE", "eu", "eu-ES", "fa", "fa-IR", "fi",
      "fi-FI", "fo", "fo-FO", "fr", "fr-BE", "fr-CA", "fr-CH", "fr-FR", "fr-LU",
      "fr-MC", "gl", "gl-ES", "gu", "gu-IN", "he", "he-IL", "hi", "hi-IN", "hr",
   "hr-BA", "hr-HR", "hu", "hu-HU", "hy", "hy-AM", "id", "id-ID", "is", "is-IS",
      "it", "it-CH", "it-IT", "ja", "ja-JP", "ka", "ka-GE", "kk", "kk-KZ", "kn",
    "kn-IN", "ko", "ko-KR", "kok", "kok-IN", "ky", "ky-KG", "lt", "lt-LT", "lv",
      "lv-LV", "mi", "mi-NZ", "mk", "mk-MK", "mn", "mn-MN", "mr", "mr-IN", "ms",
         "ms-BN", "ms-MY", "mt", "mt-MT", "nb", "nb-NO", "nl", "nl-BE", "nl-NL",
      "nn-NO", "ns", "ns-ZA", "pa", "pa-IN", "pl", "pl-PL", "ps", "ps-AR", "pt",
         "pt-BR", "pt-PT", "qu", "qu-BO", "qu-EC", "qu-PE", "ro", "ro-RO", "ru",
   "ru-RU", "sa", "sa-IN", "se", "se-FI", "se-NO", "se-SE", "sk", "sk-SK", "sl",
     "sl-SI", "sq", "sq-AL", "sr-BA", "sr-Cyrl-BA", "sr-SP", "sr-Cyrl-SP", "sv",
          "sv-FI", "sv-SE", "sw", "sw-KE", "syr", "syr-SY", "ta", "ta-IN", "te",
      "te-IN", "th", "th-TH", "tl", "tl-PH", "tn", "tn-ZA", "tr", "tr-TR", "tt",
       "tt-RU", "ts", "uk", "uk-UA", "ur", "ur-PK", "uz", "uz-UZ", "uz-Cyrl-UZ",
         "vi", "vi-VN", "xh", "xh-ZA", "zh", "zh-CN", "zh-HK", "zh-MO", "zh-SG",
                                      "zh-TW", "zu", "zu-ZA"] [default: "en-US"]

  url-to-epub --title "Articulated Restraint" -o articulated-restraint.epub


docker run --user $UID  --volume /tmp:/data captn3m0/url-to-epub:latest --output /data/articulated-restraint.epub --cover-url https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1548962694l/43782466._SY475_.jpg  https://www.tor.com/2019/02/06/articulated-restraint-mary-robinette-kowal/

The generated file will be available in /data/articulated-restraint.epub.


There is a list of planned items in TODO.md.


Licensed under the MIT License. See LICENSE file for details.