Notion to Ebook
Notion to Ebook is a lightweight library written in Typescript to convert any notion document consisting of multiple nested documents or databases into an ebook format like PDFs, with the table of contents, page cover, headers etc.
Use Cases
- Say you have a notion database containing many documents, and you wish to export them into a single PDF. Notion doesn't allow non-enterprise uses to include all the subpages into a single PDF recursively (Have a look at image below). But this library lets you generate it without any hassle, and even on a free plan. :)
- Say you have an e-reader like Kindle would like to send all the articles you have written on Notion workspace every 24 hours automatically. Notion to Ebook can help you in it. You can use it to get the Ebook version, then can send it to your e-reader device. :). You may consider using GitHub actions or any similar service to automate the workflow.
Features
This application requires Zero Configuration. The current implementation does most things like arranging all the files as chapters and generating the Table of Contents, cover page, footer, etc.
There are two modes to use this application:
-
Standalone mode: It allows users to generate a separate PDF for each of the HTML pages. For example, if your notion exports have a total of 12 pages (including all nested docs, tables etc.), then there will be precisely 12 PDFs generated for each one of them. You can find the exported merged file inside session_files/output/standalone.
-
Merge mode: It allows users to generate a single PDF for the entire export. It concatenates each of the notion pages smartly to generate a single document. Table of contents of the whole document is also included at the beginning to ease browsing across the different sections of the merged PDF. You can find the exported standalone files inside session_files/output/merged.
💡 Document Arranging Logic: In merge mode all documents not linking to any other document at the current level are placed before the documents linking to other ones in alphabetical order.
Installation
npm install @subhamx/notion-to-ebook
[Required] Installing wkhtmltopdf
The following application uses wkhtmltopdf
to generate PDFs. Kindly follow these steps to get wkhtmltopdf
installed and added to PATH
.
⚠️ Packages provided by your distribution might be easier to install but they may not be using a patched Qt and have missing features. So use it at your own discretion.
- First of all, install the
wkhtmltopdf
by downloading the installer from here. - Now we need to add
wkhtmltopdf
to PATH. You might or might not need to perform this step, as the installer automatically performs this step for some distributions. (FYI, macOS installer automatically adds to PATH. Another advantage of using a mac? 🤔). - Confirm that
wkhtmltopdf
is successfully added to PATH by opening terminal/command prompt/powershell
and executing the following command:
wkhtmltopdf --version
Note: On macOS, while trying to install wkhtmltopdf you will be prompted with macOS cannot verify that this app is free from malware. Kindly follow the steps mentioned here to fix it.
API
The usage is pretty straightforward.
- If you want to use in the standalone mode and generate separate PDF document for each one Notion Page.
import { buildStandaloneDocs } from "@subhamx/notion-to-ebook";
const token_v2 = "YOUR_NOTION_TOKEN_V2";
const pageId = "NOTION_PAGE_ID";
buildStandaloneDocs(token_v2, pageId);
- If you want to use in the merged mode and generate a single PDF document for each the complete export.
import { buildMergedDoc } from "@subhamx/notion-to-ebook";
const token_v2 = "YOUR_NOTION_TOKEN_V2";
const pageId = "NOTION_PAGE_ID";
buildMergedDoc(token_v2, pageId);
⚠️ Caution: Whenever you call any of the instances of buildStandaloneDocs or buildMergedDoc. It removes all files inside the session_files. So please be cautious before starting the script.
Details on Notion TOKEN_V2
Please note that TOKEN_V2 used in the application is different from Notion's official API Internal Integration Token.
Follow these steps to get the token_v2.
- Open the browser inspector tools and go to Application Tab.
- Then look for the cookies section, and use the value corresponding to the key token_v2 to authenticate to Notion Server.
Example
We will export this Notion document, which is a full-page database and has four documents inside it.
Please note that Notion doesn't allow us to export all of these documents as PDFs in one go without the enterprise plan.
Links to the output files generated using this library:
- Standalone files: Link
- Merged file: Link
It's Great, isn't it? 🎉
Future Changes in API
- Currently, the only export format this library supports is PDF. We plan to add additional formats like LaTex, mobi, epub etc. very soon.
- More support to tweak the configuration.
Contributing
This project welcomes contributions and suggestions. Feel free to report bugs and suggest features. It will help us improve this project. ⚡⚡