en un clic
brightdata-local-search
Set up and run local web searches using Bright Data SERP API with the unfancy-search pipeline (query expansion, SERP retrieval, RRF reranking).
Menu
Set up and run local web searches using Bright Data SERP API with the unfancy-search pipeline (query expansion, SERP retrieval, RRF reranking).
Fill any PDF locally and place each value precisely in a visual editor. Use when the user wants to fill out a PDF form, enter data into a PDF, complete a tax/insurance/bank form, or position text on a flat/scanned PDF. Handles flat (field-less) PDFs, per-character (comb) fields, and native AcroForm fields; leaves the signature blank for the user to sign.
Automated Android CI/CD pipeline to Google Play — supports TWA, React Native, Flutter, and native Android. Run npx android-cicd to set up keystore generation, GitHub Secrets, and a multi-stage workflow (internal/alpha/beta/production) with auto-bump versionCode.
Use this skill whenever a developer wants to turn an idea into a complete, production-ready, end-to-end system plan BEFORE writing any code. Trigger on 'plan this system', 'design the architecture for', 'help me blueprint', 'deep plan for X', 'break this idea into components', 'expand into action points', 'full implementation plan', or when the user pastes a project idea wanting architecture, components, pipelines, and file-level execution mapped out. Casual phrasing also triggers: 'help me think this through end-to-end', 'plan before coding'. Also covers living-workspace patterns: self-improving knowledge bases, reflection loops with auditor agents, four-agent teams, schema-as-code, wiki health scoring. **Resume triggers**: 'where did we leave off', 'continue this plan', 'resume my blueprint' - rehydrates state from disk via SESSION.md/NEXT.md/decisions/. Web research is mandatory every invocation.
Use when adding a blog to a Next.js + Sanity site, building a blog section from scratch, integrating Sanity CMS for editorial content, or setting up an SEO-optimized article surface. Triggers on phrases like 'add a blog', 'build the blog', 'create blog section', 'set up blog with Sanity', 'integrate Sanity CMS', 'blog architecture', or any new-blog scoping conversation on a Next.js project.
Creates comprehensive handoff documents for seamless AI agent session transfers. Triggered when: (1) user requests handoff/memory/context save, (2) context window approaches capacity, (3) major task milestone completed, (4) work session ending, (5) user says 'save state', 'create handoff', 'I need to pause', 'context is getting full', (6) resuming work with 'load handoff', 'resume from', 'continue where we left off'. Proactively suggests handoffs after substantial work (multiple file edits, complex debugging, architecture decisions). Solves long-running agent context exhaustion by enabling fresh agents to continue with zero ambiguity.
Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.
| name | brightdata-local-search |
| description | Set up and run local web searches using Bright Data SERP API with the unfancy-search pipeline (query expansion, SERP retrieval, RRF reranking). |
Run powerful web searches locally using Bright Data's SERP API. This skill sets up the unfancy-search pipeline — a local search engine with query expansion, multi-engine SERP retrieval, RRF reranking, deduplication, and domain clustering.
Important: This skill uses the LOCAL version only. Do not use the hosted endpoint.
git clone https://github.com/yaronbeen/unfancy-search.git
cd unfancy-search
cp .env.example .env
Edit .env with your credentials:
BRIGHT_DATA_API_TOKEN=your_brightdata_token
BRIGHT_DATA_SERP_ZONE=serp_api1
ANTHROPIC_API_KEY=your_anthropic_key # Optional: enables AI query expansion
Get your Bright Data token from: https://brightdata.com (SERP API section)
Docker (recommended):
docker compose up -d
# Server runs at http://localhost:3000
Node.js:
pnpm install
pnpm dev
# Server runs at http://localhost:3000
All requests go to http://localhost:3000:
| Endpoint | Method | Description |
|---|---|---|
/api/search | POST | Start a search job |
/api/search-status/{jobId} | GET | Poll for results |
/api/baseline | POST | Trigger baseline collection |
/api/baseline-status/{id} | GET | Poll baseline progress |
curl -X POST http://localhost:3000/api/search \
-H "Content-Type: application/json" \
-d '{"query": "your search term"}'
The response returns a jobId.
curl http://localhost:3000/api/search-status/{jobId}
Poll every 3 seconds until status is "done".
| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | required | Search query |
expand | boolean | false | Enable AI query expansion via Claude |
research | boolean | false | Research mode (12 sub-queries for max coverage) |
engines | string[] | all | SERP engines to use |
geo | string | — | Geographic region filter |
count | number | 10 | Max results (up to 10) |
includeDomains | string[] | — | Only include results from these domains |
excludeDomains | string[] | — | Exclude results from these domains |
expand: false): Single query, fastest, no AI costexpand: true): Claude Haiku generates 3 sub-queries for broader coverageresearch: true): 12 sub-queries for maximum coverage# Start search
JOB_ID=$(curl -s -X POST http://localhost:3000/api/search \
-H "Content-Type: application/json" \
-d '{"query": "best practices for API rate limiting"}' | jq -r '.jobId')
# Poll until done
while true; do
RESULT=$(curl -s http://localhost:3000/api/search-status/$JOB_ID)
STATUS=$(echo $RESULT | jq -r '.status')
if [ "$STATUS" = "done" ]; then
echo $RESULT | jq '.results'
break
fi
sleep 3
done
curl -X POST http://localhost:3000/api/search \
-H "Content-Type: application/json" \
-d '{
"query": "kubernetes scaling strategies",
"research": true,
"excludeDomains": ["pinterest.com", "quora.com"]
}'
To give your Claude Code agent search capabilities:
docker compose up -d in the unfancy-search directory)curl or fetch to query http://localhost:3000/api/searchResults include:
| Issue | Solution |
|---|---|
| Server won't start | Verify Docker is running or Node.js 18+ installed |
| No results returned | Check BRIGHT_DATA_API_TOKEN is valid and SERP API zone is active |
| Query expansion not working | Verify ANTHROPIC_API_KEY is set and valid |
| Slow responses | Disable expand mode for faster single-query searches |
| Port 3000 in use | Stop other services or modify the port in docker-compose.yml |