gemini-websearch
Gemini Web Search
Advanced web search using Gemini CLI in headless mode with tool restriction. All searches use Gemini's google_web_search tool.
Quick Start
Basic search:
python .claude/skills/gemini-websearch/scripts/search.py "search for React 19 features"
With validation:
python .claude/skills/gemini-websearch/scripts/search.py "search for TypeScript 5.4 new features" --validate
Batch mode:
python .claude/skills/gemini-websearch/scripts/search.py queries.txt --batch --output results/
View analytics:
python .claude/skills/gemini-websearch/scripts/search.py --show-analytics
Search Workflow
Copy this checklist for research tasks:
Research Progress:
- [ ] Step 1: Check cache (1-hour TTL)
- [ ] Step 2: Formulate focused search query (prefix with "search ")
- [ ] Step 3: Execute headless Gemini search
- [ ] Step 4: Parse JSON and extract response content
- [ ] Step 5: Validate quality and relevance
- [ ] Step 6: Review search success and content quality
- [ ] Step 7: Log analytics
Step 1: Check cache MD5-keyed cache with 1-hour TTL. Automatic cleanup on expiry. Tracks cache hit rates.
Step 2: Formulate query Keep queries specific and focused. Break complex questions into multiple targeted searches. Important: Always prefix queries with "search " for best results (e.g., "search for the React 19 best practice").
Step 3: Execute headless search
gemini -p "/tool:google_web_search query:\"your query\" raw:true" \
--yolo --output-format json
The --yolo flag auto-approves tool usage. Returns structured JSON with comprehensive search results.
Step 4: Parse response Extract search results and metadata from JSON output. Note: Gemini CLI doesn't provide citations/grounding metadata in JSON format.
Step 5: Validate results Score based on:
- Content completeness and length
- Search tool success verification
- Response latency (bonus for faster searches)
- Relevance to original query
False positive detection prevents low-quality results. Note: Gemini CLI doesn't provide citations, so validation focuses on content quality metrics.
Step 6: Review sources Verify that the search tool was called successfully and assess content quality directly from the response.
Step 7: Log analytics Track cache hits, latency, quality scores, validation failures, and query patterns.
Advanced Usage
For detailed examples see examples.md
Batch searches with validation:
python .claude/skills/gemini-websearch/scripts/search.py queries.txt \
--batch \
--output results/ \
--validate \
--min-quality 0.7
Research with retry logic:
python .claude/skills/gemini-websearch/scripts/search.py "complex technical query" \
--validate \
--min-quality 0.7 \
--min-relevance 0.6 \
--retry-on-fail \
--max-retries 2
Disable cache for fresh results:
python .claude/skills/gemini-websearch/scripts/search.py "breaking news topic" --no-cache
Clear cache:
python .claude/skills/gemini-websearch/scripts/search.py --clear-cache
Configuration
Required: Tool Restriction
Create/update .gemini/settings.json to restrict Gemini CLI to only google_web_search:
{
"tools": {
"exclude": [
"file_read",
"file_write",
"file_search",
"file_list",
"web_fetch",
"run_shell_command",
"save_memory",
"code_execution",
"edit_file",
"create_file",
"delete_file",
"list_directory",
"move_file",
"copy_file"
]
}
}
This ensures Gemini ONLY uses the web search tool, not other capabilities.
Optional: Authentication
# Option 1: API key (optional)
export GEMINI_API_KEY="your-api-key"
# Option 2: gcloud authentication
gcloud auth login
# Option 3: Application Default Credentials
gcloud auth application-default login
Environment Variables
export SEARCH_CACHE_DIR=".cache/gemini-searches"
export SEARCH_CACHE_TTL="3600" # 1 hour
export ANALYTICS_LOG="search_analytics.json"
export GEMINI_MODEL="gemini-2.5-flash"
Config File
Optional ~/.gemini-search/config.json:
{
"model": "gemini-2.5-flash",
"cache_enabled": true,
"cache_ttl": 3600,
"validation": {
"enabled": true,
"min_quality": 0.6,
"min_citations": 0,
"min_relevance": 0.5,
"retry_on_fail": true,
"max_retries": 2
},
"analytics": {
"enabled": true,
"log_file": "search_analytics.json",
"track_cache_hits": true,
"track_latency": true,
"track_quality": true
}
}
Command Reference
Single search:
python .claude/skills/gemini-websearch/scripts/search.py "query" [options]
Batch search:
python .claude/skills/gemini-websearch/scripts/search.py queries.txt --batch [options]
Show analytics:
python .claude/skills/gemini-websearch/scripts/search.py --show-analytics
Clear cache:
python .claude/skills/gemini-websearch/scripts/search.py --clear-cache
Options
--model MODEL- Gemini model (default: gemini-2.5-flash)--no-cache- Disable caching--validate- Enable result validation--min-quality FLOAT- Minimum quality score (0-1, default: 0.6)--min-citations INT- Minimum citation count (default: 0, not applicable for Gemini CLI)--min-relevance FLOAT- Minimum relevance score (0-1, default: 0.5)--retry-on-fail- Retry if validation fails--max-retries INT- Maximum retry attempts (default: 2)--output PATH- Output file (single) or directory (batch)--batch- Batch mode: query arg is file path
Best Practices
- Use headless mode for programmatic searches
- Restrict tools in settings.json for security
- Enable caching for repeated/related queries
- Validate critical searches before using results
- Monitor analytics to optimize query patterns
- Use batch mode for multi-query research
- Set quality thresholds based on use case
- Always prefix queries with "search " for optimal results
- Assess content quality directly from response text and metadata
More from d-oit/do-novelist-ai
iterative-refinement
Execute iterative refinement workflows with validation loops until quality criteria are met. Use for test-fix cycles, code quality improvement, performance optimization, or any task requiring repeated action-validate-improve cycles.
11web-search-researcher
Research topics using web search and content fetching to find accurate, current information. Use when you need modern information, official documentation, best practices, technical solutions, or comparisons beyond your training data. Provides systematic web research with strategic searches, content analysis, and synthesized findings.
10frontend-design-system
>
6ux-designer
>
5feature-module-architect
Scaffolds feature modules following feature-based architecture with colocation
5shell-script-quality
Lint and test shell scripts using ShellCheck and BATS. Use when checking bash/sh scripts for errors, writing shell script tests, fixing ShellCheck warnings, setting up CI/CD for shell scripts, or improving bash code quality.
5