Scrapes the web serial Worm, its sequel Ward, and the bridge series Glow-worm into an ebook format.
First you'll need a modern version of Node.js. The earliest version tested is v20.16.0.
Then, open a terminal (Mac documentation, Windows documentation) and install the program by typing
npm install -g worm-scraper
This will take a while as it downloads this program and its dependencies from the internet. Once it's done, try to run it, by typing:
worm-scraper --help
If this outputs some help documentation, then the installation process went smoothly. You can move on to assemble the ebook by typing
worm-scraper
This will take a while, but will eventually produce a Worm.epub
file!
If you'd like to get Ward instead of Worm, use --book=ward
, e.g.
worm-scraper --book=ward
Similarly, for Glow-worm:
worm-scraper --book=glow-worm
EPUBs are not the native format for Amazon Kindle devices and apps. However, you can send them to your Kindle library by following Amazon's instructions.
The original chapter titles, i.e. the ones that appear as heading at the top of each chapter published online, are not very book-like. They vary wildly, e.g. "Gestation 1.1", "Daybreak – 1.2", "Interlude 1", "Flare – Interlude 2", "Interlude 10.y", "Interlude 10.5 (Bonus)", "Interlude 14.5 (Bonus Interlude)".
By default, worm-scraper
simplifies the titles to be just numbers ("1", "2", "3"), with interludes denoted via Roman numerals ("Interlude I", "Interlude II", ...)—or left as simply "Interlude" if an arc contains a single interlude.
If you want the original chapter titles, you can pass the following option:
worm-scraper --chapter-titles=original
There's a third option, which is to have the interludes (and Ward's epilogues) include character names. Samples of this format include "Interlude: Danny" or "Interlude: Armsmaster". Use
worm-scraper --chapter-titles=character-names
for this. This can be a slight spoiler, because the reading experience of many interludes relies on you gradually discovering who the main character is and how they relate to what you've seen before. It can also spoil you on which characters survive, if you look ahead in the table of contents.
This style is sort of aligned with how the interludes are presented in the table of contents for Worm and for Ward. But even those are inconsistent, and worm-scraper
departs from the table of contents names in several cases. worm-scraper
generally tries to pick the name name by which the character is first referred to in the chapter, to minimize the spoiler effect, but sometimes takes influence from the original tables of contents, or the names chosen by the Fandom wiki.
You can see all the chosen character-name titles in the book-data/
directory's files. If you strongly disagree with a choice made, please file an issue.
This project makes a lot of fixups to the original text, mostly around typos, punctuation, capitalization, and consistency. You can get a more specific idea of what these are via the code; there's convert-worker.js
, where some things are handled generally, and substitutions.json
, for one-off fixes.
This process is designed to be extensible, so if you notice any problems with the original text that you think should be fixed, file an issue to let me know, and we can update the fixup code so that the resulting ebook is improved. (Or better yet, send a pull request!)