DIYgod/RSSHub · error · ConfigNotFoundError

GitHub trending RSS is disabled due to the lack of <a href="

Error message

GitHub trending 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

The GitHub trending route scrapes github.com/trending and requires an authenticated request, so it demands `config.github.access_token`. If `config.github` is absent or has no access_token the handler throws ConfigNotFoundError with an HTML link to the deploy config docs. This is a deployment-configuration failure, not user input.

Source

Thrown at lib/routes/github/trending.tsx:69

        supportBT: false,
        supportPodcast: false,
        supportScihub: false,
    },
    radar: [
        {
            source: ['github.com/trending'],
            target: '/trending/:since',
        },
    ],
    name: 'Trending',
    maintainers: ['DIYgod', 'jameschensmith'],
    handler,
    url: 'github.com/trending',
};

async function handler(ctx) {
    if (!config.github || !config.github.access_token) {
        throw new ConfigNotFoundError('GitHub trending RSS is disabled due to the lack of <a href="https://docs.rsshub.app/deploy/config#route-specific-configurations">relevant config</a>');
    }
    const since = ctx.req.param('since');
    const language = ctx.req.param('language') === 'any' ? '' : ctx.req.param('language');
    const spoken_language = ctx.req.param('spoken_language') ?? '';

    const trendingUrl = `https://github.com/trending/${encodeURIComponent(language)}?since=${since}&spoken_language_code=${spoken_language}`;
    const { data: trendingPage } = await got({
        method: 'get',
        url: trendingUrl,
        headers: {
            Referer: trendingUrl,
        },
    });
    const $ = load(trendingPage);

    const articles = $('article');
    const trendingRepos = articles.toArray().map((item) => {
        const [owner, name] = $(item).find('h2').text().split('/', 2);

View on GitHub (pinned to bed535e087)

Solutions

  1. Set config.github.access_token (env: GITHUB_ACCESS_TOKEN) with a valid personal access token and restart RSSHub.
  2. If you cannot supply a token, use a different GitHub route that does not require auth.
  3. Refer to the linked deploy config docs for the exact env var name.
Defensive patterns

Strategy: validation

Validate before calling

import { config } from '@/config';
function githubTrendingConfigured(): boolean {
  return Boolean(config.github?.access_token);
}

Type guard

function githubTrendingConfigured(): boolean {
  return Boolean(config.github?.access_token);
}

Prevention

When it happens

Trigger: Self-hosting RSSHub without setting GITHUB_ACCESS_TOKEN; a public instance where the operator did not configure the GitHub block.

Common situations: Fresh deploy missing the GitHub credentials env var; the token was revoked or expired (though the check is for presence, not validity).

Related errors


AI-assisted analysis of DIYgod/RSSHub@bed535e087 (2026-08-12). Data as JSON: /api/errors/28db36c72240e651. Report an issue: GitHub.