@toninho09/duckduckgo-search
Pi coding agent skill: web search and webpage content extraction via DuckDuckGo — no API key, zero dependencies.
Package details
Install @toninho09/duckduckgo-search from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@toninho09/duckduckgo-search- Package
@toninho09/duckduckgo-search- Version
1.0.2- Published
- Aug 17, 2026
- Downloads
- 353/mo · 353/wk
- Author
- toninho09
- License
- MIT
- Types
- skill
- Size
- 19.3 KB
- Dependencies
- 0 dependencies · 0 peers
Pi manifest JSON
{
"skills": [
"./skills"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
DuckDuckGo Search (pi skill)
A pi coding agent skill for web search and webpage content extraction via DuckDuckGo's HTML endpoint. No API key required. Zero dependencies — plain Node.js.
JS port of duckduckgo-mcp-server.
Install
pi install npm:@toninho09/duckduckgo-search
Requires Node.js 18+. Uses the system curl only as a fallback when DuckDuckGo blocks the default HTTP client.
Usage
Once installed, the agent can use two scripts from the duckduckgo-search skill.
Web search
./scripts/search.js "query" # Basic search (10 results)
./scripts/search.js "query" -n 5 # Limit results
./scripts/search.js "query" --region br-pt # Region/language (e.g. us-en, br-pt, jp-ja)
./scripts/search.js "query" --safe strict # SafeSearch: strict | moderate | off
Output: numbered list with title, URL, and snippet for each result.
Fetch page content
./scripts/content.js https://example.com # Extract page text (first 8000 chars)
./scripts/content.js https://example.com --start 8000 # Next page of a long document
./scripts/content.js https://example.com --max 4000 # Shorter chunk
Output: page title and cleaned text, ending with a [Content info: ...] footer describing character offsets. Handles HTML, plain text, JSON, and XML; respects page encodings (charset header and <meta> sniffing).
Configuration (environment variables)
| Variable | Default | Description |
|---|---|---|
DDG_SAFE_SEARCH |
moderate |
Default SafeSearch mode (strict/moderate/off) |
DDG_REGION |
(none) | Default region code (e.g. br-pt) |
DDG_ALLOW_PRIVATE_URLS |
off | Set 1 to allow fetching private/internal URLs |
Notes
- Keep it under ~30 searches per minute; DuckDuckGo rate-limits abusive clients. If a search returns a block message, wait a few minutes and retry.
content.jsrefuses URLs that resolve to loopback/private/link-local/metadata addresses (SSRF guard, covering IPv4, IPv6, and alternate IP notations) and re-validates every redirect hop.