← Files NimbleARCHIVED FILE
skills/nimble-web-expert/references/recipes.md
6.74 KB · Oct 5, 2026 · 18:08 UTC
---
name: nimble-recipes-reference
description: |
Production-tested nimble commands for common sites. Load for proven extraction patterns.
Contains: any page (markdown default), Amazon product/search, Yelp, Target (network capture),
public APIs/XHR, docs/static pages, LinkedIn jobs, Google search and maps,
research workflow (search→extract), docs site (map→extract), bulk parallel extraction.
---
# Proven recipes — reference
Production-tested extract commands for common sites. Copy, swap the URL/params, present results.
## Any page — markdown (default)
```bash
mkdir -p .nimble
nimble --transform "data.markdown" extract \
--url "https://example.com/any-page" --format markdown > .nimble/page.md
head -100 .nimble/page.md
```
Works for articles, docs, blogs. If empty → add `--render`. Still empty → add `--render --driver vx10-pro`.
---
## Amazon
### Product page (PDP)
```bash
nimble extract:templates run --template amazon_pdp --params '{"asin": "B0CHWRXH8B"}' > .nimble/amazon-pdp.json
python3 -c "import json; d=json.load(open('.nimble/amazon-pdp.json')); p=d['data']['parsing']; print(p.get('product_title'), p.get('web_price'), p.get('average_of_reviews'))"
```
### Search results
```bash
nimble extract:templates run --template amazon_serp --params '{"keyword": "wireless headphones"}' > .nimble/amazon-serp.json
python3 -c "
import json
items = json.load(open('.nimble/amazon-serp.json'))['data']['parsing']
for i in items[:10]:
print(f\"{(i.get('product_name') or '?')[:55]:55s} \${i.get('price','?'):>7} {i.get('asin','')}\")
"
```
### Manual extract (if no template)
> ⚠ CSS selectors may break on Amazon redesigns. Prefer the `amazon_pdp` Extraction Template when available.
```bash
nimble extract --url "https://www.amazon.com/dp/B0CHWRXH8B" --country US --parse \
--parser '{
"type": "schema",
"fields": {
"product_title": {"type": "terminal", "selector": {"type": "css", "css_selector": "#productTitle"}, "extractor": {"type": "text"}},
"web_price": {"type": "terminal", "selector": {"type": "css", "css_selector": "[name=\"items[0.base][customerVisiblePrice][amount]\"]"}, "extractor": {"type": "attr", "attr": "value"}},
"average_of_reviews": {"type": "terminal", "selector": {"type": "css", "css_selector": ".reviewCountTextLinkedHistogram a > span"}, "extractor": {"type": "text"}},
"asin": {"type": "terminal", "selector": {"type": "css", "css_selector": "#ASIN"}, "extractor": {"type": "attr", "attr": "value"}}
}
}' | python3 -c "import json,sys; d=json.load(sys.stdin); print(json.dumps(d.get('data',{}).get('parsing',{}), indent=2))"
```
---
## Yelp
### Via Extraction Template
```bash
nimble extract:templates run --template yelp_serp \
--params '{"search_query": "italian restaurant", "location": "San Francisco, CA"}' > .nimble/yelp.json
python3 -c "
import json
items = json.load(open('.nimble/yelp.json'))['data']['parsing']
for i in items[:10]:
print(f\"{i.get('business_name','?')[:40]:40s} {i.get('business_rating','?'):>4s}\")
"
```
### Manual extract (v0.5.0+)
> ⚠ CSS selectors may break on Yelp redesigns. Prefer the `yelp_serp` Extraction Template when available.
```bash
nimble extract \
--url "https://www.yelp.com/search?find_desc=italian+restaurant&find_loc=San+Francisco%2C+CA" \
--render --country US --locale en-US \
--browser-action '[
{"type": "wait_for_element", "selector": "[data-traffic-crawl-id=OrganicBusinessResult]", "timeout": 30000},
{"type": "scroll", "to": "[role=navigation]"},
{"type": "wait", "duration": "5s"}
]' \
--render-options '{"userbrowser": true}' --parse \
--parser '{
"type": "schema_list",
"selector": {"type": "css", "css_selector": "[data-testid=serp-ia-card]"},
"fields": {
"business_name": {"type": "terminal", "selector": {"type": "css", "css_selector": "[data-traffic-crawl-id=SearchResultBizName] a"}, "extractor": {"type": "text"}},
"business_rating": {"type": "terminal", "selector": {"type": "css", "css_selector": "[data-traffic-crawl-id=SearchResultBizRating] span[data-font-weight]"}, "extractor": {"type": "text"}}
}
}' > .nimble/yelp-results.json
```
---
## Target
> ⚠ CSS selectors may break on Target redesigns. If a Target Extraction Template is available, prefer it.
```bash
nimble extract \
--url "https://www.target.com/p/-/A-88790928" \
--render --driver vx8-pro --country US \
--browser-action '[
{"type": "wait_for_element", "selector": "#above-the-fold-information", "timeout": 10000},
{"type": "wait", "duration": "15s"}
]' \
--render-options '{"timeout": 60000}' \
--network-capture '[
{"url": {"type": "contains", "value": "/web/pdp_client_v1"}, "validation": false, "wait_for_requests_count": 1}
]' --format markdown > .nimble/target-product.json
head -80 .nimble/target-product.json
```
---
## Public APIs / XHR
```bash
# Polymarket
nimble --transform "data.markdown" extract \
--url "https://gamma-api.polymarket.com/markets?_q=elections&limit=20&active=true" \
--is-xhr --format markdown
# Any known JSON API
nimble --transform "data.markdown" extract \
--url "https://api.example.com/v1/endpoint?param=value" \
--is-xhr --format markdown
```
---
## Docs / static pages
```bash
nimble --transform "data.markdown" extract \
--url "https://react.dev/reference/rsc/server-components" --format markdown > .nimble/react-docs.md
head -80 .nimble/react-docs.md
```
---
## LinkedIn jobs
```bash
nimble --transform "data.markdown" extract \
--url "https://www.linkedin.com/jobs/search/?keywords=data+scientist&location=Austin%2C+TX&f_TPR=r604800" \
--render --driver vx10-pro --format markdown > .nimble/linkedin-jobs.md
head -100 .nimble/linkedin-jobs.md
```
---
## Google search & maps
```bash
# Google search via Extraction Template
nimble extract:templates run --template google_search --params '{"query": "OpenAI news 2026"}' | python3 -c "
import json, sys
entities = json.load(sys.stdin)['data']['parsing']['entities']
for r in entities.get('OrganicResult', [])[:5]:
print(r.get('title'), '|', r.get('link'))
"
# Google Maps
nimble extract:templates run --template google_maps_search --params '{"query": "italian restaurants NYC"}' > .nimble/maps.json
```
---
## Research workflow
```bash
# Search → extract top results
nimble search --query "React server components best practices" --focus coding --search-depth lite --include-answer
nimble --transform "data.markdown" extract --url "https://react.dev/reference/rsc/server-components" --format markdown
```
---
## Docs site (map → selective extract)
```bash
nimble --transform "links.#.url" map --url "https://docs.stripe.com" --limit 200 > .nimble/stripe-urls.txt
grep "charges\|refund" .nimble/stripe-urls.txt
nimble --transform "data.markdown" extract --url "https://docs.stripe.com/api/charges/object" --format markdown
```
SHA-256: 7c4da7a17e1264d109015e2c9a8f917a639d3194321c15e0e76326ae52c1c90a