AI Search Hub
Use this skill only for this repository's AI Search Hub browser automation scripts:
scripts/yuanbao_playwright.pyscripts/longcat_playwright.pyscripts/doubao_playwright.pyscripts/qwen_playwright.pyscripts/gemini_playwright.pyscripts/grok_playwright.py
When To Use
Use this skill when the user asks to:
- run one of the supported chat sites from this repo
- normalize invocation across the three scripts
- auto-start a debug Chromium-family browser session
- detect whether
127.0.0.1:9222is available - prompt for login if the target site is not logged in, then continue automatically
- seed an isolated debug profile from the user's local browser data
How To Run
Run the bundled wrapper script instead of calling the site script directly:
python3 scripts/run_web_chat.py --site doubao --prompt "Give me a short Hangzhou food guide."
Key arguments:
--site yuanbao|longcat|doubao|qwen|gemini|grok--prompt "..."required--repo-root <path>if the current working directory is not the repo root--cdp-http http://127.0.0.1:9222to reuse an existing DevTools endpoint--browser-path <path>to force a specific Chromium-family browser binary--debug-profile-dir <path>to control the isolated debug profile location--user-data-source <path>to force a specific source browser user-data-dir--output <path>to control the destination file
Workflow
The wrapper script is the low-freedom path and should be preferred over hand-rolling the sequence.
It does the following:
- Finds the repo root and target site script.
- Reuses
--cdp-httpif9222is already listening. - Otherwise seeds an isolated Chromium-family debug profile from the user's source browser data and starts the browser with a remote-debugging port, opening the requested site directly instead of leaving a separate
about:blankstartup tab behind. - For legacy sites (
yuanbao,longcat,doubao), opens the target site and checks for login UI before dispatching the site-specific script. - For generic sites (
qwen,gemini,grok), opens the target site, enters the prompt, and waits for a reply. - If the site requires login or produces no usable reply because login is required, prints a prompt and waits until login completes, then continues automatically.
- Invokes the matching site script with standardized flags and the resolved
--cdp-url. - Reuses the single startup page when possible so the browser does not keep an extra blank tab, and prefers DOM-side text entry over keyboard typing to reduce accidental interference from the user working elsewhere.
Site Notes
doubao: requires a logged-in session. The visitor page usually does not answer prompts.yuanbao: login may appear as a modal with QQ, WeChat, or last-login buttons even when the page shell is visible.longcat: the wrapper prefers a new chat before sending unless--no-new-chatis requested downstream.qwen,gemini,grok: each has its own Playwright entry script backed by a shared site-chat core.geminifirst targets the visible composer and attempts the send once before falling back to the login-wait loop, because the landing page exposes a real textbox even when the account is not yet in a usable chat state.
Constraints
- Prefer headed Chromium browsers for login-recovery flows. Headless mode only makes sense when the copied debug profile is already logged in.
- Do not kill the user's normal browser session unless the user explicitly asks for that.
- The wrapper copies browser data into an isolated debug profile and skips lock files, so the user's normal browser can stay open.
- The wrapper bypasses Python proxy settings for local DevTools requests because
http://127.0.0.1:9222/json/versionmay otherwise return a false502.