
Fetches webpage content, PDFs, and JS-heavy sites in parallel without burning your main context window. Runs in a forked context using parallel-cli, so you can extract from a dozen URLs and keep your primary conversation clean. Returns structured content with titles, excerpts, and optional full-text if you need it. Has sensible guardrails for failed fetches instead of hallucinating content. The objective and keyword flags let you steer what gets prioritized in excerpts. If you're doing research or scraping documentation across multiple sources, this beats making sequential WebFetch calls and cluttering your token budget. Requires parallel-cli installed and authenticated.
$ npx -y skills add parallel-web/parallel-agent-skills --skill parallel-web-extract --agent claude-codeInstalls into .claude/skills of the current project.
Extract content from: $ARGUMENTS
Choose a short, descriptive filename based on the URL or content (e.g., vespa-docs, react-hooks-api). Use lowercase with hyphens, no spaces. Substitute it into the command inline — $FILENAME is a placeholder, not a shell variable.
Pass each requested URL as a separate quoted positional argument, up to 20 per call. Do not collapse multiple URLs into one quoted $ARGUMENTS string or use eval to split them. Construct arguments directly from the requested URLs. For example:
parallel-cli extract "https://docs.parallel.ai/integrations/cli" "https://docs.parallel.ai/integrations/cursor-marketplace" --json -o "/tmp/parallel-docs.json"
-o saves JSON. Use a .json extension and inspect an existing path before use because Extract overwrites it. Read the saved file as authoritative; stdout may truncate and human-readable output previews only part of the content. Do not treat a stale file as a successful response after a failed call.
Options if needed:
--objective "focus area" to focus extraction on a specific goal (also silences the "neither objective nor search_queries" warning that V1 emits when neither is set)-q "keyword" (repeatable) to prioritize keywords in excerpts--full-content to include the complete page body (for long articles, PDFs, or when excerpts may not capture what you need)--full-content-max-chars N to cap full-content size per result--no-excerpts to strip excerpts when you only want full content--session-id "<returned-session-id>" to group related Search/Extract calls. A session ID is not a Task interaction ID or run ID; never use it with research status/poll or --previous-interaction-idInspect the exit status, API error, results, per-URL errors and any warnings. errors: [] is normal success. Nonempty errors can coexist with successful results: retain and present successful content, then name each failed URL and its returned reason. Empty results or missing content are not a successful extraction. Do not fabricate content. For affected URLs, suggest:
--full-content if excerpts are empty but the returned metadata supports that the page was fetchedparallel-cli search to locate the current URL if the page was renamedReturn content as:
Use returned full_content for full-page requests; excerpts alone are selected passages and must be labelled as such. Even full content may be capped by --full-content-max-chars or upstream limits; do not promise completeness when capped. Preserve retrieved content verbatim, with these rules:
After the response, mention the output file path (/tmp/$FILENAME.json) so the user knows it's available for follow-up questions.
For large content, keep the full verbatim text in the saved file and provide a brief labelled preview plus its path. Never silently truncate content while claiming it is the complete extraction.
If parallel-cli or a required option is missing, tell the user which part is
missing and offer /parallel:parallel-cli-setup. That skill covers installation
and upgrades for each supported install method. After setup, check
parallel-cli extract --help in the same terminal before retrying.
For authentication errors, inspect parallel-cli auth --json and its authenticated boolean; exit zero alone does not prove authentication. A 403 can indicate permissions, policy or billing. Report the actual error; check balance only for a billing-specific failure and never add funds without explicit confirmation.
Sponsors