Markdown Browser Skills
This skill is an orchestration layer, not a replacement fetcher. It always keeps official web_fetch as the fetch source of truth.
MECE Architecture
- Fetch layer (official, exclusive)
- Use OpenClaw
web_fetchto retrieve the page. - Do not call direct HTTP fetch inside this skill for normal operation.
- Policy layer (these skills)
- Parse
Content-Signaland computepolicy_action. - Current action focuses on
ai-inputsemantics:allow_input,block_input,needs_review.
- Privacy layer (these skills)
- Redact path/fragment/query values in output URL fields.
- Keep URL shape useful for debugging without leaking sensitive values.
- Normalization layer (these skills)
- If
contentType=text/markdown, keep content as-is. - If
contentType=text/html, convert withturndownas fallback enhancement. - For other content types, pass through text.
Execution Order
- Call official
web_fetch. - Pass the result JSON into this wrapper.
- Optionally pass
Content-Signalandx-markdown-tokensheader values if available. - Use the returned normalized object for downstream agent logic.
Wrapper Tool
process_web_fetch_result({ web_fetch_result, content_signal_header, markdown_tokens_header })
Input:
web_fetch_result(required): JSON payload returned by OpenClawweb_fetch.content_signal_header(optional): rawContent-Signalheader string.markdown_tokens_header(optional): rawx-markdown-tokensheader value.
Output:
contentformat(markdown|html-fallback|text)token_estimate(number | null)content_signalpolicy_actionsource_url(redacted)status_codefallback_used
CLI Usage
# Install runtime dependency once inside the skill directory
npm install --omit=dev
# 1) Obtain a web_fetch payload first (from OpenClaw runtime)
# 2) Save it as /tmp/web_fetch.json
# 3) Run wrapper post-processing
node browser.js \
--input /tmp/web_fetch.json \
--content-signal "ai-input=yes, search=yes, ai-train=no" \
--markdown-tokens "1820"