2024-08-26 22:49:26 -04:00

yoink

A tool for downloading comics from readallcomics.com and batcave.biz, packaging them as .cbz archives. Available as a CLI command or a self-hosted web application. The web UI also lets you package local image folders into .cbz archives directly from your browser.

How it works

  1. Fetches the comic page and extracts the title and image links
  2. Downloads all pages concurrently with Cloudflare bypass
  3. Packages the images into a .cbz (Comic Book Zip) archive
  4. Cleans up downloaded images, keeping only the cover (001)

Installation

From source

Requires Go 1.22.3+:

go build -o yoink

Pre-built binaries

Pre-built binaries for Linux (arm64) and Windows are available on the releases page.

Docker

docker pull git.brizzle.dev/bryan/yoink-go:latest

CLI

Download a single comic issue:

yoink <url>

Examples:

yoink https://readallcomics.com/ultraman-x-avengers-001-2024/
yoink https://batcave.biz/ultraman-x-avengers-1-2025/

The comic title is extracted from the page and used to name the archive. Output is saved to:

<library>/<Title>/<Title>.cbz

Web UI

Yoink includes a self-hosted web interface for browsing and downloading comics from your browser.

Yoink Web UI

Running directly

yoink serve

By default the server listens on port 8080. Use the -p flag to change it:

yoink serve -p 3000

Running with Docker

A docker-compose.yml is included for quick deployment:

docker compose up -d

Or with Podman:

podman compose up -d

The web UI is then available at http://localhost:8080.

Features

  • Download queue — paste a comic URL into the input bar and track download progress in real time
  • Local packaging — drag and drop a folder of images (or use the file picker) to package them as a .cbz archive and add it to your library without downloading anything
  • Library grid — browse your comics as a 150×300 cover grid with title-initial placeholders for missing covers
  • Filter & sort — filter by title and sort by newest, oldest, AZ, or ZA
  • One-click download — click any cover to download the .cbz archive directly
  • Delete — remove a comic from your library with the × button on each card (confirmation required)

Packaging local images

Local packaging panel

Click the upload icon (↑) in the header to open the packaging panel. Enter a title, then either:

  • Drag and drop a folder or image files onto the drop zone
  • Select folder to pick an entire directory at once
  • Select files to pick individual images

Images are sorted by filename, the first image is used as the cover, and the result is saved to your library as <Title>/<Title>.cbz.

Library volume

Downloaded comics are stored at the path set by YOINK_LIBRARY. When using Docker, mount this as a volume to persist your library across container restarts:

# docker-compose.yml
services:
  flaresolverr:
    image: ghcr.io/flaresolverr/flaresolverr:latest
    restart: unless-stopped

  yoink:
    image: git.brizzle.dev/bryan/yoink-go:latest
    ports:
      - "8080:8080"
    volumes:
      - ./library:/library
    environment:
      - YOINK_LIBRARY=/library
      - FLARESOLVERR_URL=http://flaresolverr:8191
    restart: unless-stopped
    depends_on:
      - flaresolverr

Configuration

Variable Default Description
YOINK_LIBRARY ~/.yoink Directory where comics are stored
FLARESOLVERR_URL (unset) URL of a FlareSolverr instance for Cloudflare-protected sites (e.g. batcave.biz). Required when running in Docker.
YOINK_LIBRARY=/mnt/media/comics yoink https://readallcomics.com/some-comic-001/

Dependencies

Description
A tool for downloading comics from readallcomics.com and batcave.biz, packaging them as .cbz archives.
Readme 1,017 KiB
1.3.0 Latest
2026-03-12 14:27:01 +00:00
Languages
HTML 48.8%
Go 48.3%
Makefile 1.6%
Dockerfile 1.3%