Cloudflare Browser Rendering
einverne/dotfiles
Guide for implementing Cloudflare Browser Rendering - a headless browser automation API for screenshots, PDFs, web scraping, and testing.
Multi-engine web search (SearXNG) + browsing/scraping (Camofox, CloakBrowser).
$ npx skills add Johell1NS/browser-search --skill browser-search -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Johell1NS/browser-search browser-search --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "browser-search" agent skill from https://github.com/Johell1NS/browser-search/tree/master into .claude/skills/browser-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-search", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Johell1NS/browser-search --skill browser-search -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Johell1NS/browser-search browser-search --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "browser-search" agent skill from https://github.com/Johell1NS/browser-search/tree/master into .agents/skills/browser-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-search", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Johell1NS/browser-search --skill browser-search -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Johell1NS/browser-search browser-search --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "browser-search" agent skill from https://github.com/Johell1NS/browser-search/tree/master into .cursor/skills/browser-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-search", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Johell1NS/browser-search --skill browser-search -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Johell1NS/browser-search browser-search --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "browser-search" agent skill from https://github.com/Johell1NS/browser-search/tree/master into .gemini/skills/browser-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-search", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Johell1NS/browser-search browser-searchInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Johell1NS/browser-search --skill browser-search -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "browser-search" agent skill from https://github.com/Johell1NS/browser-search/tree/master into .github/skills/browser-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-search", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Johell1NS/browser-search --skill browser-search -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Johell1NS/browser-search browser-search --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "browser-search" agent skill from https://github.com/Johell1NS/browser-search/tree/master into .opencode/skills/browser-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-search", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
browser-searchMulti-engine web search (SearXNG) + browsing/scraping (Camofox, CloakBrowser).
Browser Search is an agent skill from Johell1NS/browser-search. Multi-engine web search (SearXNG) + browsing/scraping (Camofox, CloakBrowser). Use whenever you need to do web research.
Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 55 other files, including scripts (for example `FAQ.md`, `README.md` and `data/advanced-browsing-reference.md`).
It sits in Productivity & Automation, covering Web search, Web scraping and Deep research. It works with Model Context Protocol, Cloudflare and npm. The repository describes itself as: A skill for AI agents: search the web with SearXNG, browse with Camofox, bypass protections with CloakBrowser. Anti-hallucination by design. Self-hosted, free, unlimited. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 398768a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/, which the agent can run.
Shell commands in SKILL.md call:
nodenpmbashnpxdockerFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, npx and docker, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Browser Search loads about 2.5k tokens when it runs. Until then it costs about 34 tokens; SKILL.md has 1,037 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from Johell1NS/browser-search at commit 398768a, republished under its MIT licence (© Johell1NS). 1,037 words, ~2,539 tokens.
.claude/skills/browser-search/SKILL.md (or your agent's skills folder). This skill also uses 52 other files; get the full folder from GitHub.Web search and browsing for AI agents. Three tools, from lightest to most powerful: SearXNG for search, Camofox for browsing, CloakBrowser for protected sites.
| Tool | When to use | How |
|---|---|---|
| SearXNG (Docker, :8080) | Default: Multi-source search, find URLs/info | exec + node <skill_dir>/scripts/searxng/searxng.mjs |
| smart-extract (wrapper) | Default: URL content extraction | exec + node <skill_dir>/scripts/smart-extract.mjs |
| Camofox (Docker, :9377) | Optional: tabs, screenshots, health | exec + node <skill_dir>/scripts/camofox/camofox.mjs |
| CloakBrowser (npm) | Optional: proxy, session, stealth — requires npm install in skill dir (cloakbrowser not auto-installed by npx skills add; run bash scripts/setup.sh or npm install + node -e "import('cloakbrowser').then(c=>c.ensureBinary())") | exec + node <skill_dir>/scripts/cloak/cloak-fetch.mjs |
When this skill is active, it operates as a Deep Research engine:
--time-range flag in SearXNG to prefer recent results.smart-extract.mjs for any URL that needs in-page extraction. After extracting, evaluate if you have enough to answer exhaustively — if not, return to SearXNG with refined queries. Never stop until you have exhaustive, cross-verified coverage.Goal: find relevant URLs for every aspect of the user's request, to pass to smart-extract.mjs for content extraction.
Docker container on localhost:8080. Always the first choice for any search.
Commands:
Deterministic script <skill_dir>/scripts/searxng/searxng.mjs. JSON output on stdout, logs on stderr.
URL encoding is handled internally — no manual escaping needed.
# Simple search
exec node <skill_dir>/scripts/searxng/searxng.mjs search "<query>"
# With language and category
exec node <skill_dir>/scripts/searxng/searxng.mjs search "<query>" --lang it --categories news
# With time range (day, week, month, year)
exec node <skill_dir>/scripts/searxng/searxng.mjs search "<query>" --time-range month
# Image search
exec node <skill_dir>/scripts/searxng/searxng.mjs search "<query>" --categories images
# Pagination
exec node <skill_dir>/scripts/searxng/searxng.mjs search "<query>" --page 2
# Multiple queries (run in series with a 3s gap between them)
exec node <skill_dir>/scripts/searxng/searxng.mjs search \
--query "<q1>" --time-range month \
--query "<q2>" --lang it \
--query "<q3>"
# Health check
exec node <skill_dir>/scripts/searxng/searxng.mjs healthAll flags are optional.
By default, SearXNG searches all enabled engines.
Use --engines only when you need to restrict to specific engines, e.g. --engines google,wikipedia.
Rate-limit: when you need several searches, group them into a single command with --query — each query can have its own flags. The script runs them in series with a 3s gap between queries so the burst doesn't look like a bot. Never launch multiple separate search commands in rapid succession.
Language strategy:
| Case | Flag |
|---|---|
| Query matches content language, general/cultural topic | --lang <user-locale> |
| Query matches content language, technical topic | --lang en |
| Query in English | --lang en |
| Fallback if preferred locale returns 0 results | retry with --lang en |
Troubleshooting — container down:
searxng.mjs search auto-recovers a stopped SearXNG container: on a connection failure it finds the container exposing port 8080, restarts it, waits for it to come back up, and retries the search once.
Manual fallback:
cd <searxng-dir> && docker compose up -dGoal: extract content from every useful URL returned by SearXNG.
smart-extract.mjs is the default tool for extracting content from any URL. It has 3 operation modes, to be used in this order:
Workflow:
Always start with exploratory mode to read the page content. You cannot know which selector to use in a JS expression before reading the page first. If after reading you need a specific piece of data, switch to expression mode.
[!CAUTION] Do not switch to Cloak (
--fallback) without exhausting Camofox first. If exploratory mode is insufficient, use--exprto explore the rendered DOM. Cloak is extremely slow — use it only as a last resort.
Base command (1, 2, or n URLs):
exec node <skill_dir>/scripts/smart-extract.mjs "<url1>" ["<url2>" ...]Examples (modes 1 and 2):
# 1. Exploratory: read page content
exec node <skill_dir>/scripts/smart-extract.mjs "https://example.com"
# 2. Expression: extract specific data (only after reading the page)
exec node <skill_dir>/scripts/smart-extract.mjs "https://example.com" --expr "document.querySelector('h1')?.textContent"Options:
Behavior (exploratory or expression mode):
--expr "<js>" — evaluate a JS expression on the page--min-chars <n> — minimum character threshold for a valid result (default: 300, does not apply with --expr)Cloak tuning (automatic escalation or --fallback):
--wait <ms> — extra wait for JS rendering (default: 2000). Passed to Cloak--timeout <ms> — general timeout (default: 60000, Cloak receives 2x)--verbose — diagnostic logs on stderr. Useful for Cloak debuggingWhat happens in practice (modes 1 and 2):
mode: "camofox" with mixed results, manually escalate the failed URLs with --fallback.mode: "camofox" if at least one URL succeeded, mode: "full-auto" if auto-escalation to Cloak occurred.Last resort — Direct Cloak mode:
When Camofox failed and auto-escalation did not trigger (mixed mode). Accepts one or more URLs:
exec node <skill_dir>/scripts/smart-extract.mjs --fallback "https://url1" "https://url2" "https://url3"--fallback skips Camofox and uses Cloak directly, since the goal is to recover content where Camofox has already proven insufficient.
Output: JSON on stdout with version, mode, results[] (one entry per URL with ok, content, chars, source, steps).
After reviewing the output, decide: do you have enough information to answer the user's request exhaustively? If yes, proceed. If not, go back to SearXNG with new search queries to fill the gaps.
For operations not covered by smart-extract.mjs, use the underlying tools directly.
See <skill_dir>/data/advanced-browsing-reference.md for the full command reference.
| Tool | Capabilities |
|---|---|
camofox.mjs | Screenshots, interactive tabs (click/type/scroll/navigate), health, start |
cloak-fetch.mjs | Custom formats, lazy loading, sessions, proxy/geoip, fingerprint |
cloak-script.mjs | Complex multi-step interactions (login flows, form automation) |
CloakBrowser prerequisite: after npx skills add you must run npm install inside the skill directory (<skill_dir>) and node -e "import('cloakbrowser').then(c=>c.ensureBinary())" — otherwise cloak-fetch.mjs and smart-extract.mjs --fallback / full-auto will fail with ERR_MODULE_NOT_FOUND: Cannot find package 'cloakbrowser'. Verify with bash <skill_dir>/scripts/check.sh (checks cloakbrowser npm package installed) or bash <skill_dir>/scripts/setup.sh.
Initial setup and diagnostics for SearXNG and Camofox. See <skill_dir>/docker/setup.md when needed.
© Johell1NS, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 52 other files (scripts) in the repository root of Johell1NS/browser-search.
Open the folder on GitHubat commit 398768a
Browser Search next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Browser Search this skillJohell1NS/browser-search | 529 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Cloudflare Browser Renderingeinverne/dotfiles | 121 | — | ~4.9k | Automated safety check: Pass | GPL-3.0 | |
| Web Searchmajiayu000/claude-skill-registry | 666 | 2 repos | ~703 | Automated safety check: Notes | MIT | |
| Agent ReachPanniantong/Agent-Reach | 93k | 1 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Mysearchskernelx/MySearch-Proxy | 159 | — | ~1.4k | Automated safety check: Notes | MIT | |
| Mysearchskernelx/MySearch-Proxy | 159 | — | ~3k | Automated safety check: Notes | None |
einverne/dotfiles
Guide for implementing Cloudflare Browser Rendering - a headless browser automation API for screenshots, PDFs, web scraping, and testing.
majiayu000/claude-skill-registry
网络搜索与网页内容获取。当用户需要搜索互联网信息、获取网页内容、查找实时数据、进行 websearch 时使用此技能。支持多种搜索工具:WebFetch、Firecrawl skill、Tavily skill。
Panniantong/Agent-Reach
Routes web research and platform lookups across 16 sites, including Twitter, Reddit, YouTube, Bilibili, Xiaohongshu and GitHub, through one command-line tool.
skernelx/MySearch-Proxy
DEFAULT search skill for OpenClaw. An agent skill from skernelx/MySearch-Proxy.
skernelx/MySearch-Proxy
Install, verify, debug, and use MySearch MCP/Skill. An agent skill from skernelx/MySearch-Proxy.
brightdata/skills
Bright Data MCP handles ALL web data operations. An agent skill from brightdata/skills.
Works with
Multi-engine web search (SearXNG) + browsing/scraping (Camofox, CloakBrowser). Browser Search is an agent skill from Johell1NS/browser-search. Multi-engine web search (SearXNG) + browsing/scraping (Camofox, CloakBrowser).
Browser Search fits situations like: you need to do web research; tasks that involve Web search; tasks that involve Web scraping.
Run `npx skills add Johell1NS/browser-search --skill browser-search -a claude-code`. Or copy the skill folder (the Johell1NS/browser-search repository) into .claude/skills/browser-search in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Johell1NS/browser-search --skill browser-search -a codex`. Or copy the skill folder (the Johell1NS/browser-search repository) into .agents/skills/browser-search in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Johell1NS/browser-search --skill browser-search -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/browser-search, .gemini/skills/browser-search, .github/skills/browser-search and .opencode/skills/browser-search in your project.
Going by SKILL.md and its folder, Browser Search needs the command-line tools its instructions call (node, npm, bash, npx and docker). Our summary lists: Node.js; Docker.
SKILL.md contains no URLs. Its commands use npm, npx and docker, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Browser Search is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Browser Search: Cloudflare Browser Rendering (einverne/dotfiles, 121 stars), Web Search (majiayu000/claude-skill-registry, 666 stars), Agent Reach (Panniantong/Agent-Reach, 93k stars) and Mysearch (skernelx/MySearch-Proxy, 159 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Johell1NS (a GitHub user) maintains it in Johell1NS/browser-search, which has 529 GitHub stars. The repository was last updated on September 2, 2026.
Source: Johell1NS/browser-search on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.