For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Get Started
  • Overview
    • Welcome
    • How It Works
  • Getting Started
    • Installation
    • Configuration
  • Usage
    • CLI Reference
    • Summary Styles
    • Batch Processing
    • Config Management
    • Retry Behavior
    • Errors and Troubleshooting
  • Features
    • Visual Mode
    • Transcription
    • Webapp
    • Caching
  • Integrations
    • Share a Summary
    • Cobalt
    • Proxy
    • Agent Skill
Get Started
On this page
  • When to Use Cobalt
  • When yt-dlp Is Better
  • Running Cobalt
  • Standalone
  • With Proxy
  • Full Stack (Summarize + Cobalt)
  • Docker Compose Reference
  • Configuration
Integrations

Cobalt

Was this page helpful?
Edit this page
Previous

Proxy

Next
Built with

Cobalt is a self-hosted media downloader that runs as a separate container alongside summarize. It fetches video and audio from platforms that yt-dlp cannot handle, or situations where yt-dlp fails due to rate limits, geo-restrictions, or missing cookies.

When to Use Cobalt

Generic HTTP video URLs

Cobalt handles direct video links from sites not covered by yt-dlp extractors.

yt-dlp failures

When yt-dlp returns rate-limit errors, geo-blocks, or login-required messages, Cobalt may succeed via its own extraction pipeline.

Anonymous fetching

Some platforms block anonymous yt-dlp requests but allow Cobalt’s embed-based or API-based fetching.

No cookie setup

If you do not want to manage per-platform cookie files, Cobalt can often download public content without them.

Tip: For Instagram, TikTok, Twitter/X, Reddit, and Facebook, yt-dlp is the primary downloader. It is faster, requires no extra container, and supports per-platform cookie authentication. Cobalt is only used as a fallback when yt-dlp fails or does not recognize the URL.

When yt-dlp Is Better

Use CasePreferred ToolReason
Instagram, TikTok, X, Reddit, Facebookyt-dlpNative extractors, cookie auth, no container overhead
Generic HTTP video linksCobaltBroader URL support
yt-dlp rate-limited / blockedCobaltAlternative extraction pipeline
YouTubepytubefixFastest, captions support

Running Cobalt

Standalone

$docker compose -f docker-compose.cobalt.yml up -d

This starts Cobalt on http://localhost:9000. The summarize app automatically points to this URL via the COBALT_BASE_URL environment variable.

With Proxy

If Cobalt needs to connect through a proxy (for geo-unblocking or CDN access):

  1. Copy the template:

    $cp cobalt.proxy.env.example cobalt.proxy.env
  2. Fill in your proxy credentials:

    1HTTP_PROXY=http://username:password@proxy-host:port/
    2HTTPS_PROXY=http://username:password@proxy-host:port/
    3NO_PROXY=localhost,127.0.0.1,cobalt,summarizer
  3. Start with the proxy overlay:

    $docker compose -f docker-compose.cobalt.yml -f docker-compose.proxy.yml up -d

Full Stack (Summarize + Cobalt)

$# Full stack, no proxy
$docker compose up -d
$
$# Full stack, with proxy
$docker compose -f docker-compose.yml -f docker-compose.proxy.yml up -d

Docker Compose Reference

FilePurpose
docker-compose.ymlSummarize + Cobalt together
docker-compose.cobalt.ymlCobalt only
docker-compose.proxy.ymlAdds cobalt.proxy.env to the Cobalt service
cobalt.proxy.env.exampleProxy env template
cobalt.proxy.envYour local, ignored secrets file

Configuration

The summarize app talks to Cobalt through the --cobalt-url flag or the COBALT_BASE_URL environment variable:

$python -m summarizer --source "URL" --cobalt-url "http://localhost:9000"

In Docker, this is set automatically:

1environment:
2 - COBALT_BASE_URL=http://cobalt:9000