Unified real-time search engine skill for AI agents. Supports general web search, vertical domain search, parallel batch search, and full-page content extraction. [IMPORTANT!]
$ npx -y skills add anysearch-ai/anysearch-skill --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
Repo: anysearch-ai/anysearch-skill
What's inside
English | ็ฎไฝไธญๆ
Unified real-time search engine skill for AI agents. Supports general web search, vertical domain search, parallel batch search, and full-page content extraction.
[IMPORTANT!] Registration instructions can be found in this section: ### Register for an API Key (Recommended)
Get started in 30 seconds: Register with just an email address. The AI agent will complete the whole process automatically, no verification code required.
Jump to registration steps โ
If your agent platform supports a skill marketplace/store, search for anysearch and install from there. Otherwise, download and install manually:
# Download a pinned release (recommended). Replace v3.0.1 with the latest tag
# from https://github.com/anysearch-ai/anysearch-skill/releases
curl -L -o anysearch-skill.zip https://github.com/anysearch-ai/anysearch-skill/archive/refs/tags/v3.0.1.zip
# or: wget -O anysearch-skill.zip https://github.com/anysearch-ai/anysearch-skill/archive/refs/tags/v3.0.1.zip
# (For the latest unreleased changes, use .../archive/refs/heads/main.zip instead.)
# Unzip โ creates a directory named anysearch-skill-<ref>, e.g. anysearch-skill-3.0.1
unzip anysearch-skill.zip
# Move it to your agent's skill directory, renaming it to "anysearch".
# Adjust the source directory name to match the ref you downloaded.
# Claude Code: mv anysearch-skill-3.0.1 ~/.claude/skills/anysearch
# OpenCode: mv anysearch-skill-3.0.1 ~/.config/opencode/skills/anysearch
# Cursor/Windsurf: mv anysearch-skill-3.0.1 <project>/.skills/anysearch
# Generic: mv anysearch-skill-3.0.1 <your_agent_skill_dir>/anysearch
# Shared agents: mv anysearch-skill-3.0.1 ~/.agents/skills/anysearch
~/.agents/skills/ is a useful shared install location when multiple AI tools read from the same skill directory, including Codex, Cursor, and OpenClaw personal agent skills.
An API key is optional but strongly recommended. Without a key, you can still use all search features via anonymous access, but with lower rate limits and quota.
The agent can register the user and obtain an API key in a single call โ no verification code, no manual signup. Ask the user for a real email address: it becomes the account username, and a randomly generated password is emailed to it.
curl -s -X POST "https://api.anysearch.com/v1/auth/email/register" \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com"}'
Success response (code: 0) returns the account info and a one-time plaintext API key:
{
"code": 0,
"message": "success",
"data": {
"username": "you@example.com",
"email": "you@example.com",
"login_url": "https://www.anysearch.com/login",
"api_key": {
"id": "key_xxxxxxxx",
"key": "as_sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"key_prefix": "as_sk_xxxxxx...",
"name": "default",
"rate_limit": 100,
"quota_limit": 0,
"expires_at": null,
"created_at": "2026-06-23T10:23:00Z"
}
}
}
On success the agent MUST:
data.api_key.key to .env as ANYSEARCH_API_KEY=<key> โ it is shown only once (it can also be retrieved later from the dashboard).login_url, and that a random password has been emailed to that address.Error handling (always code: -1 on error; branch on the message string):
| message | what to do |
|---|---|
Invalid email address. | ask the user to re-enter the email |
email_already_registered | email is taken โ tell the user to sign in at login_url; do not retry |
contains Rate limited | read retry seconds from message (e.g. "Rate limited, retry after 300 seconds."), wait, then retry |
starts with Key creation failed. | account created but key failed โ extract the email and URL from the message ("Key creation failed. Your account <email> was created; sign in at <url>.") and tell the user to sign in there to create a key manually |
Internal server error. | retry later or fall back to anonymous |
The email must be real and reachable โ the password is delivered there. There is no verification code in this flow; the agent only ever asks for an email. Registration and anonymous use are mutually exclusive; once the user picks one, don't switch mid-flow.
Copy the example env file and fill in your key:
cp .env.example .env
# Edit .env and set: ANYSEARCH_API_KEY=<your_api_key_here>
Or set the environment variable directly:
export ANYSEARCH_API_KEY=<your_api_key_here> # Linux/macOS
set ANYSEARCH_API_KEY=<your_api_key_here> # Windows CMD
$env:ANYSEARCH_API_KEY="<your_api_key_here>" # Windows PowerShell
Visit https://anysearch.com/console/api-keys to sign up and create a free API key.
Key priority order: --api_key CLI flag > .env file > environment variable > anonymous
After installation, probe the platform and run the entry test:
Run these checks in order. The first success determines the active CLI:
# Check Python (recommended)
python --version # Need >= 3.6, requires `requests` library
python3 --version # Need >= 3.6, requires `requests` library
# Check Node.js (alternative)
node --version # Need >= 12, no external dependencies
# Check Shell (fallback)
# Windows: PowerShell 5.1+ / Linux/macOS: bash 3.2+ (also requires jq and curl)
Priority: Python > Node.js > Shell
Important: do not assume python exists. On many macOS systems, the correct executable is python3. Check both python and python3; if either works, Python is available.
Run the doc command with each available runtime to verify the skill works, and observe which runs without errors or warnings:
# Python
python <skill_dir>/scripts/anysearch_cli.py doc
# Python 3 fallback (common on macOS)
python3 <skill_dir>/scripts/anysearch_cli.py doc
# Node.js (if available)
node <skill_dir>/scripts/anysearch_cli.js doc
# PowerShell (Windows)
powershell -ExecutionPolicy Bypass -File <skill_dir>/scripts/anysearch_cli.ps1 doc
# Bash (Linux/macOS)
bash <skill_dir>/scripts/anysearch_cli.sh doc
For each runtime, record whether the command succeeded and any errors/warnings encountered. The runtime that completes without errors and produces the cleanest output is the recommended runtime for this environment.
Based on the entry test results, write the recommended runtime to <skill_dir>/runtime.conf:
echo "Runtime: <RUNTIME>" > <skill_dir>/runtime.conf
echo "Command: <COMMAND>" >> <skill_dir>/runtime.conf
Example for Python:
echo "Runtime: Python" > <skill_dir>/runtime.conf
echo "Command: python <skill_dir>/scripts/anysearch_cli.py" >> <skill_dir>/runtime.conf
Example for Python 3:
echo "Runtime: Python" > <skill_dir>/runtime.conf
echo "Command: python3 <skill_dir>/scripts/anysearch_cli.py" >> <skill_dir>/runtime.conf
Example for Node.js:
echo "Runtime: Node.js" > <skill_dir>/runtime.conf
echo "Command: node <skill_dir>/scripts/anysearch_cli.js" >> <skill_dir>/runtime.conf
Example for PowerShell:
echo "Runtime: PowerShell" > <skill_dir>/runtime.conf
echo "Command: powershell -ExecutionPolicy Bypass -File <skill_dir>/scripts/anysearch_cli.ps1" >> <skill_dir>/runtime.conf
Example for Bash:
echo "Runtime: Bash" > <skill_dir>/runtime.conf
echo "Command: bash <skill_dir>/scripts/anysearch_cli.sh" >> <skill_dir>/runtime.conf
Important: Runtime preferences are stored in runtime.conf, NOT in SKILL.md. The agent reads runtime.conf on skill load to determine the active CLI. If the file is missing or corrupted, the agent falls back to the Platform Detection procedure in SKILL.md. If runtime.conf already exists, replace it instead of appending.
After runtime.conf exists, agents should use the stored Command directly for routine calls instead of running doc before every search. For example, if runtime.conf contains Command: python3 <skill_dir>/scripts/anysearch_cli.py, use:
python3 <skill_dir>/scripts/anysearch_cli.py search "query" --max_results 5
python3 <skill_dir>/scripts/anysearch_cli.py batch_search --queries '[{"query":"q1","max_results":5},{"query":"q2","max_results":5}]'
python3 <skill_dir>/scripts/anysearch_cli.py extract "https://example.com/page"
python3 <skill_dir>/scripts/anysearch_cli.py extract --url "https://example.com/page"
extract output is already Markdown. Do not pass --format markdown, --format json, or --markdown; the extract command only accepts the URL positional argument or --url/-u. If a subcommand argument is unclear or fails, run <command> <subcommand> --help for that subcommand rather than the full doc command.
python <skill_dir>/scripts/anysearch_cli.py search "hello world" --max_results 1
If your system does not provide python, use:
python3 <skill_dir>/scripts/anysearch_cli.py search "hello world" --max_results 1
A successful JSON response confirms the API connection is working.
anysearch-skill/ # renamed to "anysearch" on install (see above)
โโโ .env.example # API key configuration template
โโโ .env # Your API key (gitignored; create from .env.example)
โโโ runtime.conf.example # Runtime configuration template
โโโ runtime.conf # Detected runtime preferences (gitignored; created at install)
โโโ SKILL.md # Skill definition for AI agents
โโโ README.md # This file
โโโ SECURITY.md # Security policy / vulnerability reporting
โโโ scripts/
โโโ anysearch_cli.py # Python CLI
โโโ anysearch_cli.js # Node.js CLI
โโโ anysearch_cli.ps1 # PowerShell CLI
โโโ anysearch_cli.sh # Bash CLI
โโโ generate.py # Regenerates the shared blocks in the 4 CLIs
โโโ shared/ # Single source of truth read by the CLIs
โโโ constants.json # Domain list + endpoint
โโโ doc_spec.md # AI-facing interface spec (rendered by `doc`)
.env.example
.github/
workflows/
ci.yml
.gitignore
LICENSE
NOTICE
README_zh.md
README.md
requirements.txt
runtime.conf.example
scripts/
anysearch_cli.js
anysearch_cli.ps1
anysearch_cli.py
anysearch_cli.sh
generate.py
shared/
constants.json
doc_spec.md
SECURITY.md
SKILL.mdFAQ
anysearch-skill is a Claude Code plugin with 1 hand-picked skill for data work, indexed on Flowy. Install it with the command on its page. It includes anysearch-skill. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.