jackwener/OpenCLI · error · EmptyResultError

NotebookLM guide was not available for source "${matched.tit

Error message

NotebookLM guide was not available for source "${matched.title}".

What it means

opencli notebooklm source-guide throws this EmptyResultError when the source row matched, but getNotebooklmSourceGuideViaRpc returned null (it failed or produced no guide, after .catch(() => null)). NotebookLM may not have generated an Audio Overview/FAQ-style guide for that source, or the guide RPC was unavailable.

Source

Thrown at clis/notebooklm/source-guide.js:42

        await requireNotebooklmSession(page);
        const state = await getNotebooklmPageState(page);
        if (state.kind !== 'notebook') {
            throw new EmptyResultError('opencli notebooklm source-guide', 'No NotebookLM notebook is open in the adapter session. Run `opencli notebooklm open <notebook>` first.');
        }
        const rpcRows = await listNotebooklmSourcesViaRpc(page).catch(() => []);
        const rows = rpcRows.length > 0 ? rpcRows : await listNotebooklmSourcesFromPage(page);
        if (rows.length === 0) {
            throw new EmptyResultError('opencli notebooklm source-guide', 'No NotebookLM sources were found on the current page.');
        }
        const query = typeof kwargs.source === 'string' ? kwargs.source : String(kwargs.source ?? '');
        const matched = findNotebooklmSourceRow(rows, query);
        if (!matched) {
            throw new EmptyResultError('opencli notebooklm source-guide', `Source "${query}" was not found in the current notebook.`);
        }
        const guide = await getNotebooklmSourceGuideViaRpc(page, matched).catch(() => null);
        if (guide)
            return [guide];
        throw new EmptyResultError('opencli notebooklm source-guide', `NotebookLM guide was not available for source "${matched.title}".`);
    },
});

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Retry the command after a short delay to let NotebookLM generate the guide or clear a transient RPC failure.
  2. Confirm the source opens correctly in the NotebookLM web UI and that a guide exists there.
  3. Reopen the notebook (`opencli notebooklm open <notebook>`) to refresh the session, then retry; if persistent, update opencli for NotebookLM changes.

Example fix

// before
opencli notebooklm source-guide --source "New Doc"   # guide not yet generated
// after
sleep 30 && opencli notebooklm open "Product Docs" && opencli notebooklm source-guide --source "New Doc"
Defensive patterns

Strategy: retry

Validate before calling

const guide = await exec(`opencli notebooklm source-guide --source ${JSON.stringify(title)} --json`).catch(() => null);
if (!guide) console.warn('Guide unavailable yet; will retry after generation delay');

Type guard

function hasGuide(guide) {
  return guide != null && typeof guide === 'object' && (typeof guide.summary === 'string' || Array.isArray(guide.faq));
}

Try / catch

let guide = null;
for (let attempt = 0; attempt < 3 && !guide; attempt++) {
  try {
    guide = await run('opencli notebooklm source-guide', ['--source', title]);
  } catch (err) {
    if (/guide was not available/.test(err.message) && attempt < 2) {
      await delay(15000 * (attempt + 1));
      continue;
    }
    throw err;
  }
}

Prevention

When it happens

Trigger: Guide for the matched source was never generated by NotebookLM, the guide RPC call failed (network/auth/server error swallowed by the catch), or NotebookLM's guide data shape changed so parsing returned nothing.

Common situations: Very recently added source whose guide hasn't been computed yet; transient Google-side RPC failure; adapter outdated after a NotebookLM protocol change; account lacks access to the guide feature.

Related errors


AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29). Data as JSON: /api/errors/03f2235e524a06d9. Report an issue: GitHub.