Jev Social
socai-io/jev-social
Run browser-grounded, read-only social research through Jev Social when a user wants posts, profiles, comments, video evidence, or a source-linked report from Instagram, TikTok, or LinkedIn and the…
Deep research and analysis tool. An agent skill from actionbook/actionbook.
$ npx skills add actionbook/actionbook --skill active-research -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install actionbook/actionbook active-research --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/actionbook/actionbook.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/active-research .claude/skills/active-research && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "active-research" agent skill from https://github.com/actionbook/actionbook/tree/main/skills/active-research into .claude/skills/active-research/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "active-research", 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.
$skill-installer install https://github.com/actionbook/actionbook/tree/main/skills/active-researchType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add actionbook/actionbook --skill active-research -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install actionbook/actionbook active-research --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/actionbook/actionbook.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/active-research .agents/skills/active-research && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "active-research" agent skill from https://github.com/actionbook/actionbook/tree/main/skills/active-research into .agents/skills/active-research/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "active-research", 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 actionbook/actionbook --skill active-research -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install actionbook/actionbook active-research --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/actionbook/actionbook.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/active-research .cursor/skills/active-research && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "active-research" agent skill from https://github.com/actionbook/actionbook/tree/main/skills/active-research into .cursor/skills/active-research/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "active-research", 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.
$ gemini skills install https://github.com/actionbook/actionbook.git --path skills/active-research--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add actionbook/actionbook --skill active-research -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install actionbook/actionbook active-research --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/actionbook/actionbook.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/active-research .gemini/skills/active-research && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "active-research" agent skill from https://github.com/actionbook/actionbook/tree/main/skills/active-research into .gemini/skills/active-research/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "active-research", 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 actionbook/actionbook active-researchInstalls 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 actionbook/actionbook --skill active-research -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/actionbook/actionbook.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/active-research .github/skills/active-research && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "active-research" agent skill from https://github.com/actionbook/actionbook/tree/main/skills/active-research into .github/skills/active-research/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "active-research", 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 actionbook/actionbook --skill active-research -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install actionbook/actionbook active-research --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/actionbook/actionbook.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/active-research .opencode/skills/active-research && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "active-research" agent skill from https://github.com/actionbook/actionbook/tree/main/skills/active-research into .opencode/skills/active-research/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "active-research", 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.
active-researchDeep research and analysis tool. An agent skill from actionbook/actionbook.
Active Research is an agent skill from actionbook/actionbook. Deep research and analysis tool. Generates comprehensive HTML reports on any topic, domain, paper, or technology. Enhanced with advanced browser automation — SPA handling, network idle wait, batch operations, stealth browsing, and intelligent page analysis. Use when user asks to research, analyze, investigate, deep-dive, or generate a report on any subject.
Its SKILL.md is about 8.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Research & Science, covering Browser automation and Deep research. The repository describes itself as: Let your AI agent get the sources behind logins and paywalls. The licence is Apache-2.0.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 0e31254. 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.
Shell commands in SKILL.md call:
npxpythonnodegitnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
arxiv.orgar5iv.orggoogle.combing.comhuggingface.coscholar.google.comFrom 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.
Active Research loads about 8.2k tokens when it runs. Until then it costs about 94 tokens; SKILL.md has 2,297 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); files beside SKILL.md are not scanned.
The full file from actionbook/actionbook at commit 0e31254, republished under its Apache-2.0 licence (© actionbook). 2,297 words, ~8,150 tokens.
.claude/skills/active-research/SKILL.md (or your agent's skills folder).Analyze any topic, domain, or paper and generate a beautiful HTML report using Actionbook Browser — featuring SPA-aware navigation, network idle detection, batch operations, and intelligent page analysis.
| Capability | Description |
|---|---|
| Page load wait | wait-idle — monitors fetch/XHR until network settles |
| SPA content | wait-fn — wait for JS conditions before extracting |
| Page understanding | snapshot --filter interactive --max-tokens N — focused, budget-friendly |
| Popups blocking | --auto-dismiss-dialogs — auto-handle alert/confirm/prompt |
| Load speed | --block-images — skip images for faster text extraction |
| Page stability | --no-animations — freeze CSS transitions |
| Error detection | console --level error — check for page issues |
| Multi-step forms | batch — execute multiple actions in one call |
| Element debugging | info <selector> — inspect visibility, position, properties |
| Change tracking | snapshot --diff — only see what changed |
| Anti-detection | --stealth + fingerprint rotate for protected sites |
| Auth management | storage set — inject JWT/tokens for gated content |
| One-shot fetch | browser fetch <url> — navigate+wait+extract+close in one command |
| Static page speed | --lite — HTTP-first, browser fallback only if needed |
| Anti-scrape URLs | --rewrite-urls — x.com→xcancel.com, reddit→old.reddit |
| Wait tuning | --wait-hint — domain-aware wait (fast/normal/slow/heavy) |
| Log correlation | --session-tag — tag all operations for debugging |
/active-research <topic>
/active-research <topic> --output ./reports/my-report.jsonOr simply tell Claude: "Research XXX and generate a report"
| Parameter | Required | Default | Description |
|---|---|---|---|
topic | Yes | - | The subject to research (any text) |
--output | No | ./output/<topic-slug>.json | Output path for JSON report |
| Pattern | Type | Strategy |
|---|---|---|
arxiv:XXXX.XXXXX | Paper | arXiv Advanced Search + ar5iv deep read |
doi:10.XXX/... | Paper | Resolve DOI, then arXiv Advanced Search for related work |
| Academic keywords (paper, research, model, algorithm) | Academic topic | arXiv Advanced Search + Google for non-academic sources |
| URL | Specific page | Fetch and analyze the page |
| General text | Topic research | Google search + arXiv Advanced Search if relevant |
┌──────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────┐
│ Claude │────▶│ Actionbook │────▶│ Web Pages │────▶│ Extract │
│ Code │ │ Browser │ │ (multiple) │ │ Content │
└──────────┘ └──────────────┘ └──────────────┘ └─────┬────┘
│ │ wait-idle │ │ SPA / dynamic │ │
│ │ batch ops │ │ protected │ │
│ │ --stealth │ │ mobile-only │ │
│ │ snapshot │ └───────────────┘ │
│ └──────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ │
├─────────▶│ Actionbook │ │ arXiv Adv. │ │
│ │ search/get │────▶│ Search Form │───────────▶│
│ │ (selectors) │ │ (40+ fields) │ │
│ └──────────────┘ └──────────────┘ │
│ │
┌──────────┐ ┌──────────────┐ ┌──────────────┐ │
│ Open in │◀────│ json-ui │◀────│ Write JSON │◀───────────┘
│ Browser │ │ render │ │ Report │ Synthesize
└──────────┘ └──────────────┘ └──────────────┘Always use actionbook browser commands for web browsing. NEVER use any other method to access the web:
curl, wget, httpie, or any HTTP CLI tool via bashpython -c "import requests" or any scripting-language HTTP library via bashactionbook browser and actionbook search/actionbook get commandsIf you need web content, the PREFERRED path is: actionbook browser fetch <url> --format text --json (one-shot).
For interactive multi-step workflows, use: actionbook browser open <url> → actionbook browser wait-idle → actionbook browser text.
CRITICAL: Always use these flags when opening the browser for research.
# PREFERRED: One-shot fetch (I1) — handles open+wait+extract+close automatically
actionbook --block-images --rewrite-urls browser fetch "<url>" --format text --json
# For interactive multi-step workflows, use explicit open:
actionbook --block-images --auto-dismiss-dialogs --no-animations --rewrite-urls browser open "<url>"| Flag | Why |
|---|---|
--block-images | Skip image downloads — 2-5x faster page load for text extraction |
--auto-dismiss-dialogs | Prevent alert/confirm/prompt from blocking automation |
--no-animations | Freeze CSS animations — stable snapshots, no timing issues |
--rewrite-urls | Rewrite x.com→xcancel.com, reddit→old.reddit to avoid anti-bot blocking |
--wait-hint <hint> | Domain-aware wait: instant, fast, normal, slow, heavy, or ms |
--session-tag <tag> | Tag all operations for log correlation and debugging |
--lite (fetch only) | Try HTTP first, skip browser for static pages (Wikipedia, docs, blogs) |
For sites with anti-bot protection, add --stealth:
actionbook --block-images --auto-dismiss-dialogs --no-animations --stealth --rewrite-urls browser open "<url>"Option A: One-shot fetch (PREFERRED for read-only page extraction):
# Single command: navigate → wait (domain-aware) → extract → close
actionbook --block-images --rewrite-urls browser fetch "<url>" --format text --json
# For static pages (Wikipedia, docs, blogs), add --lite to skip browser entirely:
actionbook --rewrite-urls browser fetch "<url>" --format text --lite --json
# For accessibility tree:
actionbook --block-images --rewrite-urls browser fetch "<url>" --format snapshot --max-tokens 2000 --jsonOption B: Interactive multi-step pattern (for forms, clicks, multi-page flows):
# Step 1: Navigate
actionbook browser open "<url>" # or: goto, click a link
# Step 2: Wait for load (MANDATORY in v2)
actionbook browser wait-idle # Wait for fetch/XHR to settle
# Step 3: Extract content
actionbook browser text [selector] # Extract text
# OR
actionbook browser snapshot --filter interactive --max-tokens 500 # Understand page structureWhy wait-idle is critical:
text returns empty or incomplete contentwait-idle monitors all pending network requests, waits until quiet for 500msFor pages that load content dynamically after network settles:
actionbook browser wait-idle
actionbook browser wait-fn "document.querySelector('.results')" # Wait for specific element
actionbook browser text ".results"REMINDER: Every web access in this workflow MUST use
actionbook browsercommands. Usingcurl,wget,python requests, or any other HTTP tool is strictly forbidden. The bash tool should ONLY be used foractionbookCLI commands and local file operations (json-ui render,open).
Based on the topic, generate 5-8 search queries from different angles:
Search order — ALWAYS query Actionbook API first, then search:
| Step | Action | Why |
|---|---|---|
| Step 2 (FIRST) | Query Actionbook API | Get verified selectors for arXiv, ar5iv, and other known sites BEFORE browsing. |
| Step 3 (SECOND) | arXiv Advanced Search | Use Actionbook selectors for multi-field, filtered academic search. |
| Step 4 (THIRD) | Google / Bing search | Supplement with blogs, news, code, discussions, non-academic sources. |
BEFORE browsing any URL, query Actionbook's indexed selectors.
# Search for indexed actions by domain
actionbook search "<keywords>" -d "<domain>"
# Get detailed selectors for a specific page
actionbook get "<domain>:/<path>:<area>"Pre-indexed sites useful for research:
| Site | area_id | Key Selectors |
|---|---|---|
| arXiv Advanced Search | arxiv.org:/search/advanced:default | 40+ selectors: field select, term input, category checkboxes, date range filters |
| ar5iv paper | ar5iv.labs.arxiv.org:/html/{paper_id}:default | h1.ltx_title_document, div.ltx_authors, div.ltx_abstract, section.ltx_section |
| Google Scholar | scholar.google.com:/:default | #gs_hdr_tsi (search), #gs_hdr_tsb (submit) |
| arXiv homepage | arxiv.org:/:default | Global search across 2.4M+ articles |
For any URL you plan to visit, run actionbook search "<keywords>" -d "<domain>" to check if it's indexed.
LESSON LEARNED: arXiv form submission via browser automation is unreliable. Use URL-based search as the PRIMARY method.
Option A: URL-based search (PRIMARY — most reliable):
# Simple keyword search
actionbook --block-images --auto-dismiss-dialogs --no-animations browser open "https://arxiv.org/search/?query=large+language+model+agent&searchtype=all"
actionbook browser wait-idle
actionbook browser text "#main-container"
# Advanced URL search with filters
# searchtype: all, title, author, abstract
# start: result offset (0, 50, 100, ...)
actionbook browser open "https://arxiv.org/search/?query=Rust+machine+learning&searchtype=all&start=0"
actionbook browser wait-idle
actionbook browser text "#main-container"Search strategy: Start broad, then narrow:
"Rust" "machine learning") — aim for 50+ resultssearchtype=titleOption B: Form interaction via batch (BACKUP — use if URL search is insufficient):
# Open arXiv with research flags
actionbook --block-images --auto-dismiss-dialogs --no-animations browser open "https://arxiv.org/search/advanced"
actionbook browser wait-idle
# Use batch for form — fewer round-trips, more reliable
cat <<'EOF' | actionbook browser batch --delay 150
{
"actions": [
{"kind": "click", "selector": "#terms-0-field"},
{"kind": "click", "selector": "option[value='title']"},
{"kind": "type", "selector": "#terms-0-term", "text": "large language model agent"},
{"kind": "click", "selector": "#classification-computer_science"},
{"kind": "click", "selector": "#date-filter_by-3"},
{"kind": "type", "selector": "#date-from_date", "text": "2025-01-01"},
{"kind": "type", "selector": "#date-to_date", "text": "2026-02-23"},
{"kind": "click", "selector": "button:has-text('Search'):nth(2)"}
],
"stopOnError": true
}
EOF
actionbook browser wait-idle
actionbook browser text "#main-container"
# If batch form submission fails (page shows form again instead of results):
# → Fall back to Option A URL-based search immediately
# → Do NOT retry the form — it wastes timearXiv search capabilities (from indexed selectors — for Option B):
| Capability | Selector |
|---|---|
| Search field (Title/Author/Abstract) | #terms-0-field select |
| Search term | #terms-0-term input |
| Add boolean terms | button "Add another term +" |
| Filter: Computer Science | #classification-computer_science |
| Filter: Physics, Math, etc. | #classification-physics, #classification-mathematics |
| Date: past 12 months | #date-filter_by-1 radio |
| Date: specific year | #date-filter_by-2 radio + #date-year |
| Date: custom range | #date-filter_by-3 radio + #date-from_date / #date-to_date |
| Show abstracts | #abstracts-0 radio |
# Search via Google (with wait-idle for SPA results)
actionbook browser open "https://www.google.com/search?q=<encoded_query>"
actionbook browser wait-idle
actionbook browser text "#search"
# Or search via Bing
actionbook browser open "https://www.bing.com/search?q=<encoded_query>"
actionbook browser wait-idle
actionbook browser text "#b_results"Parse search results to extract URLs. For each discovered URL, query Actionbook API to check if indexed.
CRITICAL: URL Handling Rules (Learned from Production Use)
NEVER manually construct URLs from search snippets. Many Google snippet URLs are truncated or reformatted. Instead:
actionbook browser snapshot --filter interactive to find actual link elementsactionbook browser click "a[href*='domain.com']"Expect 20-30% of URLs to be dead. In practice, ~5 out of 20 URLs return 404. Handle this:
actionbook browser open "<url>"
actionbook browser wait-idle
# Check if the page is a 404 or error page
actionbook browser wait-fn "!document.title.includes('404') && !document.title.includes('Not Found')" --timeout 3000
# If timeout → page is dead, skip immediately. Do NOT retry.Salvage info from Google snippets. If a URL is dead but the Google snippet had useful info:
Use 4+ diverse search queries. Don't rely on one search angle:
PREFERRED: Use browser fetch for one-shot page extraction (handles wait + extract + cleanup):
# Quick text extraction (most common)
actionbook --block-images --rewrite-urls browser fetch "<url>" --format text --json
# Static pages (Wikipedia, docs, blogs) — skip browser entirely
actionbook --rewrite-urls browser fetch "<url>" --format text --lite --json
# Page structure analysis
actionbook --block-images --rewrite-urls browser fetch "<url>" --format snapshot --max-tokens 2000 --json
# With token budget for LLM context management
actionbook --block-images --rewrite-urls browser fetch "<url>" --format text --max-tokens 4000 --jsonFor interactive workflows (forms, clicks), fall back to multi-step:
actionbook browser open "<url>"
actionbook browser wait-idle # MANDATORY: wait for network
actionbook browser text # Full page text (fallback)
actionbook browser text "<selector>" # Use Actionbook selector if indexedIf page content seems incomplete, debug:
# Check for JS errors that might block rendering
actionbook browser console --level error
# Check if a specific element exists
actionbook browser wait-fn "document.querySelector('.content')" --timeout 5000
# Inspect element properties
actionbook browser info ".content"For arXiv papers, try sources in this order:
# 1. arXiv abstract (most reliable) — use fetch
actionbook --block-images browser fetch "https://arxiv.org/abs/<arxiv_id>" --format text --json
# 2. HuggingFace papers page
actionbook --block-images browser fetch "https://huggingface.co/papers/<arxiv_id>" --format text --json
# 3. ar5iv HTML (structured, but fails on new papers) — use --lite for static HTML
actionbook browser fetch "https://ar5iv.org/html/<arxiv_id>" --format text --lite --json
# NOTE: if content too short, ar5iv didn't render. Fall back.
# 4. GitHub repo (from search results) — use fetch
actionbook --block-images browser fetch "<github_repo_url>" --format text --jsonFor protected sites (Cloudflare, bot detection) — use interactive mode with stealth:
actionbook --stealth --block-images --auto-dismiss-dialogs --rewrite-urls browser open "<protected_url>"
actionbook browser wait-idle
actionbook browser textFor mobile-only content:
actionbook browser emulate iphone-14
actionbook browser open "<url>"
actionbook browser wait-idle
actionbook browser textFor Google Scholar (indexed by Actionbook):
actionbook browser open "https://scholar.google.com"
actionbook browser wait-idle
actionbook browser click "#gs_hdr_tsi"
actionbook browser type "#gs_hdr_tsi" "<query>"
actionbook browser click "#gs_hdr_tsb"
actionbook browser wait-idle
actionbook browser text "#gs_res"For unindexed sites, use snapshot to discover structure:
actionbook --block-images browser fetch "<url>" --format snapshot --max-tokens 800 --jsonOrganize collected information into a coherent report:
Write a JSON file following the @actionbookdev/json-ui schema. Use the Write tool.
Output path: ./output/<topic-slug>.json (or user-specified --output path)
CRITICAL: You MUST try ALL fallback methods before giving up. Do NOT stop at the first failure.
IMPORTANT: Always use ABSOLUTE paths for JSON_FILE and HTML_FILE.
Try each method one by one until one succeeds:
# Method 1: Monorepo absolute path (most reliable if inside actionbook project)
node "$(git rev-parse --show-toplevel)/packages/json-ui/dist/cli.js" render /absolute/path/to/report.json -o /absolute/path/to/report.html
# Method 2: Global install (if user ran: cd packages/json-ui && npm link)
json-ui render /absolute/path/to/report.json -o /absolute/path/to/report.html
# Method 3: npx (if published to npm)
npx @actionbookdev/json-ui render /absolute/path/to/report.json -o /absolute/path/to/report.htmlNEVER give up silently. If all methods fail, tell the user:
<path>cd <actionbook-repo>/packages/json-ui && npm link# macOS
open <report.html>
# Linux
xdg-open <report.html>Always close the browser when done:
actionbook browser closeIntelligent error recovery using advanced browser capabilities:
# 1. Open page
actionbook browser open "<url>"
actionbook browser wait-idle --timeout 15000
# 2. Check for JS errors
actionbook browser console --level error
# If errors found → page is broken, skip to next source
# 3. Check if content rendered
actionbook browser wait-fn "document.body.innerText.length > 100" --timeout 5000
# If timeout → content didn't render, try fallback# 1. Use snapshot to discover actual page structure
actionbook browser snapshot --filter interactive --max-tokens 800
# 2. Or inspect a specific area
actionbook browser info "<parent_selector>"
# Returns: suggested selectors, visibility, tag info
# 3. Adjust selector and retry# 1. If initial load returns CAPTCHA or access denied:
actionbook browser close
# 2. Reopen with stealth
actionbook --stealth --no-animations --auto-dismiss-dialogs browser open "<url>"
actionbook browser wait-idle
# 3. If still blocked, rotate fingerprint
actionbook browser fingerprint rotate --os windows
actionbook browser open "<url>"
actionbook browser wait-idle# 1. Wait for network
actionbook browser wait-idle --idle-time 1000 --timeout 15000
# 2. Wait for specific element
actionbook browser wait-fn "document.querySelector('.results')" --timeout 10000
# 3. If still empty, check console
actionbook browser console --level error
# 4. Try clicking a loading trigger
actionbook browser snapshot --filter interactive --max-tokens 300
# Look for "Load More", "Show Results", etc.| Error | Recovery Strategy |
|---|---|
| Browser fails to open | actionbook browser status, retry + check console --level error |
| Page load timeout | wait-idle --timeout 15000, then console --level error to diagnose |
| URL returns 404 | wait-fn "!document.title.includes('404')" to detect fast. Skip immediately, do NOT retry. Use Google snippet text as backup data. |
| arXiv form submission fails | Fall back to URL-based search: arxiv.org/search/?query=...&searchtype=all |
| ar5iv content truncated | Fall back to arxiv abstract + wait-fn "document.body.innerText.length > 5000" to verify |
| Selector not found | snapshot --filter interactive to discover actual structure |
| Dynamic content missing | wait-idle + wait-fn for specific conditions |
| Alert popup blocking | --auto-dismiss-dialogs prevents this entirely |
| Anti-bot detection | --stealth + fingerprint rotate |
| Slow media-heavy page | --block-images or --block-media for 2-5x speedup |
| CSS animation interference | --no-animations freezes all transitions |
| json-ui render crash | Check MetricsGrid — suffix/value must be plain strings |
npx json-ui 404 | Try all 3 methods (monorepo, global, npx) |
| No search results | Start broad (50+ results), then narrow. Use 4+ query angles. |
IMPORTANT: Always run actionbook browser close before finishing, even on errors.
Before finalizing research, verify you used these capabilities:
| Feature | When to Use | Check |
|---|---|---|
browser fetch | Read-only page extraction (preferred over open+wait+text) | Use for most page reads |
--lite | Static pages (Wikipedia, docs, blogs) — skip browser entirely | Add to fetch for static sites |
--rewrite-urls | Always (avoids anti-bot on x.com, reddit) | Set in initial browser launch |
--wait-hint | Domain-aware wait tuning (fast/slow/heavy) | Use with fetch or manual flow |
--session-tag | Multi-step operations needing log correlation | Set for debugging sessions |
wait-idle | After EVERY open/goto/click that triggers navigation | Must be used on every page |
--block-images | Always (research doesn't need images) | Set in initial browser launch |
--auto-dismiss-dialogs | Always (prevents blocking) | Set in initial browser launch |
--no-animations | Always (stable snapshots) | Set in initial browser launch |
wait-fn | When content loads asynchronously after network settles | Use on SPAs, dynamic pages |
console --level error | When page content seems incomplete or broken | Use for debugging |
batch | When filling multi-step forms (arXiv, Google Scholar) | Replaces 5+ sequential commands |
snapshot --filter interactive | When discovering unknown page structure | Use on unindexed sites |
info <selector> | When a click/type doesn't work as expected | Debug element visibility |
--stealth | When site returns CAPTCHA or access denied | Add on retry |
Common mistakes to avoid:
open → wait-idle → text → close when browser fetch does it in one command--lite for static pages (Wikipedia, docs, blogs) — wastes 5-10s on browser startup--rewrite-urls — x.com and reddit.com have aggressive anti-bot that blocks scrapingwait-idle after navigation in interactive mode (content appears empty)batch for form interactions (slow, unreliable)IMPORTANT: Always include BrandHeader and BrandFooter.
{
"type": "Report",
"props": { "theme": "auto" },
"children": [
{
"type": "BrandHeader",
"props": {
"badge": "Deep Research Report",
"poweredBy": "Actionbook"
}
},
{
"type": "Section",
"props": { "title": "Overview", "icon": "paper" },
"children": [
{
"type": "Prose",
"props": {
"content": "Overview of the topic..."
}
}
]
},
{
"type": "Section",
"props": { "title": "Key Findings", "icon": "star" },
"children": [
{
"type": "ContributionList",
"props": {
"items": [
{
"badge": "Finding",
"title": "...",
"description": "..."
}
]
}
}
]
},
{
"type": "Section",
"props": { "title": "Detailed Analysis", "icon": "bulb" },
"children": [
{
"type": "Prose",
"props": { "content": "..." }
}
]
},
{
"type": "Section",
"props": { "title": "Key Metrics", "icon": "chart" },
"children": [
{
"type": "MetricsGrid",
"props": { "metrics": [], "cols": 3 }
}
]
},
{
"type": "Section",
"props": { "title": "Sources", "icon": "link" },
"children": [
{
"type": "LinkGroup",
"props": { "links": [] }
}
]
},
{
"type": "BrandFooter",
"props": {
"timestamp": "YYYY-MM-DDTHH:MM:SSZ",
"attribution": "Powered by Actionbook",
"disclaimer": "This report was generated by AI using web sources. Verify critical information independently."
}
}
]
}When analyzing academic papers, use a richer template with:
PaperHeader (title, arxivId, date, categories)AuthorList (authors with affiliations)Abstract (with keyword highlights)ContributionList (key contributions)MethodOverview (step-by-step method)ResultsTable (experimental results)Formula (key equations, LaTeX)Figure (paper figures from ar5iv)| Component | Use For | Key Props |
|---|---|---|
BrandHeader | Report header | badge, poweredBy |
PaperHeader | Paper metadata | title, arxivId, date, categories |
AuthorList | Authors | authors: [{name, affiliation}], maxVisible |
Section | Major section | title, icon (paper/star/bulb/chart/code/link/info/warning) |
Prose | Rich text | content (supports bold, italic, code, lists) |
Abstract | Abstract text | text, highlights: ["keyword"] |
ContributionList | Numbered findings | items: [{badge, title, description}] |
MethodOverview | Step-by-step | steps: [{step, title, description}] |
MetricsGrid | Key stats | metrics: [{label, value, trend, suffix}], cols |
ResultsTable | Data table | columns, rows, highlights: [{row, col}] |
Table | Generic table | columns: [{key, label}], rows, striped, compact |
Callout | Info/tip/warning | type (info/tip/warning/important/note), title, content |
Highlight | Blockquote | type (quote/important/warning/code), text, source |
KeyPoint | Key finding card | icon, title, description, variant |
CodeBlock | Code snippet | code, language, title, showLineNumbers |
Formula | LaTeX equation | latex, block, label |
Figure | Image(s) | images: [{src, alt, width}], label, caption |
Image | Single image | src, alt, caption, width |
DefinitionList | Term/definition | items: [{term, definition}] |
LinkGroup | Source links | links: [{href, label, icon}] |
Grid | Grid layout | cols, children |
Card | Card container | padding (sm/md/lg), shadow |
TagList | Tags | tags: [{label, color, href}] |
BrandFooter | Footer | timestamp, attribution, disclaimer |
| Pitfall | Symptom | Fix |
|---|---|---|
MetricsGrid.suffix as object | text.replace is not a function | suffix must be a plain string |
MetricsGrid.value as number | Render error | value must be a string (e.g., "58.5" not 58.5) |
Missing BrandHeader/BrandFooter | Report looks broken | Always include both |
Table row values as object | [object Object] in cells | Row cell values must be plain strings |
| Very long Prose content | Truncated render | Split into multiple Prose blocks or use subsections |
All text fields should use plain English strings.
{ "title": "Key Findings" }Note: MetricsGrid props value and suffix, and Table row cell values must always be plain strings.
ar5iv.org HTML (preferred for reading, but often incomplete for papers < 3 months old):
| Element | Selector | Reliability | Fallback |
|---|---|---|---|
| Title | h1.ltx_title_document | High | div.ltx_abstract |
| Authors | div.ltx_authors | High | — |
| Abstract | div.ltx_abstract | High | — |
| Full article | article | Medium | Use when section selectors fail |
| Sections | section.ltx_section | Low on new papers | article |
| Figures | figure.ltx_figure | Medium | — |
| Tables | table.ltx_tabular | Medium | — |
Recommended approach: Use wait-idle + wait-fn to verify ar5iv content loaded:
actionbook browser open "https://ar5iv.org/html/<arxiv_id>"
actionbook browser wait-idle --timeout 15000
actionbook browser wait-fn "document.body.innerText.length > 5000" --timeout 10000
# If wait-fn times out → content didn't render, fall back to other sources| Priority | Source | What you get | Reliability |
|---|---|---|---|
| 1 | arxiv.org/abs/<id> | Abstract, metadata, submission history | Very high |
| 2 | huggingface.co/papers/<id> | Abstract, community, related models | Very high |
| 3 | GitHub repo | README, code, model zoo | High |
| 4 | HuggingFace model card | Training recipe, benchmarks | High |
| 5 | ar5iv.org/html/<id> | Full paper HTML | Medium |
| 6 | Google Scholar / Semantic Scholar | Citations, related work | Medium |
scholar.google.com) — Actionbook indexedsemanticscholar.org)paperswithcode.com)© actionbook, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/active-research of actionbook/actionbook.
Open the folder on GitHubat commit 0e31254
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in actionbook/actionbook, which our catalogue first saw on October 7, 2026.
Active Research 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 |
|---|---|---|---|---|---|---|
| Active Research this skillactionbook/actionbook | 1.6k | 1 repos | ~8.2k | Automated safety check: Pass | Apache-2.0 | |
| Jev Socialsocai-io/jev-social | 154 | 2 repos | ~1.5k | Automated safety check: Pass | MIT | |
| Deep Researchcoreyhaines31/makerskills | 844 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Web ResearchJuncai22/spring-ai-agent-learning | 123 | 3 repos | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Argo Search and Verificationtaxueseek/argo | 184 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Exa Searchmajiayu000/claude-skill-registry | 666 | 5 repos | ~856 | Automated safety check: Pass | MIT |
socai-io/jev-social
Run browser-grounded, read-only social research through Jev Social when a user wants posts, profiles, comments, video evidence, or a source-linked report from Instagram, TikTok, or LinkedIn and the…
coreyhaines31/makerskills
When you want multi-source, multi-step research on a topic — competitor research before a sales call, market research for a new business idea, positioning angles, due diligence on a partnership or…
Juncai22/spring-ai-agent-learning
A skill your agent uses for requests related to web research; it provides a structured approach to conducting comprehensive web research
taxueseek/argo
Unified web search, page fetching and evidence checking across hundreds of sources, with result verification, a research-dossier mode and vertical search engines.
majiayu000/claude-skill-registry
Neural search via Exa MCP for web, code, and company research.
Hacker-Valley-Media/Interceptor
Deep web-research methodology for the interceptor browser surface — investigate a topic the way researchers, intelligence analysts, investigative journalists, private investigators, and OSINT…
actionbook/actionbook
Extract structured data from websites and produce an executable Playwright script plus extracted data.
actionbook/actionbook
Activate when the user needs to interact with any website — browser automation, web scraping, screenshots, form filling, UI testing, monitoring, or building AI agents.
actionbook/actionbook
Run browser-based web tests against websites using Actionbook CLI.
actionbook/actionbook
Browser action engine. An agent skill from actionbook/actionbook.
actionbook/actionbook
View, search, and download academic papers from arXiv. An agent skill from actionbook/actionbook.
actionbook/actionbook
CRITICAL: Use for json-ui component rendering and development.
Deep research and analysis tool. An agent skill from actionbook/actionbook. Active Research is an agent skill from actionbook/actionbook. Deep research and analysis tool.
Active Research fits situations like: user asks to research; generate a report on any subject.
Run `npx skills add actionbook/actionbook --skill active-research -a claude-code`. Or copy the skill folder (skills/active-research in actionbook/actionbook) into .claude/skills/active-research in your project. Claude Code loads it when a task matches its description.
Run `npx skills add actionbook/actionbook --skill active-research -a codex`. Or copy the skill folder (skills/active-research in actionbook/actionbook) into .agents/skills/active-research 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 actionbook/actionbook --skill active-research -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/active-research, .gemini/skills/active-research, .github/skills/active-research and .opencode/skills/active-research in your project.
Going by SKILL.md and its folder, Active Research needs the command-line tools its instructions call (npx, python, node, git and npm). Our summary lists: Python 3.
SKILL.md names 6 domains. In commands or code: arxiv.org, ar5iv.org, google.com, bing.com, huggingface.co and scholar.google.com; the agent is likely to contact these when it follows the instructions. 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. Review the folder before installing.
Active Research is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 8.2k tokens (SKILL.md is roughly 33k 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 Active Research: Jev Social (socai-io/jev-social, 154 stars), Deep Research (coreyhaines31/makerskills, 844 stars), Web Research (Juncai22/spring-ai-agent-learning, 123 stars) and Argo Search and Verification (taxueseek/argo, 184 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
actionbook (a GitHub organization) maintains it in actionbook/actionbook, which has 1,609 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on September 8, 2026.
Source: actionbook/actionbook on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.