DIYgod/RSSHub · error · ConfigNotFoundError
Instagram RSS is disabled due to the lack of <a href="https:
Error message
Instagram RSS is disabled due to the lack of <a href="https://docs.rsshub.app/deploy/config#route-specific-configurations">relevant config</a>
What it means
Thrown as `ConfigNotFoundError` in the `tags` branch of the web-API handler: the tags feed requires authentication (Instagram hides tag pages behind login), so if `config.instagram.cookie` is not set the route refuses to proceed. Note the `user` branch can fall back to the guest GraphQL edges, but `tags` cannot — hence the explicit guard only in the tags case.
Source
Thrown at lib/routes/instagram/web-api/index.ts:90
// User feed metadata
const biography = userInfo.biography;
const fullName = userInfo.full_name;
const id = userInfo.id;
const username = userInfo.username;
feedTitle = `${fullName} (@${username}) - Instagram`;
feedDescription = biography;
// exists in web api ?? exist in private api ?? exist in both
feedLogo = userInfo.profile_pic_url_hd ?? userInfo.hd_profile_pic_url_info?.url ?? userInfo.profile_pic_url;
feedLink = `${baseUrl}/${username}`;
items = cookie ? await getUserFeedItems(id, username, cookieJar) : [...userInfo.edge_felix_video_timeline.edges, ...userInfo.edge_owner_to_timeline_media.edges];
break;
}
case 'tags': {
if (!config.instagram || !config.instagram.cookie) {
throw new ConfigNotFoundError('Instagram RSS is disabled due to the lack of <a href="https://docs.rsshub.app/deploy/config#route-specific-configurations">relevant config</a>');
}
const tag = key;
feedTitle = `#${tag} - Instagram`;
feedLink = `${baseUrl}/explore/search/keyword/?q=%23${tag}`;
const feedData = await getTagsFeed(tag, cookieJar);
feedLogo = feedData.profile_pic_url;
items = feedData.top.sections.flatMap((section) =>
// either media or clips
(section.feed_type === 'media' ? section.layout_content.medias : [...section.layout_content.one_by_two_item.clips.items, ...section.layout_content.fill_items]).map((item) => item.media)
);
break;
}
default:
break;View on GitHub (pinned to bed535e087)
Solutions
- Set `INSTAGRAM_COOKIE` env var with a valid logged-in session cookie.
- If you cannot supply a cookie, use the `user` route instead (which has an anonymous fallback).
- Verify the cookie still authenticates (see error 284) — a present-but-dead cookie will instead trip the 'Invalid cookie' path.
Example fix
// before: tags requested with no cookie // after: .env INSTAGRAM_COOKIE=csrftoken=...; sessionid=...; ...
Defensive patterns
Strategy: validation
Validate before calling
if (category === 'tags' && !config.instagram?.cookie) {
throw new ConfigNotFoundError('Instagram tags feed requires INSTAGRAM_COOKIE');
} Type guard
const hasCookie = (c?: {cookie?:string}): c is {cookie:string} => Boolean(c && c.cookie); Prevention
- Document that the tags route is cookie-gated while the user route is not.
- Validate cookie presence in the tags branch before any network call.
When it happens
Trigger: Request to `/instagram/tags/:tag` on an instance where `config.instagram.cookie` is unset or empty. Fires at web-api/index.ts:90 after the category check passes.
Common situations: Self-hosted instance configured for the `user` route (which works anonymously) but not for `tags`; cookie env var removed/renamed; public instance without credentials.
Related errors
- Invalid cookie
- Baidu Tieba RSS is disabled due to the lack of <a href="http
- 缺少对应 loginUid 的 Bilibili 用户登录后的 Cookie 值 <a href="https://do
- 对应 loginUid 的 Bilibili 用户的 Cookie 已过期
- 缺少对应论坛的cookie.
AI-assisted analysis of DIYgod/RSSHub@bed535e087 (2026-08-12).
Data as JSON: /api/errors/d417eee5c2b0c199.
Report an issue: GitHub.