Image Search
v1.0.0Visual image search using Google Lens via SerpAPI. Identify objects, landmarks, products, plants, animals, artwork, logos, or any visual entity from an image...
Security Scan
OpenClaw
Suspicious
high confidencePurpose & Capability
Name/description align with the code and declared requirement (SERPAPI_KEY). The included script calls SerpAPI's Google Lens engine and returns visual matches, products, and provenance as described.
Instruction Scope
SKILL.md and the script instruct the agent to auto-upload local image files to third-party image hosts (default freeimage.host; fallback imgbb.com). That means user images are transmitted to external services (freeimage.host and/or SerpAPI) — a privacy/exfiltration surface that is not obvious from 'identify this image' wording. The README and SKILL.md mention these uploads, but the runtime instructions will perform them automatically for local files.
Install Mechanism
No install spec; this is instruction-only plus an included Python script that uses only the stdlib. Nothing is downloaded at install time, and no extra packages are pulled in.
Credentials
The skill declares only SERPAPI_KEY as required (primary credential), which is appropriate for SerpAPI access. However, the script also optionally reads IMGBB_API_KEY to upload images to imgbb if present; that env var is mentioned in README/SKILL.md but is not listed in the declared requires.env metadata (inconsistency). The script also contains a hardcoded public API key for freeimage.host. You should be aware SERPAPI_KEY grants the skill the ability to make queries (and send image URLs) to SerpAPI; any local file will be uploaded to external hosts if used.
Persistence & Privilege
The skill is not always-on and is user-invocable. It does not request system-wide persistence or modify other skills. Autonomous invocation is allowed by default but is not combined here with broad unexpected privileges.
What to consider before installing
This skill appears to implement Google Lens searches via SerpAPI (so SERPAPI_KEY is required) and the included Python script is self-contained. Before installing: (1) Understand that if users provide local images the script will automatically upload them to public image-hosting services (freeimage.host by default, or imgbb if you set IMGBB_API_KEY). That means sensitive images will be transmitted to third parties. (2) The metadata only lists SERPAPI_KEY as required, but the code optionally reads IMGBB_API_KEY — consider whether that undocumented env var is acceptable in your environment. (3) The script contains a hardcoded public API key for freeimage.host; review whether you want that dependency. (4) If you plan to use this skill in production, inspect the included script yourself, restrict usage to non-sensitive images, or run it in an isolated environment. If you need the skill but want tighter control over uploads, modify the script to disable automatic uploads or to require an explicit opt-in before sending local files off-host.Like a lobster shell, security has layers — review code before you run it.
Runtime requirements
🔍 Clawdis
EnvSERPAPI_KEY
Primary envSERPAPI_KEY
latest
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.png
# Refine 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 products
# Find exact matches (where this image appears online)
python3 {baseDir}/scripts/lens_search.py "https://example.com/photo.jpg" --type exact_matches
# Raw JSON output for programmatic use
python3 {baseDir}/scripts/lens_search.py "https://example.com/photo.jpg" --json
# Localized 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](https://...)
## 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:
- Already identified by vision model? If the main model confidently recognizes the entity, skip reverse search.
- Uncertain identification? Run
lens_search.pyto verify. Compare model's guess with Lens results. - Need details beyond identification? First identify with Lens, then
web_searchfor deeper info. - Shopping intent? Use
--type productsto get prices and buy links directly. - 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
- SerpAPI free tier: 100 searches/month. Paid plans from $50/month.
- Local file upload uses freeimage.host (free) or imgbb (needs IMGBB_API_KEY).
- Google Lens results vary by region; use
--countryfor localized results. - Some niche/long-tail entities may not return useful visual matches.
Comments
Loading comments...
