10x-chat 0.3.2 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -3
- package/dist/bin/cli.js +2 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/notebooklm.d.ts +3 -0
- package/dist/cli/notebooklm.d.ts.map +1 -0
- package/dist/cli/notebooklm.js +144 -0
- package/dist/cli/notebooklm.js.map +1 -0
- package/dist/notebooklm/auth.d.ts.map +1 -1
- package/dist/notebooklm/auth.js +19 -3
- package/dist/notebooklm/auth.js.map +1 -1
- package/package.json +1 -1
- package/skills/10x-chat/SKILL.md +13 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 10x-chat
|
|
2
2
|
|
|
3
|
-
> Chat with web AI agents (ChatGPT, Gemini, Claude, Grok) from your terminal via browser automation.
|
|
3
|
+
> Chat with web AI agents (ChatGPT, Gemini, Claude, Grok, NotebookLM) from your terminal via browser automation.
|
|
4
4
|
|
|
5
5
|
10x-chat uses [Playwright](https://playwright.dev) to automate browser sessions with persisted login profiles. Login once, then send prompts — bundled with file context — from your CLI or AI coding agent.
|
|
6
6
|
|
|
@@ -41,6 +41,7 @@ npx 10x-chat@latest login chatgpt # Login to ChatGPT
|
|
|
41
41
|
npx 10x-chat@latest login gemini # Login to Gemini
|
|
42
42
|
npx 10x-chat@latest login claude # Login to Claude
|
|
43
43
|
npx 10x-chat@latest login grok # Login to Grok
|
|
44
|
+
npx 10x-chat@latest login notebooklm # Login to NotebookLM
|
|
44
45
|
npx 10x-chat@latest login --status # Check login status for all providers
|
|
45
46
|
```
|
|
46
47
|
|
|
@@ -59,7 +60,7 @@ npx 10x-chat@latest chat -p "Long task" --timeout 600000 --headed # 10min timeo
|
|
|
59
60
|
| Flag | Description |
|
|
60
61
|
|------|-------------|
|
|
61
62
|
| `-p, --prompt <text>` | **(required)** The prompt to send |
|
|
62
|
-
| `--provider <name>` | Provider: `chatgpt`, `gemini`, `claude`, `grok` (default: config) |
|
|
63
|
+
| `--provider <name>` | Provider: `chatgpt`, `gemini`, `claude`, `grok`, `notebooklm` (default: config) |
|
|
63
64
|
| `--model <name>` | Model to select in the UI |
|
|
64
65
|
| `-f, --file <paths...>` | Files/globs to bundle as context |
|
|
65
66
|
| `--copy` | Copy bundle to clipboard instead of sending |
|
|
@@ -104,6 +105,25 @@ npx 10x-chat@latest skill install # Install SKILL.md to ~/.codex/skills/
|
|
|
104
105
|
npx 10x-chat@latest skill show # Display SKILL.md content
|
|
105
106
|
```
|
|
106
107
|
|
|
108
|
+
### `notebooklm` (alias: `nb`)
|
|
109
|
+
|
|
110
|
+
Manage NotebookLM notebooks and sources via RPC API.
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
npx 10x-chat@latest notebooklm list # List all notebooks
|
|
114
|
+
npx 10x-chat@latest notebooklm create "Research Topic" # Create a notebook
|
|
115
|
+
npx 10x-chat@latest notebooklm delete <notebookId> # Delete a notebook
|
|
116
|
+
npx 10x-chat@latest notebooklm sources <notebookId> # List sources in notebook
|
|
117
|
+
npx 10x-chat@latest notebooklm add-url <notebookId> <url> # Add URL source
|
|
118
|
+
npx 10x-chat@latest notebooklm add-url <notebookId> <url> --wait # Add URL and wait for processing
|
|
119
|
+
npx 10x-chat@latest notebooklm add-file <notebookId> ./paper.pdf # Upload file source
|
|
120
|
+
npx 10x-chat@latest notebooklm add-text <id> "Title" "Content" # Add pasted text source
|
|
121
|
+
npx 10x-chat@latest notebooklm summarize <notebookId> # AI summary + suggested topics
|
|
122
|
+
|
|
123
|
+
# Then chat with the notebook's sources:
|
|
124
|
+
npx 10x-chat@latest chat -p "Summarize key points" --provider notebooklm
|
|
125
|
+
```
|
|
126
|
+
|
|
107
127
|
## File Bundling
|
|
108
128
|
|
|
109
129
|
The `--file` flag accepts globs. Files are assembled into a markdown bundle sent as the prompt:
|
|
@@ -122,7 +142,8 @@ Security-sensitive files (`.env*`, `*.pem`, `*.key`, etc.) are automatically exc
|
|
|
122
142
|
│ ├── chatgpt/ # Playwright persistent browser profile
|
|
123
143
|
│ ├── gemini/
|
|
124
144
|
│ ├── claude/
|
|
125
|
-
│
|
|
145
|
+
│ ├── grok/
|
|
146
|
+
│ └── notebooklm/ # NotebookLM browser profile (shared Google auth)
|
|
126
147
|
├── sessions/
|
|
127
148
|
│ └── <uuid>/
|
|
128
149
|
│ ├── meta.json # Session metadata
|
|
@@ -149,6 +170,7 @@ This lets agents like Codex or Claude Code use 10x-chat to query other models fo
|
|
|
149
170
|
| Gemini | ✅ | gemini.google.com |
|
|
150
171
|
| Claude | ✅ | claude.ai |
|
|
151
172
|
| Grok | ✅ | grok.com |
|
|
173
|
+
| NotebookLM | ✅ | notebooklm.google.com |
|
|
152
174
|
|
|
153
175
|
## Development
|
|
154
176
|
|
package/dist/bin/cli.js
CHANGED
|
@@ -4,6 +4,7 @@ import { Command } from 'commander';
|
|
|
4
4
|
import { createChatCommand } from '../cli/chat.js';
|
|
5
5
|
import { createConfigCommand } from '../cli/config.js';
|
|
6
6
|
import { createLoginCommand } from '../cli/login.js';
|
|
7
|
+
import { createNotebookLMCommand } from '../cli/notebooklm.js';
|
|
7
8
|
import { createSkillCommand } from '../cli/skill.js';
|
|
8
9
|
import { createSessionCommand, createStatusCommand } from '../cli/status.js';
|
|
9
10
|
const program = new Command();
|
|
@@ -17,6 +18,7 @@ program.addCommand(createStatusCommand());
|
|
|
17
18
|
program.addCommand(createSessionCommand());
|
|
18
19
|
program.addCommand(createConfigCommand());
|
|
19
20
|
program.addCommand(createSkillCommand());
|
|
21
|
+
program.addCommand(createNotebookLMCommand());
|
|
20
22
|
program.parseAsync(process.argv).catch((error) => {
|
|
21
23
|
console.error(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
22
24
|
process.exit(1);
|
package/dist/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,0EAA0E,CAAC;KACvF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,0EAA0E,CAAC;KACvF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAC;AAE9C,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC/C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notebooklm.d.ts","sourceRoot":"","sources":["../../src/cli/notebooklm.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,uBAAuB,IAAI,OAAO,CAoJjD"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { NotebookLMClient } from '../notebooklm/client.js';
|
|
4
|
+
async function withClient(fn) {
|
|
5
|
+
const client = await NotebookLMClient.fromStorage();
|
|
6
|
+
await client.open();
|
|
7
|
+
try {
|
|
8
|
+
return await fn(client);
|
|
9
|
+
}
|
|
10
|
+
finally {
|
|
11
|
+
await client.close();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function createNotebookLMCommand() {
|
|
15
|
+
const cmd = new Command('notebooklm')
|
|
16
|
+
.description('Manage NotebookLM notebooks and sources')
|
|
17
|
+
.alias('nb');
|
|
18
|
+
// ── list ──────────────────────────────────────────────
|
|
19
|
+
cmd
|
|
20
|
+
.command('list')
|
|
21
|
+
.alias('ls')
|
|
22
|
+
.description('List all notebooks')
|
|
23
|
+
.action(async () => {
|
|
24
|
+
await withClient(async (client) => {
|
|
25
|
+
const notebooks = await client.notebooks.list();
|
|
26
|
+
if (notebooks.length === 0) {
|
|
27
|
+
console.log(chalk.dim('No notebooks found.'));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
console.log(chalk.bold(`Notebooks (${notebooks.length})\n`));
|
|
31
|
+
for (const nb of notebooks) {
|
|
32
|
+
const date = nb.createdAt ? chalk.dim(nb.createdAt.toLocaleDateString()) : '';
|
|
33
|
+
console.log(` ${chalk.cyan(nb.id)} ${nb.title || chalk.dim('(untitled)')} ${date}`);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
// ── create ────────────────────────────────────────────
|
|
38
|
+
cmd
|
|
39
|
+
.command('create <title>')
|
|
40
|
+
.description('Create a new notebook')
|
|
41
|
+
.action(async (title) => {
|
|
42
|
+
await withClient(async (client) => {
|
|
43
|
+
const nb = await client.notebooks.create(title);
|
|
44
|
+
console.log(chalk.green(`✓ Created notebook: ${nb.title}`));
|
|
45
|
+
console.log(chalk.dim(` ID: ${nb.id}`));
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
// ── delete ────────────────────────────────────────────
|
|
49
|
+
cmd
|
|
50
|
+
.command('delete <notebookId>')
|
|
51
|
+
.alias('rm')
|
|
52
|
+
.description('Delete a notebook')
|
|
53
|
+
.action(async (notebookId) => {
|
|
54
|
+
await withClient(async (client) => {
|
|
55
|
+
await client.notebooks.delete(notebookId);
|
|
56
|
+
console.log(chalk.green(`✓ Deleted notebook ${notebookId}`));
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
// ── sources ───────────────────────────────────────────
|
|
60
|
+
cmd
|
|
61
|
+
.command('sources <notebookId>')
|
|
62
|
+
.description('List sources in a notebook')
|
|
63
|
+
.action(async (notebookId) => {
|
|
64
|
+
await withClient(async (client) => {
|
|
65
|
+
const sources = await client.sources.list(notebookId);
|
|
66
|
+
if (sources.length === 0) {
|
|
67
|
+
console.log(chalk.dim('No sources found.'));
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
console.log(chalk.bold(`Sources (${sources.length})\n`));
|
|
71
|
+
for (const src of sources) {
|
|
72
|
+
const status = src.isReady
|
|
73
|
+
? chalk.green('ready')
|
|
74
|
+
: src.isProcessing
|
|
75
|
+
? chalk.yellow('processing')
|
|
76
|
+
: chalk.red('error');
|
|
77
|
+
const urlPart = src.url ? chalk.dim(` ${src.url}`) : '';
|
|
78
|
+
console.log(` ${chalk.cyan(src.id)} ${src.title || chalk.dim('(untitled)')} [${src.kind}] ${status}${urlPart}`);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
// ── add-url ───────────────────────────────────────────
|
|
83
|
+
cmd
|
|
84
|
+
.command('add-url <notebookId> <url>')
|
|
85
|
+
.description('Add a URL source to a notebook')
|
|
86
|
+
.option('--wait', 'Wait for source to be processed', false)
|
|
87
|
+
.action(async (notebookId, url, opts) => {
|
|
88
|
+
await withClient(async (client) => {
|
|
89
|
+
console.log(chalk.dim(`Adding URL: ${url}`));
|
|
90
|
+
const source = await client.sources.addUrl(notebookId, url, opts.wait);
|
|
91
|
+
console.log(chalk.green(`✓ Added source: ${source.title || source.id} [${source.kind}]`));
|
|
92
|
+
if (!source.isReady) {
|
|
93
|
+
console.log(chalk.yellow(' Source is still processing. Use --wait to wait for it.'));
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
// ── add-file ──────────────────────────────────────────
|
|
98
|
+
cmd
|
|
99
|
+
.command('add-file <notebookId> <filePath>')
|
|
100
|
+
.description('Upload a file source to a notebook (PDF, DOCX, TXT, etc.)')
|
|
101
|
+
.option('--wait', 'Wait for source to be processed', false)
|
|
102
|
+
.action(async (notebookId, filePath, opts) => {
|
|
103
|
+
await withClient(async (client) => {
|
|
104
|
+
console.log(chalk.dim(`Uploading: ${filePath}`));
|
|
105
|
+
const source = await client.sources.addFile(notebookId, filePath, undefined, opts.wait);
|
|
106
|
+
console.log(chalk.green(`✓ Uploaded source: ${source.title || source.id} [${source.kind}]`));
|
|
107
|
+
if (!source.isReady) {
|
|
108
|
+
console.log(chalk.yellow(' Source is still processing. Use --wait to wait for it.'));
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
// ── add-text ──────────────────────────────────────────
|
|
113
|
+
cmd
|
|
114
|
+
.command('add-text <notebookId> <title> <content>')
|
|
115
|
+
.description('Add pasted text as a source')
|
|
116
|
+
.option('--wait', 'Wait for source to be processed', false)
|
|
117
|
+
.action(async (notebookId, title, content, opts) => {
|
|
118
|
+
await withClient(async (client) => {
|
|
119
|
+
const source = await client.sources.addText(notebookId, title, content, opts.wait);
|
|
120
|
+
console.log(chalk.green(`✓ Added text source: ${source.title || source.id} [${source.kind}]`));
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
// ── summarize ─────────────────────────────────────────
|
|
124
|
+
cmd
|
|
125
|
+
.command('summarize <notebookId>')
|
|
126
|
+
.description('Get AI summary and suggested topics for a notebook')
|
|
127
|
+
.action(async (notebookId) => {
|
|
128
|
+
await withClient(async (client) => {
|
|
129
|
+
const desc = await client.notebooks.getDescription(notebookId);
|
|
130
|
+
if (desc.summary) {
|
|
131
|
+
console.log(chalk.bold('Summary\n'));
|
|
132
|
+
console.log(` ${desc.summary}\n`);
|
|
133
|
+
}
|
|
134
|
+
if (desc.suggestedTopics.length > 0) {
|
|
135
|
+
console.log(chalk.bold('Suggested Topics\n'));
|
|
136
|
+
for (const topic of desc.suggestedTopics) {
|
|
137
|
+
console.log(` ${chalk.cyan('•')} ${topic.question}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
return cmd;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=notebooklm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notebooklm.js","sourceRoot":"","sources":["../../src/cli/notebooklm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/notebooklm/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/notebooklm/auth.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;CACrB;AAsLD,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,sBAAsB,GACnC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyCxB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,CAYvE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,CAY5E;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAuBD,wBAAsB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAUzF;AAED,wBAAsB,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAG9F;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA+B5F;AAED,eAAO,MAAM,UAAU;6BACU,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAW5D,CAAC"}
|
package/dist/notebooklm/auth.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { statSync } from 'node:fs';
|
|
1
2
|
import { readFile } from 'node:fs/promises';
|
|
2
3
|
import path from 'node:path';
|
|
3
4
|
import { chromium } from 'playwright';
|
|
@@ -104,11 +105,26 @@ function isAllowedCookieDomain(domain) {
|
|
|
104
105
|
domain.endsWith('.googleusercontent.com') ||
|
|
105
106
|
domain.endsWith('.usercontent.google.com'));
|
|
106
107
|
}
|
|
107
|
-
function
|
|
108
|
+
function getProfileDir() {
|
|
109
|
+
// Explicit override takes precedence
|
|
110
|
+
if (process.env.NOTEBOOKLM_PROFILE_DIR) {
|
|
111
|
+
return process.env.NOTEBOOKLM_PROFILE_DIR;
|
|
112
|
+
}
|
|
108
113
|
const home = process.env.TEN_X_CHAT_HOME
|
|
109
114
|
? process.env.TEN_X_CHAT_HOME.replace(/^~(?=$|[/])/, process.env.HOME ?? '')
|
|
110
115
|
: path.join(process.env.HOME ?? '', '.10x-chat');
|
|
111
|
-
|
|
116
|
+
// Prefer the notebooklm profile (created by `login notebooklm`),
|
|
117
|
+
// fall back to gemini profile (shared Google auth)
|
|
118
|
+
const notebooklmDir = path.join(home, 'profiles', 'notebooklm');
|
|
119
|
+
const geminiDir = path.join(home, 'profiles', 'gemini');
|
|
120
|
+
try {
|
|
121
|
+
// Check if notebooklm profile has a Default/ directory (Chromium profile created by login)
|
|
122
|
+
statSync(path.join(notebooklmDir, 'Default'));
|
|
123
|
+
return notebooklmDir;
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return geminiDir;
|
|
127
|
+
}
|
|
112
128
|
}
|
|
113
129
|
function isGoogleAuthRedirect(url) {
|
|
114
130
|
try {
|
|
@@ -125,7 +141,7 @@ function containsGoogleAuthRedirect(text) {
|
|
|
125
141
|
return urls.some((value) => isGoogleAuthRedirect(value));
|
|
126
142
|
}
|
|
127
143
|
async function readProfileStorageState(profileDir) {
|
|
128
|
-
const dir = profileDir ??
|
|
144
|
+
const dir = profileDir ?? getProfileDir();
|
|
129
145
|
const storageStatePath = path.join(dir, 'storage_state.json');
|
|
130
146
|
try {
|
|
131
147
|
const raw = await readFile(storageStatePath, 'utf-8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/notebooklm/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAkBjD,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAElD,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,aAAa;IACb,uBAAuB;IACvB,wBAAwB;CACzB,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;CACN,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,MAAc;IACpC,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,OAAO,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACzC,OAAO,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc;IAC3C,IAAI,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC9B,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACzC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/notebooklm/auth.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/skills/10x-chat/SKILL.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: 10x-chat
|
|
3
|
-
description: Chat with web AI agents (ChatGPT, Gemini, Claude, Grok) via browser automation. Use when stuck, need cross-validation, or want a second-model review.
|
|
3
|
+
description: Chat with web AI agents (ChatGPT, Gemini, Claude, Grok, NotebookLM) via browser automation. Use when stuck, need cross-validation, or want a second-model review.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 10x-chat — AI Agent Skill
|
|
7
7
|
|
|
8
|
-
Use 10x-chat to send prompts to web-based AI agents (ChatGPT, Gemini, Claude, Grok) via automated browser sessions. The browser uses a persisted Chrome profile, so the user only needs to login once.
|
|
8
|
+
Use 10x-chat to send prompts to web-based AI agents (ChatGPT, Gemini, Claude, Grok, NotebookLM) via automated browser sessions. The browser uses a persisted Chrome profile, so the user only needs to login once.
|
|
9
9
|
|
|
10
10
|
## When to use
|
|
11
11
|
|
|
@@ -24,6 +24,7 @@ npx 10x-chat@latest login chatgpt
|
|
|
24
24
|
npx 10x-chat@latest login gemini
|
|
25
25
|
npx 10x-chat@latest login claude
|
|
26
26
|
npx 10x-chat@latest login grok
|
|
27
|
+
npx 10x-chat@latest login notebooklm
|
|
27
28
|
|
|
28
29
|
# Chat with a single provider
|
|
29
30
|
npx 10x-chat@latest chat -p "Review this code for bugs" --provider chatgpt --file "src/**/*.ts"
|
|
@@ -42,6 +43,15 @@ npx 10x-chat@latest status
|
|
|
42
43
|
|
|
43
44
|
# View a session's response
|
|
44
45
|
npx 10x-chat@latest session <id> --render
|
|
46
|
+
|
|
47
|
+
# NotebookLM — manage notebooks & sources
|
|
48
|
+
npx 10x-chat@latest notebooklm list # List notebooks
|
|
49
|
+
npx 10x-chat@latest notebooklm create "My Research" # Create notebook
|
|
50
|
+
npx 10x-chat@latest notebooklm add-url <id> https://... # Add URL source
|
|
51
|
+
npx 10x-chat@latest notebooklm add-file <id> ./paper.pdf # Upload file source
|
|
52
|
+
npx 10x-chat@latest notebooklm sources <id> # List sources
|
|
53
|
+
npx 10x-chat@latest notebooklm summarize <id> # AI summary
|
|
54
|
+
npx 10x-chat@latest chat -p "Summarize" --provider notebooklm # Chat with NotebookLM
|
|
45
55
|
```
|
|
46
56
|
|
|
47
57
|
## Tips
|
|
@@ -51,6 +61,7 @@ npx 10x-chat@latest session <id> --render
|
|
|
51
61
|
- **Don't send secrets**: exclude `.env`, key files, auth tokens from `--file` patterns.
|
|
52
62
|
- **Use `--dry-run`** to preview what will be sent before committing to a run.
|
|
53
63
|
- **Timeouts**: Default is 5 minutes. Use `--timeout <ms>` for long-thinking models.
|
|
64
|
+
- **NotebookLM**: Add sources first (`notebooklm add-url`/`add-file`), then chat with `--provider notebooklm`.
|
|
54
65
|
|
|
55
66
|
## Safety
|
|
56
67
|
|