Skills browser-read
Extract readable content from browser pages as markdown. Use when web_fetch fails (bot protection, auth-required pages, Twitter/X, LinkedIn) and you already have the page open in the browser.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/bill492/browser-read" ~/.claude/skills/openclaw-skills-browser-read && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/bill492/browser-read" ~/.openclaw/skills/openclaw-skills-browser-read && rm -rf "$T"
manifest:
skills/bill492/browser-read/SKILL.mdtags
source content
browser-read
Extract readable text from an already-open browser page and return markdown, suitable for pages where
web_fetch is blocked or missing auth context.
When to use
returned an error or empty content.web_fetch- Page requires authentication/cookies/session state available only in the browser.
- You need text extraction from Twitter/X or LinkedIn timelines/articles where screenshot/OCR was previously used.
When NOT to use
already returns good markdown/text (faster and cheaper).web_fetch- Purely static pages where normal fetch is sufficient.
Steps
- Navigate to the URL with
.browser navigate - Read extraction script from
.~/clawd/skills/browser-read/extract.js - Run
withbrowser act
and pass the script contents askind=evaluate
.fn - Script returns
where{title, content, excerpt, byline, siteName, length}
is markdown.content - If extraction fails or returns empty content, script falls back to
.document.body.innerText
Example (tool calls)
{ "action": "navigate", "targetId": "...", "url": "https://example.com" } { "action": "act", "targetId": "...", "kind": "evaluate", "fn": "(() => { ... return {title, content, excerpt, byline, siteName, length}; })()" }
Notes
is a self-contained IIFE so it can be passed directly as theextract.js
value tofn
.browser act- Keep in mind this is a lightweight extractor; it intentionally strips script/style/nav/header/footer/aside/cookie/ad elements before conversion.