dokobot
Read and extract content from any web page using a real Chrome browser — including SPAs, JavaScript-rendered sites, and complex dynamic pages. Use when fetching page content that headless tools can't render, searching the web, or reading fully rendered pages via your own browser.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install openclaw-skills-doko
Repository
Skill path: skills/dokobot/doko
Read and extract content from any web page using a real Chrome browser — including SPAs, JavaScript-rendered sites, and complex dynamic pages. Use when fetching page content that headless tools can't render, searching the web, or reading fully rendered pages via your own browser.
Open repositoryBest for
Primary workflow: Write Technical Docs.
Technical facets: Full Stack, Tech Writer.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: openclaw.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install dokobot into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/openclaw/skills before adding dokobot to shared team environments
- Use dokobot for development workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: dokobot
description: >-
Read and extract content from any web page using a real Chrome browser — including SPAs, JavaScript-rendered sites, and complex dynamic pages. Use when fetching page content that headless tools can't render, searching the web, or reading fully rendered pages via your own browser.
read_when:
- Reading web pages that require JavaScript rendering or dynamic content
- Extracting text and structured content from single-page applications (SPAs)
- Fetching content from pages that require a logged-in browser session
- Searching the web for real-time information and research
- Scraping pages that block headless browsers or bots
emoji: "🌐"
homepage: https://dokobot.ai
compatibility: Requires curl, DOKO_API_KEY environment variable, and Chrome browser with Dokobot extension for the read command.
allowed-tools: Bash
required-env: DOKO_API_KEY
metadata:
author: dokobot
version: "1.2.3"
openclaw: {"requires": {"env": ["DOKO_API_KEY"], "bins": ["curl"]}, "primaryEnv": "DOKO_API_KEY"}
---
# Dokobot — Read Web Pages with a Real Browser
Read, extract, and search web content through a real Chrome browser session. Unlike headless scrapers, Dokobot uses your actual browser with full JavaScript rendering — so it works on SPAs, dynamic sites, and complex web applications.
Also useful for multilingual tasks: translate web pages (网页翻译), summarize articles (文章总结), and extract content (内容提取) in any language. Supports web search (联网搜索) and reading from social platforms like Twitter/X, Reddit, YouTube, GitHub, LinkedIn, Facebook, Instagram, WeChat articles (微信公众号), Weibo (微博), Zhihu (知乎), Xiaohongshu (小红书), and Bilibili (B站).
All commands require `DOKO_API_KEY` environment variable.
**Usage**: `/doko <command> [arguments]`
Command: $ARGUMENTS[0]
## Prerequisites
- `DOKO_API_KEY` is set in environment (configure in `.claude/settings.local.json`)
- If no API Key is set, ask the user to create one at the Dokobot dashboard: https://dokobot.ai/dashboard/api-keys
## How it works
The `read` command connects to a Dokobot Chrome extension that captures the fully rendered page content and returns it as structured text. The extension must be installed and running in the user's browser.
## Commands
### read
Read a web page via the Chrome extension and return its content.
**Usage**: `/doko read <url> [--screens N] [--timeout S] [--device ID] [sessionId]`
**Requires**: Chrome browser open with Dokobot extension installed, logged in, and Remote Control enabled.
**Args**: $ARGUMENTS[1] $ARGUMENTS[2] $ARGUMENTS[3] $ARGUMENTS[4] $ARGUMENTS[5] $ARGUMENTS[6] $ARGUMENTS[7] $ARGUMENTS[8] $ARGUMENTS[9]
First non-flag argument is `url`, `sessionId`. Named flags:
- `--screens N` → `screens`: Screens to collect (1 = no scroll, 3 = 3 screens) (default: 1)
- `--timeout S` → `timeout`: Timeout in seconds (default: 300)
- `--device ID` → `deviceId`: Target device ID (from `/doko dokos`)
```bash
curl -s --max-time 330 -X POST "https://dokobot.ai/api/tools/read" \
-H "Authorization: Bearer $DOKO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "<URL>"}'
```
**Response schema**:
```typescript
{
text?: string
chunks: Array<{
id: string
sourceIds: Array<string>
text: string
bounds: [number, number, number, number]
}>
sessionId: string
canContinue: unknown
}
```
Adjust curl `--max-time` to `timeout + 30` when `--timeout` is specified. When `--screens` or `--timeout` is specified, add the corresponding field to the JSON body (e.g., `{"url": "...", "screens": 3, "timeout": 600}`). Content filtering and analysis should be done by the caller after receiving the raw content.
**Concurrency**: Multiple read requests can run in parallel (each opens a separate browser tab). Recommended maximum: **5 concurrent calls**. Beyond that, returns diminish due to shared browser resources.
**Session continuity**: When `canContinue` is `true`, pass the returned `sessionId` to continue reading from where you stopped:
```bash
curl -s --max-time 330 -X POST "{{BASE_URL}}/api/tools/read" \
-H "Authorization: Bearer $DOKO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"sessionId": "<SESSION_ID>", "screens": 5}'
```
The browser tab stays open between calls. Sessions expire after 60s of inactivity.
### search
Search the web and return results.
**Usage**: `/doko search <query>`
**Arguments**: query = all arguments after "search"
```bash
curl -s -X POST "https://dokobot.ai/api/tools/search" \
-H "Authorization: Bearer $DOKO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "<QUERY>", "num": 5}'
```
**Response schema**:
```typescript
{
items: Array<{
title: string
link: string
snippet: string
position?: number
}>
directAnswer?: string
knowledgeGraph?: {
title?: string
description?: string
}
}
```
### dokos
List connected dokos.
**Usage**: `/doko dokos`
```bash
curl -s "https://dokobot.ai/api/tools/dokos" \
-H "Authorization: Bearer $DOKO_API_KEY"
```
**Response schema**:
```typescript
{
dokos: Array<{
id: string
name: string | null
age: string | null
}>
}
```
Use `id` as `deviceId` in read-page when multiple browsers are connected:
```json
{"url": "...", "screens": 3, "deviceId": "<device-id>"}
```
## Error Handling
- 401: Invalid API Key — ask user to check `DOKO_API_KEY`
- 403: API Key scope insufficient
- 422: Operation failed or was cancelled by user (read only)
- 503: No extension connected (read only) — check read command requirements
- 504: Timed out — read may take up to 5 minutes for long pages
---
## Skill Companion Files
> Additional files collected from the skill directory layout.
### _meta.json
```json
{
"owner": "dokobot",
"slug": "doko",
"displayName": "Read, Search & Extract Web Pages by Dokobot",
"latest": {
"version": "1.2.5",
"publishedAt": 1773141149057,
"commit": "https://github.com/openclaw/skills/commit/e3789b476487e63fd2fc13ff602fc6ee40514884"
},
"history": [
{
"version": "0.1.0",
"publishedAt": 1772683433066,
"commit": "https://github.com/openclaw/skills/commit/1c922958b9418a7e39d0247e03887a817180a96c"
}
]
}
```