← ClaudeAtlas

fetch-shared-chatlisted

Fetch and extract the full conversation text from a shared AI chat link (chatgpt.com/share, gemini.google.com/share, claude.ai/share) without a browser. Use when the user pastes such a link or asks to read/summarize a shared chat.
silvio-l/skills · ★ 0 · AI & Automation · score 70
Install: claude install-skill silvio-l/skills
# Fetch Shared Chat Extract the complete conversation text from a shared ChatGPT, Gemini, or Claude.ai chat link — no visible browser window, no browser extension, no login, no copy-paste from the user required. ## Why not just fetch the URL These are all client-side-rendered SPAs: a plain `curl`/`WebFetch` of the share URL returns an empty app shell, not the conversation (the actual messages load via client-side JavaScript after the page mounts). Never try a plain fetch first and fall back later — go straight to the script below. ## Step 1: Run the script ```bash S=~/.agents/skills/fetch-shared-chat/scripts/fetch_shared_chat.py "$S" "<SHARE_URL>" --output "<scratch-path>/conversation.md" ``` The script dispatches on the URL host: - **`chatgpt.com/share/<id>`** — fetches `<url>.data`, the React Router single-fetch data endpoint, with plain HTTP. No browser at all. This endpoint returns the conversation as a `turbo-stream`-encoded payload (decoded by the bundled `turbo_stream_decode.py`) and, critically, states plainly *why* a share failed when it does (e.g. deleted vs. access-denied) — the DOM-rendered page instead just silently client-side-redirects to the homepage, which looks identical for both cases and must not be used as the extraction method. - **`gemini.google.com/share/<id>`** or **`share.gemini.google/<id>`** — no known server-side data endpoint; rendered with headless Chromium (Playwright) since the conversation only exists in the client-hydrated DOM. - **`c