Loading search…

Explain with AI
Edit this page

Plugins

Last updated

Install and inspect third-party sources, validate plugins, and understand priority and trust boundaries.

On this page

comic-dl sources are plugins. The built-in scrapers ship with the package, but any third party can add a site as a separate Python package.

How plugins work

A plugin registers a Source class through the comic_dl.sources entry-point group. After installation, the source appears in comic-dl --list-sources and handles URLs matching its domain.

List installed plugins

comic-dl plugin list

Lists every installed third-party source with its name, version, and capabilities (chapter / series). A plugin whose class fails to import is shown with the load error instead of silently disappearing.

comic-dl --list-sources also lists every registered source (built-in and plugin) marked by origin, and --list-sources --plugin filters to plugins.

Installing a plugin

Install the plugin package into the same environment as comic-dl (uv):

uv pip install <plugin-package>

Then restart the CLI — the new source is discovered automatically.

Validating and scaffolding a plugin

# Check a plugin's Source class shape before installing it
comic-dl plugin validate path/to/source.py

# Generate a package skeleton (pyproject.toml + source.py)
comic-dl plugin scaffold my-site

validate inspects the file offline and reports contract violations (bad domain, unknown capabilities, missing scrape/scrape_series, …). scaffold writes a ready-to-edit package, emits the correct entry point, and points you at the next steps.

Plugin priority

A domain can be owned by only one source. Built-ins register at priority 0. A plugin with priority > 0 overrides a built-in for the same domain.

Security

Plugins are arbitrary code. A scraper plugin runs with your user account’s privileges on every scrape. Only install plugins you trust and can audit.

comic-dl enforces outbound-fetch invariants (redirect validation, no loopback/private targets) on its own helpers, but a deliberately malicious plugin is not constrained by those helpers.

Writing a plugin

Follow Writing a Plugin for the source contract, result types, and entry-point registration.