| name | site-extract |
| description | Extract operator-grade source facts from a website or manual brief: claims, proof, CTAs, mechanism language, trust cues, visual patterns, and page structure with provenance. First stage of Page Factory. |
| metadata | {"openclaw":{"emoji":"🔍","user-invocable":true,"requires":{"env":"[Truncated]"}}} |
Site Extract
Use this when a user gives a site URL and wants a landing page built without a bloated intake process.
This stage does not synthesize. It extracts.
If you cannot trace a claim, proof point, or trust cue back to the source, label it missing or inferred. Do not quietly upgrade it into fact.
Required inputs
- primary URL
- optional product URL
- optional
--deep
- optional manual brief snippets if source access is incomplete
Operator goal
Build a source record that downstream skills can trust.
That means extracting:
- exact claim language
- exact CTA language
- exact proof points
- visible page patterns
- mechanism language
- trust cues
- visual identity
- category conventions
Output files
Write:
workspace/brand/extract.md
workspace/brand/extract.json
workspace/brand/palette.json
Hard extraction rules
- Preserve exact language where possible. Quote, do not paraphrase.
- Tag provenance for every proof item and major claim.
- Distinguish observed facts from inference.
- If source signal is thin, say it directly.
- If mechanism is unclear after extraction, downstream strategy must stop until resolved.
Required extract structure
# Brand Extract: [Brand]
Source URLs:
- [url 1]
- [url 2]
Extracted: [date]
Confidence: high | medium | low
## 1. Brand + category
- Brand name:
- Product category:
- Primary offer:
- Business model:
- Geography / market hints:
## 2. Exact hero language
| Element | Exact text | Source URL | Provenance |
|---|---|---|---|
| Headline | | | observed |
| Subheadline | | | observed |
| Primary CTA | | | observed |
| Secondary CTA | | | observed |
## 3. Claim inventory
| Claim | Type | Source URL | Section | Provenance | Proof required? |
|---|---|---|---|---|---|
| | benefit / mechanism / superiority / social proof / guarantee | | | observed / inferred | yes / no |
## 4. Proof inventory
| Proof item | Class | Exact wording / value | Source URL | Section | Notes |
|---|---|---|---|---|---|
| | testimonial / stat / review count / logo / press / guarantee | verified_source / derived_source / missing | | | | |
## 5. CTA inventory
| CTA text | Destination guess | Source URL | Above fold? | Notes |
|---|---|---|---|---|
## 6. Mechanism language inventory
- Unique mechanism phrases repeated by the brand
- Product explanation phrases worth preserving
- Failed-alternative language
- Objection-handling language
## 7. Trust cue inventory
- guarantees
- shipping / returns / warranty
- certifications / press / logos
- compliance / safety / authority cues
- category conventions that signal legitimacy
## 8. Page pattern inventory
| Section order | What appears | What it is doing | Worth preserving? |
|---|---|---|---|
## 9. Visual motif inventory
- dominant colors
- font families / classes
- product photography style
- UI / screenshot style if present
- shape language
density / spacing feel
trust-critical design conventions
who this appears to target
awareness stage clues
sophistication clues
explicit pain language
explicit desire language
missing mechanism details
unsupported claims
thin proof
inaccessible pages
anything requiring operator decision
JSON contract
extract.json must include machine-readable keys for:
brand
category
offer
hero_language
claims[]
proof_inventory[]
cta_inventory[]
mechanism_language[]
trust_cues[]
page_patterns[]
visual_motifs[]
audience_signals[]
missing_flags[]
confidence
Firecrawl integration
Provider selection is mandatory here.
If FIRECRAWL_API_KEY is available, you must use Firecrawl for site extraction.
Do not silently substitute generic browsing, WebFetch, or single-page scraping when Firecrawl is configured or expected.
If Firecrawl is blocked by the runtime, unavailable, or the key is missing:
- say that explicitly
- ask the operator whether to:
- provide/configure Firecrawl
- run the local Firecrawl extraction command outside the sandbox
- accept downgraded manual/basic extraction
- do not silently proceed with downgraded extraction on a public-release-quality run
Only use downgraded extraction without asking when the user has already explicitly approved that downgrade.
When Firecrawl is available, use the v2 API with the branding format:
curl -s -X POST "https://api.firecrawl.dev/v2/scrape" \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"formats": ["branding", "markdown", "screenshot"],
"onlyMainContent": false,
"maxAge": 172800000
}'
The branding format returns structured brand identity:
- logo URL
- color palette (primary, secondary, accent, background, text)
- font families
- spacing scale
- UI component styles
- color scheme (light/dark)
The markdown format provides page content for claim and proof extraction.
The screenshot format provides a visual reference (URL expires after 24h).
Use scripts/firecrawl-extract.sh to run this automatically and save all outputs.
Deep mode
When --deep is used:
- scrape homepage
- scrape one product / service page
- scrape one proof-heavy page if available
- scrape pricing, FAQ, or about page if available
- merge findings with source URLs attached to every artifact
Default deep priority:
- product page
- reviews / testimonials page
- FAQ / pricing page
- about page
Fallback behavior
If Firecrawl or scraping fails:
- capture whatever is accessible
- mark blocked sections explicitly
- request operator-provided screenshots or copy for missing trust/proof/mechanism data
- do not fabricate extracted structure as if it were observed
If Firecrawl is blocked by Cowork or another sandbox proxy:
- state that
api.firecrawl.dev must be allowed by the runtime
- recommend the local preflight command path rather than pretending WebFetch is equivalent
Stop / continue logic
Continue if:
- offer is identifiable
- CTA is inferable
- at least some proof or trust cues are extractable
Downgrade if:
- proof is weak
- visual identity is partial
- category conventions are unclear
Stop and raise operator if:
- unique mechanism cannot be identified
- source is too thin to separate real claims from marketing fog
- regulated claims appear without clear proof
Hand-off
After extraction, run /page-strategy.
Do not jump straight to copy unless the strategy artifact already exists.