#!/usr/bin/env python3 """Haalt een screenshot uit het Claude Code-sessietranscript. Gebruik: extract.py Let op: JSONL hieronder wijst naar de Claude Code-sessie van 20 september 2026; bij een nieuwe sessie het pad aanpassen.""" import base64, json, sys from pathlib import Path JSONL = Path("/home/guido/.claude/projects/-home-guido-projecten-lexconsultancybv-nl-server/f0263769-3318-4702-826c-1957526cfde0.jsonl") def find(ss_id): for line in JSONL.read_text().splitlines(): if ss_id not in line: continue rec = json.loads(line) content = rec.get("message", {}).get("content", []) for block in content if isinstance(content, list) else []: if block.get("type") != "tool_result": continue inner = block.get("content", []) if not isinstance(inner, list): continue # In een browser_batch staan meerdere screenshots in één resultaat: # neem het beeld dat direct volgt op de tekst met dit ID. for i, b in enumerate(inner): if b.get("type") == "text" and ss_id in b.get("text", ""): for nb in inner[i + 1:]: if nb.get("type") == "image": return base64.b64decode(nb["source"]["data"]) if nb.get("type") == "text" and "ss_" in nb.get("text", ""): break return None ss_id, dest = sys.argv[1], Path(sys.argv[2]) data = find(ss_id) if not data: sys.exit(f"geen beeld gevonden voor {ss_id}") dest.write_bytes(data) print(f"{dest.name}: {len(data)//1024} kB")