Image Search
by @tobiaslee
Visual image search using Google Lens via SerpAPI. Identify objects, landmarks, products, plants, animals, artwork, logos, or any visual entity from an image...
clawhub install image-searchπ About This Skill
name: image-search description: > Visual image search using Google Lens via SerpAPI. Identify objects, landmarks, products, plants, animals, artwork, logos, or any visual entity from an image. Returns visual matches, entity identification, product info with prices, and related content. Use when: (1) user sends an image and asks "what is this?", (2) user wants to find similar images or products, (3) user wants to identify a landmark/plant/animal/product from a photo, (4) user needs to verify image origin or find higher resolution versions, (5) user asks to find where to buy something shown in an image. Requires SERPAPI_KEY env var. metadata: {"openclaw": {"requires": {"env": ["SERPAPI_KEY"]}, "primaryEnv": "SERPAPI_KEY", "emoji": "π"}}
Image Search (Google Lens)
Identify anything from an image using Google Lens via SerpAPI.
Setup
Requires SERPAPI_KEY environment variable. Get a key at https://serpapi.com/ (100 free searches/month).
No pip dependencies needed β uses only Python stdlib (urllib, json, base64).
Usage
From CLI / Agent (exec tool)
# Search by image URL
python3 {baseDir}/scripts/lens_search.py "https://example.com/photo.jpg"Search by local file (auto-uploads to get a URL)
python3 {baseDir}/scripts/lens_search.py /path/to/image.pngRefine with text query (e.g., find red version of a product)
python3 {baseDir}/scripts/lens_search.py "https://example.com/bag.jpg" --query "red"Product search (returns prices)
python3 {baseDir}/scripts/lens_search.py "https://example.com/sneakers.jpg" --type productsFind exact matches (where this image appears online)
python3 {baseDir}/scripts/lens_search.py "https://example.com/photo.jpg" --type exact_matchesRaw JSON output for programmatic use
python3 {baseDir}/scripts/lens_search.py "https://example.com/photo.jpg" --jsonLocalized results (e.g., Japanese products with Β₯ prices)
python3 {baseDir}/scripts/lens_search.py "https://example.com/laptop.jpg" --type products --country jp
Search Types
| Type | Use Case | Returns |
|------|----------|---------|
| all (default) | General identification | Entity name + visual matches + text |
| visual_matches | Find similar images | Visually similar results with sources |
| exact_matches | Find image origin | Pages containing this exact image |
| products | Shopping / price lookup | Products with prices and buy links |
| about_this_image | Image provenance | Metadata about the image's origin |
Output Format
The script outputs structured markdown:
## Identified Entity
Danny DeVito β link Visual Matches (top 5)
Danny DeVito β Wikipedia (Wikipedia) β
exact match
https://en.wikipedia.org/wiki/Danny_DeVito
...
Use --json for raw SerpAPI response when you need thumbnails, image dimensions, or other metadata.
Agent Decision Guide
When a user sends an image:
1. Already identified by vision model? If the main model confidently recognizes the entity, skip reverse search.
2. Uncertain identification? Run lens_search.py to verify. Compare model's guess with Lens results.
3. Need details beyond identification? First identify with Lens, then web_search for deeper info.
4. Shopping intent? Use --type products to get prices and buy links directly.
5. Local file from user? The script handles local files by auto-uploading to get a searchable URL.
Combining with Other Tools
Typical multi-tool workflow:
1. User sends image β "What building is this?"
2. reverse_image_search β identifies "Cologne Cathedral"
3. web_search("Cologne Cathedral history architecture") β detailed info
4. Compose answer combining visual match + web knowledge
Limitations
--country for localized results.π‘ Examples
From CLI / Agent (exec tool)
# Search by image URL
python3 {baseDir}/scripts/lens_search.py "https://example.com/photo.jpg"Search by local file (auto-uploads to get a URL)
python3 {baseDir}/scripts/lens_search.py /path/to/image.pngRefine with text query (e.g., find red version of a product)
python3 {baseDir}/scripts/lens_search.py "https://example.com/bag.jpg" --query "red"Product search (returns prices)
python3 {baseDir}/scripts/lens_search.py "https://example.com/sneakers.jpg" --type productsFind exact matches (where this image appears online)
python3 {baseDir}/scripts/lens_search.py "https://example.com/photo.jpg" --type exact_matchesRaw JSON output for programmatic use
python3 {baseDir}/scripts/lens_search.py "https://example.com/photo.jpg" --jsonLocalized results (e.g., Japanese products with Β₯ prices)
python3 {baseDir}/scripts/lens_search.py "https://example.com/laptop.jpg" --type products --country jp
βοΈ Configuration
Requires SERPAPI_KEY environment variable. Get a key at https://serpapi.com/ (100 free searches/month).
No pip dependencies needed β uses only Python stdlib (urllib, json, base64).