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 });