--- id: "3e6de2e4-3df2-4894-90ab-50ae8d66eef7" name: "X.com Research" micro_summary: "Escalate X.com shell responses to Browser Harness; reuse a real X tab, search the live timeline, extract article text plus /status/ links, and verify claims on individual status pages." status: "in_progress" see_also: [] scope: "Reusable mechanics for researching X.com when public HTTP returns only the JavaScript shell. Covers authenticated/local-browser live search, evidence extraction, and status-page verification. It does not store volatile market claims as browser law." warnings: "X.com search is volatile and personalized; preserve post URLs and dates. A shell response is not evidence that no results exist. Do not promote the 2026-08-24 Codex estimates into permanent browser mechanics." --- ## Mechanics (validated 2026-08-24) - Run the Browser Harness SiftText gate first. The 2026-08-24 probe found no existing X.com domain hub. - Try a plain public fetch first. If it returns the X JavaScript shell rather than readable results, escalate to the browser. - Call `list_tabs()` and reuse a matching real X.com tab. Open a dedicated tab only when none exists. - Use X live search (`f=live`) with narrow quoted queries and account filters where useful. - Extract each result from `article` elements, retaining visible text and links containing `/status/`; do not rely only on the flattened page timeline. - Open promising status URLs directly and capture the post text before using the claim. - Date every market finding and label inferred API-equivalent values as estimates rather than official credits or fixed limits. --- ### 2026-09-23 10:03 UTC ### 2026-09-21 — bookmarks + media archiving extension A full bookmark corpus can be enumerated and archived through the same browser-harness posture this node already covers: capture the live Bookmarks GraphQL request's headers, walk the Bottom cursor with an in-page async pager (the helper IPC budget forbids a synchronous multi-page loop), then pull media with a page element plus Network.getResponseBody for photos and yt-dlp against direct video.twimg.com mp4 variants for video. The reusable procedure lives in the child node named "X bookmarks + media archiving (mechanics)". Operational datapoint reinforcing this node's original warning: the rendered timeline showed 4 bookmarks while the API held 1,251 entries across 31 unique pages. A DOM or shell response is not evidence of corpus size — only the API response is.