Element capture is for assets where a full page is too noisy. You can target elements deterministically with selector or describe them with element.

CSS selector capture

Use selector when you can add stable capture hooks to your app.

json
{ "url": "https://example.com/pricing", "selector": "[data-capture='pricing-table']", "background_style": "transparent", "inset": 24, "output": { "format": "png" }}

Prefer capture-specific attributes like data-capture="pricing-table" over brittle class names generated by a CSS framework.

Natural-language element capture

Use element when the page is external, you do not control selectors, or the target is easier to describe.

json
{ "url": "https://example.com", "element": "the pricing cards section", "background_preset": "arctic", "shadow": "soft", "aspect_ratio": "16:9"}

Inset and background balance

FieldDescription
insetAdds internal padding around the captured element.
inset_balanceUses detected element background where helpful.
auto_balanceAllows ScreenFramed to pick helpful default styling when you have not specified a visual direction.

Patterns that work well

Docs screenshots

Capture a form, settings panel, table, or code output block directly from the live product.

Learn More
Changelog assets

Capture the shipped feature instead of a full dashboard with unrelated navigation.

Directory cards

Capture a hero, pricing table, or product screenshot consistently across many URLs.

Transparent exports

Render isolated components as transparent PNGs for design systems, docs, and slide decks.

Debugging selector captures

If a selector capture fails:

  1. Confirm the selector exists after the page finishes loading.
  2. Try wait_for: "networkidle" or a numeric delay.
  3. Hide overlays that may cover the target element.
  4. Use show_resolved_params: true while debugging request construction.
Ask a question... ⌘I