Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions skills/extract/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,10 @@ zenrows extract <url> --validate # fail if not valid JSON

## Rules
- Validate on a single page before scaling across many URLs.
- If Autoparse misses fields, switch to `--css` with explicit selectors, or add
`--manual --js-render` for JS-heavy pages.
- If Autoparse misses fields, switch to `--css` with explicit selectors. Auto
mode already renders JS when the target needs it, so reach for
`--manual --js-render` only after auto mode has returned an incomplete page:
it costs several times a basic call ([[cost-control]]) and it makes the
escalation yours.

See [[protected-fetch]] for retrieval semantics.
29 changes: 22 additions & 7 deletions skills/protected-fetch/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: protected-fetch
description: Use Zenrows Protected Fetch for anti-bot-protected page retrieval.
description: Use Zenrows Protected Fetch in auto mode for anti-bot-protected page retrieval. Auto mode handles the anti-bot escalation, so never enable JS rendering or premium proxies yourself on a first attempt.
version: 0.1.0
requires_backend_capabilities: [protected_fetch]
---
Expand All @@ -16,18 +16,33 @@ cannot. This is the **core primitive** — backed by Zenrows **Fetch**
- The target has anti-bot protection, needs JS rendering, or geo-specific access.

## How to call

Auto mode is the answer for anti-bot targets, Cloudflare included. It escalates
for you and bills only for the configuration that succeeds.

```
zenrows fetch <url> # Adaptive Stealth Mode (recommended)
zenrows fetch <url> # Adaptive Stealth Mode. Start here, always
zenrows fetch <url> --output markdown # convert to Markdown
zenrows fetch <url> --manual --js-render --premium-proxy # full manual control
zenrows fetch <url> --proxy-country us # geo-target (auto mode; in manual mode needs --premium-proxy)
zenrows fetch <url> --proxy-country us # geo-target, works in auto mode
zenrows fetch <url> --wait-for ".price" # wait for a selector
```

Manual mode exists for the rare case where auto mode has already failed and a
trace shows why. It costs more and it makes the escalation your problem:

```
zenrows fetch <url> --manual --js-render --premium-proxy # the most expensive path, see [[cost-control]]
```

## Rules
- Start with **auto mode**. In auto mode, `js_render` and `premium_proxy` are
managed for you — passing them manually requires `--manual`
(otherwise you get `PARAM_CONFLICT_AUTO_MANUAL`).
- Start with **auto mode**. Enabling `--js-render` and `--premium-proxy` yourself
is the most expensive configuration this API offers, by a wide margin, and auto
mode reaches the same place only when the target actually needs it. The
multipliers are in [[cost-control]].
- A hard target is not a reason to skip auto mode. It is the reason auto mode
exists.
- In auto mode `js_render` and `premium_proxy` are managed for you. Passing them
manually requires `--manual`, otherwise you get `PARAM_CONFLICT_AUTO_MANUAL`.
- `--proxy-country` works in auto mode on its own; in `--manual` mode it also
needs `--premium-proxy` (else `PARAM_PROXY_COUNTRY_REQUIRES_PREMIUM`).
- You are billed only for the configuration that succeeds.
Expand Down
8 changes: 6 additions & 2 deletions skills/trace-debug/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,12 @@ zenrows trace export <run-id> # JSON for sharing
```

## Failure → action map
- `FETCH_FAILED` / empty content → retry `--manual --js-render`, then add
`--premium-proxy`; for slow pages add `--wait-for <selector>`.
- `FETCH_FAILED` / empty content → first retry in auto mode (`mode=auto`), which
escalates for you and bills only for what succeeds. For slow pages add
`--wait-for <selector>`. Only when auto mode has failed on its own, take
manual control with `--manual --js-render`, then `--premium-proxy`. Each step
multiplies the cost of the request, and both together are the most expensive
configuration available ([[cost-control]]).
- `REQUEST_TIMEOUT` → the CLI stopped waiting; the API was reached. Raise
`--timeout` (default 120000ms, above the API's own 90s budget), or drop
`--wait-for` so the request finishes inside that budget and the API returns
Expand Down
Loading