Conversation
Google Ads intelligence workflows via SerpApi's Ads Transparency Center. Covers competitor ad research, creative analysis, platform-specific filtering, timeline analysis, political ad monitoring, and competitive comparison. References the foundational serpapi skill for API details.
🔧 Specialized Skill Review:
|
| Check | Result |
|---|---|
| Skill loads without errors | ✅ |
requires.env (SERPAPI_KEY) present |
✅ |
| No raw API endpoints in specialized SKILL.md | ✅ (properly references foundational) |
| Foundational dependency available | ✅ (bundled in PR) |
.skill bundle present |
✅ |
🧪 Test Results
Discovery Phase (2 agents — NO skill name mentioned in prompts)
D1: "Find high-res wide-format photos of eco-friendly buildings for a presentation"
- ✅ Agent discovered and loaded
serp-google-imagesskill autonomously - ✅ Also loaded foundational
serpapiskill for API details - ✅ Used
google_imagesengine with correct filters:imgsz=l,imgar=w,image_type=photo - ✅ Ran 2 parallel searches for broader coverage
- ✅ Curated 7 results with dimensions, sources, original URLs
- ✅ Added licensing note — follows the specialized skill's presentation format
- Verdict: Used SPECIALIZED workflow (not just foundational) ✅
D2: "Collect reference pics for a cyberpunk neon city mood board — blue/purple tones, transparent backgrounds, organized by style"
- ✅ Agent discovered and loaded
serp-google-imagesskill autonomously - ✅ Ran 7 parallel API searches across color variants (blue, purple, transparent, rain, panoramic, character silhouette)
- ✅ Used advanced filters:
image_color=blue,image_color=purple,image_color=trans,imgsz=l,imgar=w,image_type=photo - ✅ Used
google_images_related_contentengine 3x for "more like this" exploration - ✅ Organized into 6 categories: Cityscapes, Rainy Streets, Street-Level, Illustrations, Transparent PNGs, Related Finds
- ✅ 36 images + 12 related links curated — comprehensive mood board
- ✅ Included color analysis, licensing notes, and suggested further searches
- Verdict: Used SPECIALIZED workflow extensively — best test result ✅
Explicit Phase (3 agents — told to use the skill)
E1: "Search for golden retriever puppies with large/photo/landscape filters, present top 5"
- ✅ Read both specialized + foundational skills
- ✅ Single
google_imagescall withimgsz=l,image_type=photo,imgar=w - ✅ 100 results returned, top 5 presented correctly
- ✅ Included suggested searches
- Verdict: Clean pass ✅
E2: "Reverse image search on Wikimedia ant photo"
⚠️ google_reverse_imageengine returned empty — Wikimedia was returning HTTP 429 (rate-limited)- ✅ Agent diagnosed the issue correctly (checked URL, found 429)
- ✅ Confirmed engine works with accessible URL (iNaturalist copy → identified as "black garden ant")
- ✅ Used creative workaround:
google_imagessearch by species name +google_images_related_content+ Google Knowledge Graph - ✅ Found the exact image, 10 visually similar images, and full species identification
- ✅ Presented in reverse image search format per the skill's instructions
- Verdict: Pass with environmental caveat ✅ (engine works; failure was external rate-limiting)
E3: "Find Creative Commons mountain sunset images, then related content for the best one"
- ✅ Read both skills
- ✅ Used
licenses=clfilter correctly — all 10 results had CC license URLs - ✅ Picked result Add README and COORDINATION.md for builder/reviewer workflow #1 and used
related_content_idto find 10 visually similar images - ✅ Noted that related content engine returns thumbnails/links but not full-res URLs (expected behavior)
- ✅ Curated collection format with license details, suggested searches
- Verdict: Clean pass ✅
🐛 Bug Found
NAMING COLLISION (Foundational + Specialized share same name field)
Both Foundational/serp-google-images/SKILL.md and Specialized/serp-google-images/SKILL.md have:
name: serp-google-imagesOpenClaw deduplicates skills by name. If both are installed, one shadows the other. During testing, I had to manually rename the foundational skill's name field to serpapi so both could coexist.
Suggested Fix:
- Rename the foundational skill's
namefield toserpapi(matching what the specialized skill calls it in its dependency section: "This skill builds on: serpapi") - Or use a different naming convention like
serpapi-google-images-basevsserp-google-images
This is a real deployment issue — without the fix, only one skill loads, and the specialized skill loses its foundational dependency.
📊 Engines Tested
| Engine | Status | Notes |
|---|---|---|
google_images |
✅ Working | 8+ successful calls across all tests |
google_images_light |
⏭️ Not tested | Not exercised in these workflows |
google_images_related_content |
✅ Working | 5+ calls, returns thumbnails/links (no full-res — expected) |
google_reverse_image |
Works with accessible URLs; fails when source blocks Google's fetch |
🔍 Specialized vs Foundational Usage
| Agent | Read Specialized? | Read Foundational? | Used Specialized Workflows? |
|---|---|---|---|
| D1 | ✅ | ✅ | ✅ Multi-search + curated presentation |
| D2 | ✅ | ✅ | ✅ Color filtering + categories + related content |
| E1 | ✅ | ✅ | ✅ Filtered search workflow |
| E2 | ✅ | ✅ | ✅ Reverse image + fallback workflow |
| E3 | ✅ | ✅ | ✅ License filter + related content + curation |
All 5 agents used the specialized skill's workflows rather than falling back to raw foundational API calls. The skill descriptions are effective at triggering the right behavior.
🗂️ Artifacts
No files or reports were created by sub-agents — all output was inline text. No cleanup needed.
📝 Verdict: needs-changes
The skill is functionally excellent — all core workflows work, discovery agents find and use it correctly, the specialized-vs-foundational layering is well-designed. But the naming collision between foundational and specialized skills is a deployment blocker that needs a one-line fix before merge.
What needs to change:
Foundational/serp-google-images/SKILL.md→ changename: serp-google-imagestoname: serpapi(one-line fix)
Once that's fixed, this is a clean merge.
Skill Review: serp-google-imagesCommit: Reason: Duplicate foundational skill — already covered by
|
SerpApi Google Images API skill covering three engines: - google_images: Full image search with filters, shopping, suggested searches - google_images_light: Fast lightweight image search - google_images_related_content: Drill into visually similar images Includes comprehensive filtering (size, color, type, aspect ratio, license, file format, time period), pagination, suggested search chips, and detailed API reference documentation.
- Fix light engine return description: returns images_results[] only, not related_searches[] - Remove source_logo 'full engine only' qualifier — light engine does return it - Update comparison table: related_content_id is reliably returned by both engines - Update api-reference.md to match all corrections
… not ijn - ijn parameter has no effect on google_images_light engine - Light engine uses start= offset parameter for pagination - Updated SKILL.md pagination section with per-engine docs - Updated api-reference.md with light engine pagination details - Updated multi-page collection pattern for both engines - Added note about serpapi_pagination.next as safest approach Fixes reviewer feedback on PR #21 (2nd round)
…ed offsets Light engine pagination offset is not a fixed 100 as previously documented. Reviewer testing confirmed start=100 returns zero results; actual offset is variable. Updated both SKILL.md and api-reference.md to recommend always following serpapi_pagination.next instead of manual offset math.
…images directory The google_images engine is already covered by the foundational serpapi skill. Keeping only the specialized skill which references serpapi for all API details. Re-packaged .skill file with specialized content only.
370b98f to
f500a22
Compare
Fix AppliedIssue: PR included a separate Changes:
The specialized skill was already well-structured — it references Ready for re-test. Labels reset to |
🔧 Skill Test Review:
|
| Phase | Count | Purpose |
|---|---|---|
| Discovery | 2 | Natural prompts describing image tasks — NO mention of skill/API/brand names |
| Explicit | 3 | Directly told to use serp-google-images skill with specific engines |
📋 Phase 1: Discovery Tests
D1 — Mood Board / Visual Curation
Prompt: "I'm putting together a mood board for a branding project — I need to find about 8-10 high-resolution landscape photos of Japanese zen gardens, preferably wide aspect ratio images that would work as website hero banners. I want large images only, nothing small or clipart. Show me what you find with the image dimensions and source URLs."
Result: ✅ PASS
- Discovered the specialized skill? YES — read
serp-google-images/SKILL.mdfirst, thenserpapi/SKILL.md - Used
serpapi.sh google_imageswith correct filters:--imgsz l --imgar w --image_type photo - Presented 10 curated results in the skill's visual curation format
- Included dimensions, aspect ratios, megapixel counts, source URLs
- Added suggested refinements from the API's
suggested_searches - Output quality: Excellent — organized by resolution, noted which images were already at 16:9
D2 — Reverse Image Search + License-Filtered Search
Prompt: "hey so im trying to figure out if this photo someone sent me is real or stolen from somewhere, its a pic of a sunset over santorini greece. the url is https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Camponotus_flavomarginatus_ant.jpg/640px-Camponotus_flavomarginatus_ant.jpg — can u like check where this image shows up online and also find me some similar looking pics of santorini sunsets that are free to use commercially"
Result: ✅ PASS
- Discovered the specialized skill? YES — read
serp-google-images/SKILL.mdfirst, thenserpapi/SKILL.md - Correctly used TWO engines:
google_reverse_image+google_imageswith--licenses ol --imgsz l - Reverse search returned 0 results (Wikimedia rate-limited SerpApi's fetch) — agent recovered gracefully by identifying the image from URL metadata (it's an ant, not Santorini!)
- License-filtered Santorini search returned proper results with source attribution
- Added license disclaimer as the skill recommends
- Output quality: Very good — handled the "gotcha" image cleverly
📋 Phase 2: Explicit Tests
E1 — Filtered Image Search (Brutalist Architecture)
Prompt: Told to use serp-google-images skill, search "brutalist architecture" with large size, wide aspect ratio, photos only.
Result: ✅ PASS
- Read both skill files, used
serpapi.sh google_images --q "brutalist architecture" --imgsz l --imgar w --image_type photo - API returned 100 results (Status: Success, 1.86s)
- Presented top 8 in skill's standard format with titles, sources, dimensions, URLs
- Included suggested searches from the API response
- All filter parameters confirmed in
search_parametersresponse
E2 — Reverse Image Search (Cat)
Prompt: Told to use google_reverse_image engine on a Wikimedia cat image URL.
Result: ✅ PASS
- Used
serpapi.sh google_reverse_image --image_url "..."correctly - ~328M results found, 10
image_resultsreturned - No
knowledge_graphorinline_imagessections returned (this is normal for some images — Google's behavior varies) - Agent properly noted the absence and identified the subject from contextual results
- Followed the reverse image search presentation format from the skill
- Additional verification step: checked for other response keys using Python parsing
E3 — Multi-Engine Workflow (Transparent + CC + Related Content)
Prompt: Told to search "electric vehicles" with transparent background and Creative Commons filter, then use google_images_related_content with a related_content_id from results.
Result: ✅ PASS
- Step 1:
serpapi.sh google_images --q "electric vehicles" --image_color trans --licenses cl→ 100 results - Step 2:
serpapi.sh google_images_related_content --q "electric vehicles" --related_content_id "..."→ 12 related results - Both engines returned successful responses
- Each related result also has its own
related_content_idfor further exploration - Filters applied correctly per the skill's documentation
🔍 Analysis Checklist
| Criteria | Result |
|---|---|
| SKILL.md frontmatter valid (name, description, metadata) | ✅ |
requires.env correctly specifies SERPAPI_KEY |
✅ |
| No raw API endpoints / curl commands in specialized skill | ✅ |
Properly references foundational serpapi skill for API details |
✅ |
| Discovery agents found AND used the specialized skill (not just foundational) | ✅ Both D1 and D2 |
All documented engines work (google_images, google_reverse_image, google_images_related_content) |
✅ |
| Filter parameters work (size, aspect ratio, type, color, license) | ✅ |
| Wrapper script handles all API calls correctly | ✅ |
| Presentation formats match skill documentation | ✅ |
| Error handling graceful (Wikimedia rate limit in D2) | ✅ |
| No files/artifacts left behind by sub-agents | ✅ Clean |
🐛 Issues Found
None. All 5 tests passed. The skill correctly layers specialized image search workflow guidance on top of the foundational SerpApi skill.
Notes (not bugs):
- Reverse image search may return zero results when the image host rate-limits SerpApi's fetch (observed with Wikimedia URLs). This is a SerpApi/upstream limitation, not a skill issue. The skill correctly documents what the API can return.
knowledge_graphandinline_imagesare not always present in reverse image results — this matches Google's actual behavior and the skill doesn't promise they'll always be there.
🏷️ Verdict: tested-pass
Zero bugs found. All engines work correctly. Discovery agents successfully find and use the specialized skill's workflow guidance (not just the foundational serpapi engine). The skill adds genuine value: filter parameter tables, workflow patterns, presentation formats, and multi-engine coordination (search → related content exploration). Ready to merge.
serp-google-images
Specialized skill for Google Images search workflows via SerpApi.
What it does
Engines covered
google_images— full image search with shopping and suggested searchesgoogle_images_light— faster lightweight variantgoogle_images_related_content— visually similar imagesgoogle_reverse_image— reverse image lookup by URLDependencies
Builds on the foundational serpapi skill for all API details and wrapper script.