Skip to content
Β 
Β 

Latest commit

Β 

History

653 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


πŸ“Ί YouTubio: Stremio YouTube Addon

A Stremio addon that lets you watch YouTube videos and access your subscriptions, watch later list, and history directly inside Stremio.


✨ Features

  • Watch YouTube Content in Stremio – Browse and watch your favorite YouTube videos without leaving the Stremio app.
  • Personalized Feeds – Access your Subscriptions, Watch Later list, and viewing history.
  • Powerful Search – Search for YouTube videos and channels directly within Stremio.
  • Customizable Catalogs – Use default catalogs or add your own custom playlists.
  • Ad- and Click-Bait-Free - Use SponsorBlock (with configurable Gemini fallback support) and/or DeArrow across all of YouTube.
  • Secure Configuration – User data (including cookies) is encrypted for security.
  • Easy Deployment – Deploy with Docker, Node.js, or ngrok.

⏱️ Quick Setup with Cookies

For more detailed instructions or other platforms, go to the YT-DLP cookie extraction guide

  1. Install the Addon Get cookies.txt LOCALLY in a Chromium browser (or cookies.txt for Firefox)
    Click the `Get` Button
    Click the `Add Extension` Button

  2. Allow the extension in Private Windows
    Open the `Extensions` Menu in the Toolbar
    Open the `Settings` Menu for the Addon
    Click the `Manage Extension` Button
    Enable Allow in InPrivate
    Enable the Checkbox to `Enable in InPrivate`

  3. Open a Private Window
    Open the `Settings` Menu
    Click to open a `New InPrivate window`

  4. Go to youtube.com and sign in

  5. Extract the cookies.txt
    Open the `Extensions` Menu in the Toolbar
    Select the Addon
    Click the `Copy` Button

  6. Close the Window
    Close the Window

  7. In your Stremio-logged-in browser, go to youtubio.elfhosted.com and Paste the Content in the Textbox
    Paste the `cookies.txt` in the box

  8. Generate and Install the manifest in the way of your choosing
    Scroll to the bottom and click `Generate Install Link` to Generate the Manifest
    Install in the way of your choosing

Important

The manifest URL is a credential-bearing URL when it contains encrypted cookies. Keep it private. After upgrading, generate a new manifest URL; old raw-JSON URLs may not work with playlist URLs.


πŸš€ Deployment

🐳 Docker Deployment

βœ… Prerequisites

  • Docker installed

⚑ Steps

# Build the Docker image
docker build -t youtubio .

🟒 Node.js Deployment

βœ… Prerequisites

  • Node.js 24 installed
  • npm package manager
  • YT-DLP installed

⚑ Steps

# Install dependencies
npm install --omit=dev

# Start the addon
npm start

By default, the addon will be available at: http://localhost:7000

Environment Variables

Copy .env.example to .env and set the values needed by your deployment. npm start loads .env automatically. For Docker, supply the file at runtime: docker run --env-file .env -p 7000:7000 youtubio.

Variable Default Effect
ENCRYPTION_KEY Random per process Base64-encoded 32-byte key used to encrypt and decrypt user cookies and Gemini keys. Required for production so generated configuration URLs survive restarts.
PORT 7000 HTTP listening port.
CACHE_TTL 3600 Cached yt-dlp metadata lifetime and Stremio catalog cache hint, in seconds. TTL remains supported for existing deployments.
REDIS_URL Unset Optional Redis URL for shared yt-dlp metadata caching. A bounded in-process cache is used without Redis or when it is unavailable.
CONFIG_DB_PATH XDG state directory SQLite path for encrypted server-side configurations. Set to /data/youtubio.sqlite and mount /data persistently in Docker/Coolify.
PRIVATE_MODE Unset Set to 1 to require a password before generating protected Stremio addon links. Existing unprotected links stop working.
PRIVATE_MODE_PASSWORD Unset Shared password for private mode (at least 16 characters). Keep it secret and stable; changing it invalidates previously issued access tokens.
SPACE_HOST Unset Public hostname, without https://, shown in the startup configuration URL.
YTDLP_EXTRACTORS all Value passed to yt-dlp's --ies option to restrict enabled extractors.
DEV_LOGGING Unset Enables Fastify debug logs, error logging, and main-branch icon assets.
NO_DEARROW Unset Disables DeArrow titles and thumbnails and hides its configuration option.
NO_SPONSORBLOCK Unset Disables SponsorBlock and Gemini fallback and hides their configuration options.
EMBED Unset Trusted HTML inserted into the configuration page. Do not set from untrusted input.
YTDLP_EXTRACTORS_EMBED Unset Trusted HTML inserted into the supported-extractors section. Do not set from untrusted input.

Search catalogs return 20 results per page using Stremio's skip parameter. Search results use fixed cache lifetimes: 20 minutes for video searches and 5 days for channel searches. Other cacheable metadata uses TTL. The in-process cache holds up to 100 entries or 32 MiB per instance and is cleared on restart.

Private mode issues a separate access token on each successful password entry. Stremio cannot supply a password on every request, so generated addon URLs carry that token and should be treated as credentials. Installed links do not expire; the configuration page can revoke all links issued from one password entry. Changing PRIVATE_MODE_PASSWORD also invalidates existing tokens. Use HTTPS and preserve the SQLite database, ENCRYPTION_KEY, and private-mode password when moving between servers. Direct media URLs returned by yt-dlp may still be accessible at their original providers; private mode protects this addon's endpoints. Public YouTube searches run without cookies, so expired Google sessions do not prevent searching; account-only feeds still require valid cookies.

For DEV_LOGGING, NO_DEARROW, and NO_SPONSORBLOCK, any non-empty value enables the option.

βš™οΈ ngrok Deployment

βœ… Prerequisites

  • Node.js 24 installed
  • npm package manager
  • YT-DLP installed
  • ngrok account

⚑ Steps

# Install dependencies
npm install

# Start the addon
npm run local

By default, the addon will be available at: http://localhost:7000

Example YouTube Search Catalog

Playlist ID / URL: https://www.youtube.com/results?search_query={term}{sort}

Name: Search

Sort Order (Sort Name: Sort ID):

Note

By including the &sp= in the ID, we can ensure the catalog works without sorting parameters as well.

  • Video Relevance: &sp=CAASAhAB
  • Video Upload Date: &sp=CAISAhAB
  • Video View Count: &sp=CAMSAhAB
  • Video Rating: &sp=CAESAhAB
  • Channel Relevance: &sp=CAASAhAC
  • Channel Upload Date: &sp=CAISAhAC
  • Channel View Count: &sp=CAMSAhAC
  • Channel Rating: &sp=CAESAhAC

About

A Stremio addon for watching YouTube videos, subscriptions, Watch Later, and history.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages