jackwener/OpenCLI · error · CommandExecutionError
NotebookLM home-link probe returned malformed Browser Bridge
Error message
NotebookLM home-link probe returned malformed Browser Bridge data
What it means
The home-link probe asks Browser Bridge for the list of notebook links on the NotebookLM home page. The result must be an array; anything else (null, object, string) means the injected script did not produce the expected rows payload, so the CLI throws this CommandExecutionError rather than iterating over bad data.
Source
Thrown at clis/notebooklm/utils.js:794
subtitleTitleNode?.getAttribute?.('title') ||
subtitleTextNode?.textContent ||
''
).trim();
rows.push({
id,
title,
url: href,
source: 'home-links',
is_owner: true,
created_at: createdAtHint || null,
});
}
return rows;
})()`, 'home-link probe');
if (!Array.isArray(raw))
throw new CommandExecutionError('NotebookLM home-link probe returned malformed Browser Bridge data');
return raw.map((row) => {
if (!isPlainObject(row) || typeof row.id !== 'string' || typeof row.title !== 'string' || typeof row.url !== 'string' || (row.created_at !== null && row.created_at !== undefined && typeof row.created_at !== 'string') || (row.is_owner !== undefined && typeof row.is_owner !== 'boolean')) {
throw new CommandExecutionError('NotebookLM home-link probe returned a malformed row');
}
const url = normalizeNotebooklmNotebookUrl(row.url, row.id);
if (!url) {
throw new CommandExecutionError('NotebookLM home-link probe returned an untrusted or mismatched notebook URL');
}
return {
id: row.id,
title: normalizeNotebooklmTitle(row.title, 'Untitled Notebook'),
url,
source: 'home-links',
is_owner: row.is_owner === false ? false : true,
created_at: normalizeNotebooklmCreatedAt(row.created_at),
};
});
}View on GitHub (pinned to 49907e53dc)
Solutions
- Open the NotebookLM home page (https://notebooklm.google.com/) in the active Chrome tab and retry.
- Reload the page so the notebook list has rendered before probing.
- Check the Browser Bridge extension is installed, enabled, and connected.
- Update the CLI if NotebookLM recently changed its home-page markup.
Example fix
// before: assuming an array
const rows = await probeHomeLinks();
rows.forEach(render);
// after: guard
let rows = [];
try {
rows = await probeHomeLinks();
} catch (e) {
if (!String(e.message).includes('malformed Browser Bridge data')) throw e;
console.error('Navigate to the NotebookLM home page and retry.');
} Defensive patterns
Strategy: try-catch
Validate before calling
if (!currentTabUrl || !currentTabUrl.startsWith('https://notebooklm.google.com/')) {
throw new Error('Open the NotebookLM home page before listing notebooks.');
} Type guard
const isRowArray = (v) => Array.isArray(v);
Try / catch
let notebooks = [];
try {
notebooks = await probeHomeLinks();
} catch (e) {
if (String(e.message).includes('malformed Browser Bridge data')) {
console.error('Open https://notebooklm.google.com/ in Chrome and retry.');
} else { throw e; }
} Prevention
- Run list commands only while the NotebookLM home page is open and rendered.
- Keep the Browser Bridge extension healthy; re-check after Chrome restarts.
- Update the CLI when NotebookLM ships UI changes.
- Add a small retry with backoff around probes.
When it happens
Trigger: The evaluated home-link script returns a non-array — typically because the page is not the NotebookLM home page, the link-collection query matched nothing and the wrapper returned a non-array value, or the bridge evaluation failed and returned an error object.
Common situations: Running the list command while the browser shows a notebook detail page instead of home, a NotebookLM redesign changing the home link markup, or the bridge returning undefined when no tabs match.
Understand the failure class
- Parsing and encoding errors: unexpected token, malformed input — why parsers reject input and how to find the real culprit.
Related errors
- NotebookLM current-page probe returned malformed Browser Bri
- NotebookLM home-link probe returned a malformed row
- Unexpected NotebookLM probe: ${JSON.stringify(probe)}
- NotebookLM ${label} returned a malformed Browser Bridge payl
- NotebookLM ${label} failed: ${error?.message || error}
AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29).
Data as JSON: /api/errors/107526a8609a8dc0.
Report an issue: GitHub.