DIYgod/RSSHub · error · InvalidParameterError
Monitor ID mismatch, please open an issue.
Error message
Monitor ID mismatch, please open an issue.
What it means
An `InvalidParameterError` at lib/routes/uptimerobot/rss.tsx:111 fired when the monitor ID extracted from the RSS title's capture group 3 does not equal `item.link`. The route assumes UptimeRobot puts the same identifier in both the title parenthetical and the `<link>` element. A format change that decouples them triggers this on every item.
Source
Thrown at lib/routes/uptimerobot/rss.tsx:111
const rssUrl = `${rootURL}/${id}`;
const rss = await new Parser({
customFields: {
item: ['details:duration'],
},
}).parseURL(rssUrl);
const monitors = {};
const items = rss.items.toReversed().map((item) => {
const titleMatch = item.title!.match(titleRegex);
if (!titleMatch) {
throw new InvalidParameterError('Unexpected title, please open an issue.');
}
const [monitorName, status, id] = titleMatch.slice(1);
if (id !== item.link) {
throw new InvalidParameterError('Monitor ID mismatch, please open an issue.');
}
// id could be a URL, a domain, an IP address, or a hex string. fix it
let link;
try {
link = !id.startsWith('http') && id.includes('.') ? new URL(`http://${id}`).href : new URL(id).href;
} catch {
// ignore
}
const duration = item['details:duration'];
const monitor = (monitors[monitorName] ||= new Monitor(monitorName));
if (status === 'UP') {
monitor.up(duration);
} else if (status === 'DOWN') {
monitor.down(duration);
} else {View on GitHub (pinned to bed535e087)
Solutions
- Inspect a live RSS feed to compare the title parenthetical value with `<link>` for each item.
- If the mismatch is intentional, relax or remove the strict equality check at line 110–112 and derive `link` from whichever field is more reliable.
- Report the format change to the route maintainer (Rongronggg9) with a sample feed.
Defensive patterns
Strategy: validation
Type guard
const titleIdMatchesLink = (titleId: string, link: string): boolean =>
titleId === link; Try / catch
try {
const items = parseUptimeRobotRss(rss);
} catch (e) {
if (e instanceof InvalidParameterError && e.message.includes('Monitor ID mismatch')) {
// title ID and link diverged — inspect raw feed to understand the new format
console.error('UptimeRobot RSS title/link ID mismatch; format changed');
}
throw e;
} Prevention
- If UptimeRobot decouples title display names from link IDs, relax the strict equality to a startsWith or contains check.
- Monitor the raw RSS feed for structural changes alongside error 788.
- Report the format change to the route maintainer with a sample item.
When it happens
Trigger: UptimeRobot changes the title to show a display name in parentheses while `<link>` holds the raw monitor ID; the `:id` feed is from a new UptimeRobot product tier with a different link scheme; URL-encoding differences between title and link.
Common situations: UptimeRobot RSS format update; monitor configured with a friendly alias that appears in the title but not the link.
Related errors
- Unexpected status, please open an issue.
- Unexpected title, please open an issue.
- 文章列表不存在或为空
- Invalid category: ${category}
- TechFlow API returned an invalid article list.
AI-assisted analysis of DIYgod/RSSHub@bed535e087 (2026-08-12).
Data as JSON: /api/errors/2ff32de63e6ee36c.
Report an issue: GitHub.