/ clis / notebooklm / summary.js
summary.js
 1  import { cli, Strategy } from '@jackwener/opencli/registry';
 2  import { EmptyResultError } from '@jackwener/opencli/errors';
 3  import { NOTEBOOKLM_DOMAIN, NOTEBOOKLM_SITE } from './shared.js';
 4  import { getNotebooklmPageState, getNotebooklmSummaryViaRpc, readNotebooklmSummaryFromPage, requireNotebooklmSession, } from './utils.js';
 5  cli({
 6      site: NOTEBOOKLM_SITE,
 7      name: 'summary',
 8      description: 'Get the summary block from the currently opened NotebookLM notebook',
 9      domain: NOTEBOOKLM_DOMAIN,
10      strategy: Strategy.COOKIE,
11      browser: true,
12      navigateBefore: false,
13      args: [],
14      columns: ['title', 'summary', 'source', 'url'],
15      func: async (page) => {
16          await requireNotebooklmSession(page);
17          const state = await getNotebooklmPageState(page);
18          if (state.kind !== 'notebook') {
19              throw new EmptyResultError('opencli notebooklm summary', 'No NotebookLM notebook is open in the automation workspace. Run `opencli notebooklm open <notebook>` first.');
20          }
21          const domSummary = await readNotebooklmSummaryFromPage(page);
22          if (domSummary)
23              return [domSummary];
24          const rpcSummary = await getNotebooklmSummaryViaRpc(page).catch(() => null);
25          if (rpcSummary)
26              return [rpcSummary];
27          throw new EmptyResultError('opencli notebooklm summary', 'NotebookLM summary was not found on the current page.');
28      },
29  });