browser-screenshot
Take focused, region-specific screenshots from web pages. Navigates to the right page based on user context (URL, search query, social media post), locates the target region via DOM selectors, and crops to a clean, focused screenshot.
What this skill does
# Skill: Browser Screenshot Take focused screenshots of specific regions on web pages — a Reddit post, a tweet, an article section, a chart, etc. — not just a full-page dump. > **Prerequisite**: agent-browser must be installed and Chrome must have remote debugging enabled. See `references/agent-browser-setup.md` if unsure. --- ## Overview This skill handles the full pipeline: 1. **Research** the best page to screenshot (web search, fetch) 2. **Navigate** to the right page in the browser 3. **Locate** the target element/region on the page 4. **Capture** a focused, cropped screenshot of just that region ### Hard Rule: No Full-Screen Screenshots **NEVER output an uncropped full-viewport or full-page screenshot as a final result.** Full screenshots contain too much noise (nav bars, sidebars, ads, unrelated content) and are unsuitable as article illustrations. Every screenshot MUST be cropped to a focused region. --- ## Step 0: Research — Find and Validate Sources Before Opening the Browser **The browser is for capturing, not for browsing.** Before opening anything in Chrome, use text-based tools (WebSearch, WebFetch) to find candidate pages, read their content, and decide which ones are actually worth screenshotting. ### Research-First Workflow 1. **WebSearch** to find candidate pages for the topic 2. **WebFetch** each candidate to read its text content — check if it has the information/visual you need 3. **Evaluate**: Is this page worth a screenshot? Does it have a clear, focused region that would work as an illustration? 4. **Only then** open the browser to capture the screenshot This saves significant time — most candidate pages won't be worth screenshotting, and you can eliminate them without the overhead of browser navigation. ### When to Use Browser-First Instead Skip the WebSearch/WebFetch phase and go directly to Chrome browsing when: - **The target platform requires login** — Reddit, LinkedIn, X/Twitter, and other social platforms often gate content behind login walls. If the user's Chrome session is already logged in, use the browser directly. - **The user specifies a platform with a clear search need** — e.g., "find a Reddit post about X" or "screenshot a tweet about Y". Go straight to the platform's search in Chrome. - **WebFetch returns blocked/incomplete content** — some sites aggressively block non-browser requests. If you get a 403, a CAPTCHA page, or stripped content, switch to Chrome. In these cases, Chrome browsing replaces WebSearch — navigate to the platform's search page, browse results, and evaluate pages visually before deciding what to screenshot. ### Page Selection Strategy The right page depends on the context of the article and how recent/notable the subject is: | Subject Type | Best Page to Find | How to Find It | |--------------|-------------------|----------------| | **New model/feature launch** (< 6 months) | Official blog post announcing it | WebSearch `"<model name>" site:<vendor-domain> blog` | | **Established product** (> 6 months) | Product landing page or docs overview | WebSearch `"<model name>" official page` | | **Open-source model** | HuggingFace model card or GitHub repo | Direct URL: `huggingface.co/<org>/<model>` | | **API service** | API documentation page | WebSearch `"<service name>" API docs` | > **Note**: This table lists common subject types but is **not exhaustive**. Apply the same research-first strategy to any subject type — find the most authoritative and visually clean source page for the topic at hand. ### What Makes a Good Screenshot Source **Core principle: Less is more. Focus on content, not chrome.** A good screenshot source contains a **focused, self-contained piece of information** — a paragraph of text, a key quote, a data table, a diagram. It should NOT be a busy page full of buttons, navigation, sidebars, and interactive elements. - **Prefer**: A section of a blog post with a clear heading and 1-2 paragraphs of text. A single chart or diagram. A model card header with name and description. A quote or key finding. - **Avoid**: Full landing pages with CTAs and navigation. Dashboard views with multiple panels. Pages dominated by UI controls (buttons, dropdowns, forms) rather than readable content. - **Official blog posts** are ideal: they have hero images, prominent titles, and concise descriptions designed for sharing - **Product landing pages** can work but only if you crop to the hero section — ignore the rest - **HuggingFace model cards** are reliable for open-source models: consistent layout, model name + description always at top - **API docs** are acceptable fallback: show the product name and key specs > **Rule of thumb**: If the region you plan to capture contains more interactive UI elements (buttons, links, nav items) than readable text content, it's a bad crop. Find a more content-rich region, or pick a different page entirely. ### Pre-Flight URL Validation Before opening in the browser, validate URLs with WebFetch (lightweight HEAD/GET) to avoid wasting time on 404s or redirects: ``` WebFetch: <candidate-url> → Check status code, title, and content snippet → If 404 or redirect to unrelated page, try next candidate ``` ### Region Selection Strategy Think about **what the article reader needs to see** in this screenshot: | Article Context | What to Capture | Target Region | |-----------------|----------------|---------------| | Introducing a model in a lineup | Model name + key tagline/description | Blog hero section or HF model card header | | Comparing capabilities | Feature highlights or spec table | Blog section showing specs/features | | Discussing a specific feature | The feature description | Relevant section heading + 1-2 paragraphs | | Showing a product/service | Brand identity + value prop | Landing page hero (title + subtitle + visual) | The screenshot should make the reader think "ah, that's what this model/product is" — not "what am I looking at?" --- ## Step 1: Navigate to the Target Page ### Always Start by Listing Tabs ```bash agent-browser --auto-connect tab list ``` Check if the page is already open. Reuse existing tabs — they have login sessions and correct state. ### Navigation by Input Type | User Provides | Strategy | |---------------|----------| | Direct URL | `agent-browser --auto-connect open <url>` | | Search query | `open https://www.google.com/search?q=<encoded-query>` → find and click the best result | | Platform + topic | Construct platform search URL (see below) → locate target content | | Vague description | Google search → evaluate results → navigate to best match | ### Platform-Specific Search URLs | Platform | Search URL Pattern | |----------|-------------------| | Reddit | `https://www.reddit.com/search/?q=<query>` | | X / Twitter | `https://x.com/search?q=<query>` | | LinkedIn | `https://www.linkedin.com/search/results/content/?keywords=<query>` | | Hacker News | `https://hn.algolia.com/?q=<query>` | | GitHub | `https://github.com/search?q=<query>` | | YouTube | `https://www.youtube.com/results?search_query=<query>` | ### Wait for Page Load After navigation, wait for content to settle: ```bash agent-browser --auto-connect wait --load networkidle ``` > **Note**: Some sites (Reddit, X, LinkedIn) never reach `networkidle`. If `open` already shows the page title in its output, skip the wait. Use `wait 2000` as a safe alternative. --- ## Step 2: Locate the Target Region This is the critical step. The goal is to find a **CSS selector** that precisely wraps the content to capture. ### Primary Method: DOM Selector Discovery 1. **Take an annotated screenshot** to understand the page layout: ```bash agent-browser --auto-connect screenshot --annotate ``` 2. **Take a snapshot** to see the page's accessibility tree: ```bash agent-browser --auto-connect snapshot -i ``` 3. **Identify the target container element**. Look for: - Semantic HTML containers: `<article>`, `<main>`, `<sectio
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.