Blogpack
Blog → Book!
Download entire blogs for offline reading. Generates PDF, EPUB, and HTML with working internal links and embedded images.
Absolutely ideal for long flights, distraction free reading, digital detoxes, or pretending you'll finally catch up on that Substack.
Works with Substack, Ghost and Wordpress blogs.
Installation
pip install blogpack
Note: PDF export requires additional system libraries. If PDF generation fails:
- Ubuntu/Debian:
sudo apt install libpango-1.0-0 libpangocairo-1.0-0 - macOS:
brew install pango - Windows: Install GTK3 from MSYS2
EPUB and HTML exports work without these dependencies.
Usage
blogpack https://www.cold-takes.com/
Downloads the blog to ./cold-takes/ with HTML, EPUB, and PDF formats.
Options
blogpack https://example.com/ -o ./my-folder # Custom output directory
blogpack https://example.com/ -f epub # Only generate EPUB
blogpack https://example.com/ -n 50 # Limit to 50 posts
blogpack https://example.com/ --no-images # Skip images
blogpack https://example.com/ --no-verify-ssl # Disable SSL verification
Web App
A browser-based interface is included in blogpack-web/.
Run Locally
cd blogpack-web
pip install -r requirements.txt
uvicorn app:app --reload
# Open http://localhost:8000
Deploy with Docker
docker build -t blogpack-web .
docker run -p 8000:8000 blogpack-web
Output Structure
<blog-name>/ # Derived from blog URL
├── html/
│ ├── index.html # Table of contents
│ ├── post-slug.html # Individual posts
│ └── images/ # Downloaded images
├── <blog-name>-archive.epub # For e-readers
└── <blog-name>-archive.pdf # Single PDF
License
GPL-3.0 - See LICENSE for details.
Metadata
Release files for blogpack 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| blogpack-0.1.4.tar.gz | 68.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| blogpack-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 96.7 kB
Release files / blogpack-0.1.4.tar.gz
| Download URL | blogpack-0.1.4.tar.gz |
|---|---|
| Size | 68.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
df596a21ef2ad96e8e0aa1e13e500779509aa90f8c5b432a69120d3496647077
|
|
BLAKE2b-256 checksum How to use checksums |
48033ef66e8529af4f7655b90fa5de4a5d23ebaab66e3b822a2ff2df258e711e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.6
|
Release files / blogpack-0.1.4-py3-none-any.whl
| Download URL | blogpack-0.1.4-py3-none-any.whl |
|---|---|
| Size | 28.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ede9ae2e7cb10b1d6a4bee319c0bc6f501792450f90b218e33388b32c05dd335
|
|
BLAKE2b-256 checksum How to use checksums |
afcfd3504e1a58bc3d8572e060cd03e33a675731da46c5f4610c95f4fda91933
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.6
|