{
  "name": "youtube",
  "kind": "registry",
  "title": "YouTube",
  "description": "Search YouTube from the panel, with thumbnails, channels, lengths and views, and trending when nothing is typed. Open a video in the browser, play it in IINA, mpv or VLC, or save it to Watch Later; works with a free API key or an Invidious instance.",
  "version": "0.1.0",
  "icon": {
    "tile": {
      "svg": "M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z",
      "box": 24,
      "bg": "#FF0000"
    }
  },
  "author": "pal",
  "spec": "github:zcag/pal/extensions/youtube@v0.9.1",
  "source": "https://github.com/zcag/pal/tree/HEAD/extensions/youtube",
  "commit": "63287e180ce349dac3aa87c68ce4c80bc42ad409",
  "manifest": {
    "name": "youtube",
    "title": "YouTube",
    "description": "Search YouTube from the panel, with thumbnails, channels, lengths and views, and trending when nothing is typed. Open a video in the browser, play it in IINA, mpv or VLC, or save it to Watch Later; works with a free API key or an Invidious instance.",
    "version": "0.1.0",
    "icon": {
      "tile": {
        "svg": "M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z",
        "box": 24,
        "bg": "#FF0000"
      }
    },
    "author": "pal",
    "repo": "bundled",
    "license": "MIT",
    "settings": [
      {
        "kind": "secret",
        "id": "api_key",
        "required": true,
        "only": {
          "invidious_url": ""
        },
        "label": "Data API key",
        "description": "A Google Cloud API key with YouTube Data API v3 enabled on its project (console.cloud.google.com › APIs \u0026 Services › Enable APIs › YouTube Data API v3 › Credentials). Free; the daily quota of 10,000 units is about 100 searches. Wins over the Invidious instance when both are set.",
        "placeholder": "AIza…",
        "default": ""
      },
      {
        "kind": "text",
        "id": "invidious_url",
        "label": "Invidious instance",
        "description": "Searched without a key through `/api/v1`. Most public instances have turned the API off (only invidious.f5.si answered on 2026-09-17); a self-hosted one is the reliable choice.",
        "placeholder": "https://invidious.example.org",
        "default": ""
      },
      {
        "kind": "select",
        "id": "player",
        "label": "Player",
        "description": "What cmd+Enter plays the video in. Auto takes IINA, then mpv, then VLC, whichever is installed, else the browser. mpv and VLC need yt-dlp for YouTube.",
        "options": [
          {
            "id": "auto",
            "title": "Auto (IINA, mpv, VLC, else the browser)"
          },
          {
            "id": "iina",
            "title": "IINA"
          },
          {
            "id": "mpv",
            "title": "mpv"
          },
          {
            "id": "vlc",
            "title": "VLC"
          },
          {
            "id": "browser",
            "title": "The browser"
          }
        ],
        "default": "auto"
      },
      {
        "kind": "text",
        "id": "region",
        "label": "Region",
        "description": "A two-letter country code for the trending list; empty is YouTube's default.",
        "placeholder": "TR",
        "default": ""
      }
    ],
    "store": {
      "tagline": "Search YouTube, then open, play or save for later",
      "category": "media",
      "features": [
        "Videos with thumbnail, channel, length, views and age; trending while nothing is typed",
        "`enter` opens in the browser, `cmd+enter` plays in IINA, mpv or VLC, `cmd+c` copies the link",
        "Watch Later (`cmd+s`), its videos found by title at the root",
        "Channels by name, with their latest videos",
        "A free YouTube Data API key, or an Invidious instance without one",
        "`yt: lofi` at the root answers inline"
      ],
      "permissions": [
        "network"
      ],
      "platforms": [
        "macos",
        "linux"
      ],
      "screenshots": [
        {
          "file": "1-search.png",
          "caption": "A search for lofi: each video with its channel, length, views and age, and the detail pane with the thumbnail"
        },
        {
          "file": "2-trending.png",
          "caption": "With nothing typed, the videos trending in your region"
        },
        {
          "file": "3-actions.png",
          "caption": "Open it, play it in your own player, copy the link, keep it for later or go to the channel"
        },
        {
          "file": "4-channels.png",
          "caption": "Channels by name, each with its avatar and what it is about; Enter lists a channel's latest videos"
        },
        {
          "file": "5-later.png",
          "caption": "Watch Later: the videos cmd+S kept, on this Mac and no account needed"
        },
        {
          "file": "6-no-key.png",
          "caption": "Before it is set up: the one setting to fill, a free API key or an Invidious instance"
        }
      ],
      "actions": [
        {
          "title": "Open in browser",
          "keys": "enter"
        },
        {
          "title": "Play in player",
          "description": "IINA, mpv or VLC per the `player` setting; the browser when none is installed.",
          "keys": "cmd+enter"
        },
        {
          "title": "Copy URL",
          "keys": "cmd+c"
        },
        {
          "title": "Watch later",
          "keys": "cmd+s"
        },
        {
          "title": "Open the channel",
          "keys": "cmd+shift+o"
        },
        {
          "title": "Latest videos",
          "description": "On a channel row: its videos, newest first.",
          "keys": "enter"
        },
        {
          "title": "Remove from Watch Later",
          "keys": "cmd+d"
        }
      ]
    },
    "palettes": {
      "search": {
        "title": "YouTube",
        "kind": "input",
        "inline": true,
        "match": "^\\s*yt\\s*:\\s*\\S",
        "fallback": "Search YouTube for “{query}”",
        "description": "Type to search videos; nothing typed lists what is trending. `yt:` at the root answers inline.",
        "keys": [
          {
            "keys": "enter",
            "title": "Open in the browser"
          },
          {
            "keys": "cmd+enter",
            "title": "Play in IINA, mpv or VLC"
          },
          {
            "keys": "cmd+c",
            "title": "Copy the url"
          },
          {
            "keys": "cmd+s",
            "title": "Watch later"
          },
          {
            "keys": "cmd+shift+o",
            "title": "Open the channel"
          }
        ]
      },
      "channels": {
        "title": "YouTube Channels",
        "kind": "input",
        "description": "Channels by name; Enter lists the channel's latest videos. Subscriptions need OAuth and are not listed.",
        "keys": [
          {
            "keys": "enter",
            "title": "Latest videos"
          },
          {
            "keys": "cmd+enter",
            "title": "Open the channel"
          },
          {
            "keys": "cmd+c",
            "title": "Copy the url"
          }
        ]
      },
      "later": {
        "title": "Watch Later",
        "kind": "live",
        "description": "Videos kept with cmd+s, newest first; the same actions, and cmd+d removes one.",
        "keys": [
          {
            "keys": "enter",
            "title": "Open in the browser"
          },
          {
            "keys": "cmd+enter",
            "title": "Play in the player"
          },
          {
            "keys": "cmd+d",
            "title": "Remove"
          }
        ]
      }
    }
  },
  "playable": false,
  "updated_at": "2026-09-30T01:45:08Z",
  "url": "https://pal.cagdas.io/extensions/youtube",
  "tagline": "Search YouTube, then open, play or save for later",
  "category": "media",
  "screenshots": [
    "https://pal.cagdas.io/extensions/youtube/screenshots/1-search-dark.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/1-search.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/2-trending-dark.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/2-trending.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/3-actions-dark.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/3-actions.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/4-channels-dark.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/4-channels.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/5-later-dark.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/5-later.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/6-no-key-dark.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/6-no-key.png"
  ],
  "panel_screenshots": [
    "https://pal.cagdas.io/extensions/youtube/screenshots/1-search.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/2-trending.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/3-actions.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/4-channels.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/5-later.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/6-no-key.png"
  ],
  "bar_screenshots": [],
  "panel_screenshots_dark": [
    "https://pal.cagdas.io/extensions/youtube/screenshots/1-search-dark.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/2-trending-dark.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/3-actions-dark.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/4-channels-dark.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/5-later-dark.png",
    "https://pal.cagdas.io/extensions/youtube/screenshots/6-no-key-dark.png"
  ],
  "bar_screenshots_dark": [],
  "has_bar": false,
  "bar_items": [],
  "has_links": false,
  "links": [],
  "multi": false,
  "has_readme": true
}
