Web Search Summary
Use this when you need short summaries of the top pages, not full page content.
If you need fetched Markdown as the main artifact, use web-search.
Search engine selection
- If
PICLAW_SEARX_URLis set or--searx-urlis passed, the script uses SearXNG. - Otherwise, it falls back to DuckDuckGo HTML search (no API key required).
Examples
Run a summarised search:
bun /workspace/.pi/skills/web-search-summary/web-search-summary.ts --query "your query"
Adjust fetch depth or summary length:
bun /workspace/.pi/skills/web-search-summary/web-search-summary.ts --query "your query" --fetch-limit 3 --max-sentences 4 --max-chars 800
Output shape
The script prints JSON like:
{
"query": "...",
"searxUrl": "http://.../search",
"limit": 5,
"fetch": true,
"maxSentences": 3,
"maxChars": 600,
"results": [
{
"title": "...",
"url": "https://...",
"content": "fetched markdown or original snippet",
"summary": "short sentence-level digest"
}
]
}
summaryis only added for fetched items.contentcontains converted Markdown when fetch succeeds.
Failure behaviour
- If the search request fails, the script exits non-zero.
- If page fetch fails for an individual result, the search still succeeds and that item gets
summary: "Failed to fetch: ..."while other results continue. - Set
--fetch falseto skip page retrieval entirely.
Options
--query/--q— required search query--limit— number of search results to return (default5)--fetch— set tofalseto skip page fetches (defaulttrue)--fetch-limit— how many results to fetch and convert (default2)--searx-url— override the SearXNG endpoint (env:PICLAW_SEARX_URL; falls back to DuckDuckGo if unset)--timeout— fetch timeout in milliseconds (default15000)--max-sentences— summary sentence limit (default3)--max-chars— summary character limit (default600)
Notes
- Summaries are heuristic first-sentence digests and may need human refinement.
- HTML conversion uses
turndown+linkedomand prefers<article>,<main>, or[role='main'].