DIYgod/RSSHub · warning · Error
No shorts found for this channel. Please make sure the chann
Error message
No shorts found for this channel. Please make sure the channel ID is correct and that the channel contains shorts.
What it means
The Ganjing World shorts route queries the v1.1 content API with content_type=Shorts. If data.list is empty, the channel has no shorts (or is wrong/non-existent), and the route throws rather than emit an empty feed.
Source
Thrown at lib/routes/ganjingworld/channel/shorts.ts:41
{
source: ['ganjingworld.com'],
target: '/channel/shorts/:id',
},
],
url: 'www.ganjingworld.com',
name: 'Shorts in a channel',
maintainers: ['yixiangli2001'],
handler,
};
async function handler(ctx) {
const id = ctx.req.param('id');
const url = `https://www.ganjingworld.com/channel/${id}?tab=shorts`;
const apiUrl = `https://gw.ganjingworld.com/v1.1/content/get-by-channel?channel_id=${id}&content_type=Shorts&page_size=30&query=basic%2Cwatch_count&visibility=public&mode=ready`;
const parsed: ApiResponse = await ofetch<ApiResponse>(apiUrl);
if (parsed.data.list.length === 0) {
throw new Error('No shorts found for this channel. Please make sure the channel ID is correct and that the channel contains shorts.');
}
const title = parsed.data.list[0].channel.name;
const items = parsed.data.list.map((item) => {
const pubDate = new Date(item.time_scheduled);
const videoUrl = item.video_url || (item.media.length > 0 ? item.media[0].url : '');
const posterUrl = item.poster_url || item.image_auto_url || '';
let description = item.description || '';
if (videoUrl) {
description = `<video controls src="${videoUrl}" poster="${posterUrl}" style="max-width: 100%;"></video><br/>${description}`;
}
return {
title: item.title,
link: `https://www.ganjingworld.com/video/${item.id}`,
pubDate,
description,
};View on GitHub (pinned to bed535e087)
Solutions
- Open https://www.ganjingworld.com/channel/{id}?tab=shorts in a browser to confirm shorts exist.
- Verify the id is a channel id (content API uses channel_id).
- Point the user at the articles or posts route if the channel has no shorts.
Example fix
// before
if (parsed.data.list.length === 0) {
throw new Error('No shorts found for this channel. ...');
}
// after
if (parsed.data.list.length === 0) {
throw new InvalidParameterError(`Channel "${id}" has no shorts. Verify the channel ID and try the articles or posts route.`);
} Defensive patterns
Strategy: validation
Validate before calling
const probe = await ofetch(`https://gw.ganjingworld.com/v1.1/content/get-by-channel?channel_id=${id}&content_type=Shorts&page_size=1`);
if (probe.data.list.length === 0) {
throw new InvalidParameterError(`Channel ${id} has no shorts`);
} Type guard
const hasShorts = (res: ApiResponse): boolean => res.data.list.length > 0;
Prevention
- Confirm the channel has a Shorts tab. Use the correct channel id. Point users at articles/posts routes when no shorts exist.
When it happens
Trigger: Querying a channel that only produces News articles or text posts (no Shorts), a non-existent channel id, or a channel whose shorts are not in visibility=public / mode=ready.
Common situations: Using an articles-only channel id for shorts; copying a user id instead of a channel id; all shorts being in draft/non-ready mode.
Related errors
- No articles found for this channel. Please make sure the cha
- No posts found for this channel. Please make sure the channe
- This user has no articles.
- ${tagResponse.msg}
- Invalid tagId
AI-assisted analysis of DIYgod/RSSHub@bed535e087 (2026-08-12).
Data as JSON: /api/errors/02a804cb7f700a9a.
Report an issue: GitHub.