Download entire blogs for offline reading with working internal links
Project description
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file blogpack-0.1.4.tar.gz.
File metadata
- Download URL: blogpack-0.1.4.tar.gz
- Upload date:
- Size: 68.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df596a21ef2ad96e8e0aa1e13e500779509aa90f8c5b432a69120d3496647077
|
|
| MD5 |
bae6199f294d945141467ea173211c72
|
|
| BLAKE2b-256 |
48033ef66e8529af4f7655b90fa5de4a5d23ebaab66e3b822a2ff2df258e711e
|
File details
Details for the file blogpack-0.1.4-py3-none-any.whl.
File metadata
- Download URL: blogpack-0.1.4-py3-none-any.whl
- Upload date:
- Size: 28.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ede9ae2e7cb10b1d6a4bee319c0bc6f501792450f90b218e33388b32c05dd335
|
|
| MD5 |
d824ecef35e948ca4f20460fa10e2c83
|
|
| BLAKE2b-256 |
afcfd3504e1a58bc3d8572e060cd03e33a675731da46c5f4610c95f4fda91933
|