bili_novel_packer: turning Chinese light novel sites into EPUB files
轻小说打包器,采集哔哩轻小说网站(bilinovel.com linovelib.com)内容,打包成EPUB格式,支持封面、插图、目录,支持分卷合并。
At a glance
- What is it?
- bili_novel_packer is a Dart command line tool that collects chapters from two Chinese light novel sites and assembles them into EPUB files with a cover, illustrations and a table of contents, with support for merging volume-split novels. Its most instructive documentation is the FAQ, which explains plainly why the tool breaks, why it is slow, and how to edit the cover by hand afterwards.
- Who is it for?
- Adopt bili_novel_packer if you read light novels published on the two sites it supports and want a single EPUB with a proper cover and a table of contents instead of a folder of scraped HTML. Do not adopt it as a scheduled job, because the sites change their anti-scraping measures and the tool stops working until you update it, and check your own position on downloading the content before you do.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 24 days ago.
- What is it written in?
- Mainly Dart, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What it does and which sites it reads
bili_novel_packer is a light novel packer. It collects the content of supported light novel websites and packs it into EPUB format, including illustrations and a table of contents.
The two supported sites are named explicitly. The first is 哔哩轻小说 at linovelib.com, and the second is 轻小说文库, whose link points at a login page on wenku8.net. So the coverage is narrow and deliberate, two sites rather than a general crawler, and for the second of them you need an account.
The tool is written in Dart, and the repository is a standard Dart package layout with lib/, bin/, test/, a pubspec.yaml, an analysis_options.yaml and a CHANGELOG.md. It is hosted in two places, on GitHub and on Gitee, with the badges for both at the top of the guide, which is a common pattern for tools aimed at a Chinese-speaking audience where GitHub access can be unreliable.
The releases are frequent and small. v0.2.49 came on 2026-09-03, v0.2.48 on 2026-09-02 and v0.2.47 on 2026-08-28, and the last push to the repository was on 2026-09-29. Patch-level versions moving every few days, with a changelog file at the root, is the shape of a project that reacts to a moving target rather than one that evolves on a schedule.
The licence is MIT, which is worth noting given the content question this kind of tool raises, and the repository topics list dart, epub, epub-generation, novel and spider.
The FAQ is the most useful documentation here, because it explains the failure modes
Three questions in the guide have answers that tell you more about the tool than any feature list could.
The first asks why it often cannot be used. The answer is that the website updates its anti-scraping measures, so you need to update the tool before you can use it again, and you should make sure you are on the latest version. If the latest version still does not work, report an issue.
That is an honest statement of a structural fragility. The tool is a scraper, the site defends against scrapers, and the project is effectively a running patch against a changing defence. The version number is therefore a compatibility marker rather than a feature release, which is why the releases come every few days and the last push was only a couple of weeks ago. An issue tracker doubles as the bug report channel for when the site changes again.
The second question asks why packing is so slow. The answer is that the site has a rate limit, and requesting too fast gets you throttled. So the speed of a run is not a property of your machine or of the Dart code, it is a property of how patient the server lets you be. Any pipeline that runs this in a loop has to respect that, and a run that hammers the site will simply be slowed down or blocked.
The third question is about the cover image, and the answer is a set of manual steps for editing the EPUB after the fact, which is the subject of the next section.
Together, the three answers give a fair assessment: this is a tool that works when the site lets it, at the pace the site allows, and it needs manual finishing.
Editing the cover by hand, which teaches you what an EPUB actually is
The cover instructions are the most technically revealing part of the guide, because they walk through the internals of an EPUB file as a zip archive with a specific layout.
The first step is to unzip the EPUB file as a ZIP, and then edit the OEBPS/content.opf file. That file is the package document, the manifest of everything in the book, and it is where the cover is declared.
If the OEBPS/images folder does not contain a cover image, you add the image to the images directory and then add a line to the manifest in OEBPS/content.opf:
<item id="images\000001.jpg" href="images/000001.jpg" media-type="image/jpeg"/>Then you change 000001.jpg to the name of the corresponding image, and the guide is emphatic about not modifying the slashes and backslashes. That detail is not pedantry: the id attribute in a manifest entry has to match the href, and the backslash-versus-slash distinction is a Windows path convention that a hand-edited file can easily get wrong in a way that only shows up on a strict reader.
To change the cover itself, you find the existing entry:
<item id="cover-image" href="images/000035.jpg" media-type="image/jpeg"/>and change the value of the href to the path of the image you want. Then you compress it back into a ZIP and change the extension to EPUB.
So the epub format here is a zip with a defined internal directory structure, an XML manifest listing each resource with its identifier, path and media type, and a cover declared as a particular item in that manifest. The tool does the packing, and this section exists because the cover it picks is not always the one you want, and there is no option to override it.
The reader support notes, and the interactive illustration mode
Two reading apps get their own sections, and both are about illustrations rather than text.
The first is 多看阅读, the Duokan reader, and the note is that the illustration support has an interactive mode where you can click an image to view it full screen. The screenshots in the guide show the same content rendered at different levels, which suggests the point is that an EPUB with illustrations is not just a text file with pictures in it, and a reader that does not support the interaction mode will show the pictures as flat page elements.
The second is Koodo Reader, which is an open source reader, and the guide shows it rendering the output as well.
The fact that two readers are documented at all is a signal about the output format. An EPUB is a standard, but the standard allows a lot of latitude in how the pages are laid out, and a light novel with illustrations is a case where the layout matters. Cover, illustrations and table of contents are the three things the packer promises, and the reader notes are there so you can check the promise holds in the reader you actually use.
The table of contents is worth calling out because it is not trivial. A web novel has a chapter list that is often nested, sometimes with volume boundaries, and the description mentions support for volume merging, so the packer can combine parts that the source site split into separate volumes. A book that is one file with a navigable chapter list is a meaningfully different object from a bookmarked website, and that is the value proposition of the whole tool.
The usage instructions are correspondingly simple, because there is not much to configure. Double click the exe or use the command line, and the screenshots show a small window rather than a full application interface.
Building from source, and the Windows-only limitation
The build section explains the one real constraint on the project, and it is a platform one.
Because Dart does not support cross compilation for now, only Windows build artefacts are provided. If you want to use it on another system, you need to download the source and compile it yourself.
For Windows, you run the compile.bat in the directory, or you run the compiler directly:
dart compile exe bin/main.dart -o ./build/bili_novel_packer.exeFor other systems it is the same, with the output filename changed:
dart compile exe bin/main.dart -o ./build/bili_novel_packerThe command is the standard Dart ahead-of-time compilation to a native executable, and the difference between the two is the extension. On Windows the output needs the .exe extension, elsewhere it does not.
That is a small thing to work around, and it is worth understanding why it exists. Dart's ahead-of-time compiler produces a native binary for the platform you run it on, and the project has not set up the cross-compilation toolchain that would let them produce Linux and macOS binaries from a Windows machine. The consequence for a user is that the prebuilt binary is only useful if you are on Windows, and everyone else needs a Dart SDK.
The repository also has a .gitee/ directory for the Gitee hosting and a .github/ directory for GitHub, so the CI setup is duplicated across the two hosts rather than run once and mirrored, which is another consequence of the dual-hosting arrangement.
Editorial conclusion
Adopt bili_novel_packer if you read light novels published on the two sites it supports and want a single EPUB with a proper cover and a table of contents instead of a folder of scraped HTML. Do not adopt it as a scheduled job, because the sites change their anti-scraping measures and the tool stops working until you update it, and check your own position on downloading the content before you do. Before you build from source, expect to be on Windows, since only Windows binaries are published and Dart does not cross compile.
Frequently asked questions
Which sites does bili_novel_packer support?
Two: 哔哩轻小说 at linovelib.com, and 轻小说文库 whose link points at a login page on wenku8.net. Coverage is deliberately narrow rather than a general crawler.
Why does bili_novel_packer often stop working?
The website updates its anti-scraping measures, so the tool has to be updated before it works again, and you should be on the latest version. If the latest version still fails, the guide asks you to report an issue.
Why is packing so slow?
The site has a rate limit, and requesting too fast gets you throttled. The speed of a run is governed by the site's rate limit rather than by the local machine.
How do I change the cover image of a packed EPUB?
Unzip the EPUB as a ZIP, edit OEBPS/content.opf, add an item entry for the new image if it is not already in the OEBPS/images folder, point the cover-image item's href at the image you want, then zip it back up and rename the extension to EPUB.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/montaro2017-bili-novel-packer)Was this useful?