Skip to content

[Bug] YouTube routes return 503 - LockupView format incompatibility in youtubei.ts #22661

Description

@silvermissile

Routes

/youtube/user/:username/:routeParams?
/youtube/channel/:id/:routeParams?

Full routes

/youtube/user/@JFlaMusic
/youtube/user/@bellafinance
/youtube/channel/UCDwDMPOZfxVV0x_dz0eQ8KQ

Related documentation

https://docs.rsshub.app/routes/social-media#youtube-channel-with-username

What is expected?

YouTube user and channel routes should return valid RSS feeds containing video items when using the youtubei.js fallback (without YOUTUBE_KEY).

What is actually happening?

All YouTube user/channel routes return HTTP 503 with error: "this route is empty".

Root Cause: YouTube's internal API now returns LockupView objects from channel.getVideos() instead of Video/GridVideo. The code at lib/routes/youtube/api/youtubei.ts filters with .filter((video) => 'video_id' in video), which filters out all videos because LockupView uses content_id instead.

Property Legacy (Video/GridVideo) New (LockupView)
Video ID video.video_id video.content_id
Title video.title.text video.metadata.title.text
Thumbnail video.best_thumbnail.url video.content_image.image[0].url
Publish date video.published.text metadata.metadata.metadata_rows[].text.text (matching /ago$/i)
Duration video.duration.seconds Parsed from content_image.overlays[].badges[].text (e.g. "3:22")

Deployment information

Self-hosted

Deployment information (for self-hosted)

OS: Ubuntu 24.04 (Alibaba Cloud HK ACK), Node: v24.18.0, Docker: diygod/rsshub:latest (commit 6d77bd8, 2026-07-09), youtubei.js: 17.2.0

Additional info

# Verified from inside the running container:
$ node -e "
const { Innertube } = require(youtubei.js);
(async () => {
  const yt = await Innertube.create();
  const ch = await yt.getChannel(UClkRzsdvg7_RKVhwDwiDZOA);
  const vids = await ch.getVideos();
  console.log(type:, vids.videos[0]?.type);           // LockupView
  console.log(content_id:, vids.videos[0]?.content_id); // iFDpCiaaY2Q
  console.log(video_id:, vids.videos[0]?.video_id);     // undefined
})();
"
type: LockupView
content_id: iFDpCiaaY2Q
video_id: undefined

Related closed issues: #22166, #21961 (both auto-closed without fix)

  • I have searched existing issues to ensure this bug has not already been reported

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions