DIYgod/RSSHub · error · Error

Failed to find article content.

Error message

Failed to find article content.

What it means

Thrown when the Cheerio selector `.article-content` returns zero elements on the OpenAI help page for ChatGPT Atlas release notes. The handler fetches `https://help.openai.com/en/articles/12591856-chatgpt-atlas-release-notes`, loads it with Cheerio, and expects an element with class `article-content` to exist. Its absence means the page structure changed or the page did not load correctly.

Source

Thrown at lib/routes/openai/chatgpt-atlas.ts:37

        supportScihub: false,
    },
    name: 'ChatGPT Atlas - Release Notes',
    maintainers: ['xbot'],
    handler,
};

async function handler() {
    const articleUrl = 'https://help.openai.com/en/articles/12591856-chatgpt-atlas-release-notes';

    const cacheIn = await cache.tryGet(
        articleUrl,
        async () => {
            const response = await ofetch(articleUrl);
            const $ = load(response);
            const articleContent = $('.article-content');

            if (articleContent.length === 0) {
                throw new Error('Failed to find article content.');
            }

            const feedTitle = $('h1').first().text();
            const feedDesc = 'ChatGPT Atlas Release Notes';

            const items = $('h1', articleContent)
                .toArray()
                .map((element) => {
                    const $h1 = $(element);
                    const text = $h1.text().trim();

                    const dateMatch = text.match(/(\w+\s+\d+[stndrh]*,\s+\d{4})/i);
                    let pubDate: Date | undefined;
                    if (dateMatch) {
                        const dateStr = dateMatch[1];
                        const parsedDate = dayjs(dateStr, ['MMMM Do, YYYY', 'MMMM D, YYYY'], 'en');
                        if (parsedDate.isValid()) {
                            pubDate = parsedDate.toDate();

View on GitHub (pinned to bed535e087)

Solutions

  1. Open `https://help.openai.com/en/articles/12591856-chatgpt-atlas-release-notes` and inspect the page source for the current content container class.
  2. Update the selector on line 33 of `lib/routes/openai/chatgpt-atlas.ts` to match the new class name.
  3. If the page is now client-rendered, switch to Puppeteer or find the underlying API endpoint.
  4. Verify the article URL is still valid and not redirected.

Example fix

// before
const articleContent = $('.article-content');
if (articleContent.length === 0) {
    throw new Error('Failed to find article content.');
}

// after — try multiple known selectors
const articleContent = $('.article-content').length ? $('.article-content') : $('article');
if (articleContent.length === 0) {
    throw new Error('Failed to find article content.');
}
Defensive patterns

Strategy: try-catch

Validate before calling

// Pre-check: verify the article page contains expected content markers
const response = await ofetch(articleUrl);
if (!response.includes('article-content') && !response.includes('<article')) {
    throw new Error('OpenAI help page structure may have changed');
}

Try / catch

try {
    const response = await ofetch(articleUrl);
    const $ = load(response);
    const articleContent = $('.article-content');
    if (articleContent.length === 0) {
        throw new Error('Failed to find article content.');
    }
} catch (e) {
    logger.error('OpenAI Atlas help page could not be parsed: HTML structure may have changed');
    throw e;
}

Prevention

When it happens

Trigger: The OpenAI help center changed its HTML template (removing or renaming the `article-content` class). The page returned a JS-rendered SPA shell with no server-side content. The article URL was changed or the article was taken down. A CDN error page was served instead.

Common situations: OpenAI redesigned their help center. The article ID `12591856` was changed. The help center now requires JavaScript rendering (client-side hydration) that Cheerio cannot execute.

Related errors


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