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
- Open `https://help.openai.com/en/articles/12591856-chatgpt-atlas-release-notes` and inspect the page source for the current content container class.
- Update the selector on line 33 of `lib/routes/openai/chatgpt-atlas.ts` to match the new class name.
- If the page is now client-rendered, switch to Puppeteer or find the underlying API endpoint.
- 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
- Use multiple fallback selectors instead of relying on a single class name.
- Monitor the OpenAI help center for template changes.
- Cache successful parses to reduce the impact of transient page structure issues.
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
- Failed to find article content.
- Unable to locate Obsidian community search API config
- api error
- No content found. The page structure might have changed.
- Unknown handled type: ${element.type}, ${JSON.stringify(elem
AI-assisted analysis of DIYgod/RSSHub@bed535e087 (2026-08-12).
Data as JSON: /api/errors/7f4535b92b9c0d84.
Report an issue: GitHub.