项目文件夹

文件
wehub-resource-sync 09e9f3545f
Test / Code Quality (push) Has been cancelled
Test / Test (macos-latest, Python 3.10) (push) Has been cancelled
Test / Test (macos-latest, Python 3.11) (push) Has been cancelled
Test / Test (macos-latest, Python 3.12) (push) Has been cancelled
Test / Test (macos-latest, Python 3.13) (push) Has been cancelled
Test / Test (macos-latest, Python 3.14) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.10) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.11) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.12) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.13) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.14) (push) Has been cancelled
Test / Test (windows-latest, Python 3.10) (push) Has been cancelled
Test / Test (windows-latest, Python 3.11) (push) Has been cancelled
Test / Test (windows-latest, Python 3.12) (push) Has been cancelled
Test / Test (windows-latest, Python 3.13) (push) Has been cancelled
Test / Test (windows-latest, Python 3.14) (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
dependency-audit / pip-audit (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:30:13 +08:00

3.7 KiB

otmP3b (GeneratePromptSuggestions) mode → surface map

Evidence record for the suggest_prompts mode enum (field-4 C0 of the SUGGEST_PROMPTS / otmP3b request). Backs the MCP suggest_prompts tool's surface labels and the client cap (_notebook_payloads._PROMPT_SUGGESTIONS_MODE_MAX = 10). Investigated live 2026-07-01 (#1726); supersedes the earlier output-only #1612 guess.

Map

mode surface · format how established
1 Audio · Deep Dive browser-verified — opened the Audio Overview Customize dialog headless (Playwright + stored storage_state auth), clicked the "Deep Dive" format card, decoded the otmP3b request's trailing mode
2 Audio · Brief browser-verified (Brief card)
3 Video · Explainer real web capture — otmP3b request while customizing a Video Explainer
4 Chat · ask (default) client live-probe — returns "ask about the content" chat questions; the web chat default
5 Audio · Critique browser-verified (Critique card)
6 Audio · Debate browser-verified (Debate card); output = debate scaffolding
7 — unidentified no UI surface sends it; excluded from the tool
8 Quiz client live-probe — returns quiz-generation prompts
9 Flashcards client live-probe — returns flashcard prompts
10 Video · Short real web capture — controlled pair (same notebook + source, mode 3 vs 10)
0, 11+ INTERNAL (server error) out of range

Two axes (why the labels are honest)

There are two different measurements, and they are consistent, not contradictory:

  • Surface axis (#1726): which mode a studio Customize dialog SENDS for its format's suggestions. This is request-side wiring — the otmP3b mode the UI emits per format. It's how the labels are assigned (a card labeled "Deep Dive" sends mode 1, so mode 1 = the Audio Deep Dive suggestion surface).
  • Output axis (#1612, 2026-06-20 live A/B): what the backend RETURNS per mode. Modes 5/6/8/9 (critique / debate / quiz / flashcards) are format-distinctive in the returned text; modes 1/2/3/10 return content-direction prompts (persona / format / topic) that read ~like the mode-4 default.

Reconciliation: for deep-dive / brief / explainer / short, NotebookLM steers the format via content direction, not format jargon — so those surfaces' suggestion text is general by design, even though the surface (which mode the format's dialog sends) is distinct and verified. The tool's surface labels therefore name the surface (the format whose dialog sends the mode), not a promise about the returned tone. Modes 5/6/8/9 also differ in output; 1/2/3/10 are the "same shape, different surface" cases.

Not exposed / not supported

  • Mode 7: no UI surface sends it; unmapped.
  • data-table / infographic / mind map / slide deck: their Customize dialogs exist but fire NO otmP3b (no suggestion surface). Modes 8/9 (quiz/flashcards) are backend-reachable via this RPC but the web UI doesn't wire their dialogs to it — still valid to expose since the RPC serves them.
  • Report suggestions: a separate RPC (GET_SUGGESTED_REPORTS / ciyUvf), not otmP3b.

Method (reproducible)

Headless Playwright loaded the authenticated app via the repo's storage_state auth (browser.new_context(storage_state=…)), navigated to a notebook, and clicked each artifact's button[aria-label="Customize {Type}"] chevron (NOT the card body — that generates). For Audio, each format card inside the dialog was clicked while capturing the otmP3b request post-data (f.req → trailing mode int). Video modes came from real browser network captures (otmP3b requests). Chat/quiz/flashcards were client live-probes of client.notebooks.suggest_prompts(mode=…).