agentsclimarketplace

Browser use

Skill S3YED/appie-kit/skills/automation/browser-use

Build Your Own AI Employee. The complete starter kit for OpenClaw + Hermes Agent. 155 deduplicated skills, drag-and-drop workspace, case studies, install scripts.

Install
npx -y skills add S3YED/appie-kit --skill browser-use

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Web scraping, screenshots, form filling, file downloads/uploads, Google/DuckDuckGo image search, YouTube video downloading, and TikTok video downloading.

SKILL.md

9.6 KB, as published. Nobody here has run it

Browser Use Skill

Overview

This skill enables browsing websites and interacting with web pages using Playwright.

Quick Start - Use Scripts

Important: All uv run commands must be executed from the scripts folder (not the project root):

cd .claude/skills/browser-use/scripts

# === MANUAL BROWSING (opens browser for user interaction) ===
# Open browser for manual use (waits for user to close)
uv run browser.py open https://example.com --wait 60
uv run browser.py open https://example.com --account myaccount --wait 120

# === AUTOMATION (headless, returns content) ===
# Navigate to a URL and get content
uv run browser.py auto https://example.com
uv run browser.py auto https://example.com --account myaccount

# Take a screenshot
uv run browser.py screenshot https://example.com -o screenshot.png

# Extract text from a page
uv run browser.py text https://example.com --selector "h1"

# Get all links from a page
uv run browser.py links https://example.com

# Save page as PDF
uv run browser.py pdf https://example.com -o page.pdf

# Download a file by clicking a download link
uv run browser.py download https://example.com/downloads "a.download-btn" -o ~/Downloads

# Upload file(s) to a page
uv run browser.py upload https://example.com/upload "input[type=file]" myfile.pdf
uv run browser.py upload https://example.com/upload "input[type=file]" file1.txt file2.txt --submit "button[type=submit]"

# Upload via file chooser dialog (for dynamic inputs)
uv run browser.py upload-chooser https://example.com/upload "button.upload-trigger" myfile.pdf

# Click an element
uv run browser.py click https://example.com "button.submit"

# Fill an input field and press Enter
uv run browser.py fill https://google.com "input[name=q]" "search term" --press Enter

# Extract attribute from elements
uv run browser.py extract https://example.com "img" --attr src --all

Image Download Commands

Download images from websites with optimized performance:

cd .claude/skills/browser-use/scripts

# Download images directly from src attribute
uv run browser.py download-images https://example.com "img.gallery" -n 10 -o ./images

# Download from Google Images (19x faster with regex extraction)
uv run browser.py download-from-gallery \
  "https://www.google.com/search?q=keyword&tbm=isch&tbs=isz:l" \
  "div[data-id] img" \
  "img[jsname='kn3ccd']" \
  -n 100 \
  -o ~/Downloads \
  -a myaccount

# Search Google Images with size filter
uv run browser.py google-image "landscape wallpaper" -n 50 -o ~/Downloads -s Large

# Download 4K images (3840px+ minimum)
uv run browser.py google-image "wallpaper" -n 20 -o ~/Downloads -s 4k

# Download FullHD images (1920px+ minimum)
uv run browser.py google-image "wallpaper" -n 50 -o ~/Downloads -s fullhd

Google Images Size Filters

CLI size options (filters by minimum dimension):

  • -s 4k - 3840px minimum (4K resolution)
  • -s fullhd - 1920px minimum (Full HD)
  • -s Large - 1000px minimum
  • -s Medium - 400px minimum
  • -s Icon - No minimum

Google URL params (used internally):

  • tbs=isz:l - Large images
  • tbs=isz:m - Medium images
  • tbs=isz:i - Icon size

YouTube Commands

Search and download YouTube videos with duration and date filtering:

cd .claude/skills/browser-use/scripts

# Search YouTube and get video URLs (returns JSON)
uv run browser.py youtube-search "python tutorial" -n 10
uv run browser.py youtube-search "lofi music" -n 5 -o results.json -s screenshot.png

# Search with duration filter (4-20 minutes)
uv run browser.py youtube-search "lofi music" -n 5 -min 4 -max 20

# Search videos from the last week
uv run browser.py youtube-search "news" -n 10 -t week

# Search with custom date range (YYYYMMDD format)
uv run browser.py youtube-search "tutorial" -n 10 -df 20240101 -dt 20241231

# Download a single video by URL
uv run browser.py youtube-download "https://www.youtube.com/watch?v=dQw4w9WgXcQ" -o ~/Downloads

# Download with quality options
uv run browser.py youtube-download "https://youtube.com/watch?v=..." -q 720p -o ~/Downloads
uv run browser.py youtube-download "https://youtube.com/watch?v=..." -q 1080p -o ~/Downloads

# Download audio only (mp3)
uv run browser.py youtube-download "https://youtube.com/watch?v=..." -a -o ./music

# Search and download in one command
uv run browser.py youtube-download "lofi hip hop" --search -o ~/Downloads
uv run browser.py youtube-download "python tutorial" --search -n 3 -o ~/Downloads

# Search and download with duration filter (4-20 min videos only)
uv run browser.py youtube-download "lofi music" --search -n 5 -min 4 -max 20 -o ~/Downloads

# Search and download videos from a date range
uv run browser.py youtube-download "tutorial" --search -n 5 -df 20240101 -dt 20241231 -o ~/Downloads

YouTube Duration Filters

  • -min N - Minimum duration in minutes
  • -max N - Maximum duration in minutes
  • Filters use YouTube URL parameters for speed, with Python-side validation as backup

YouTube Date Filters

  • -t, --upload-date - Filter by upload date: hour, today, week, month, year
  • -df, --date-from - Custom date range start (YYYYMMDD format, e.g., 20240101)
  • -dt, --date-to - Custom date range end (YYYYMMDD format, e.g., 20241231)

YouTube Quality Options

  • best - Best available quality (default)
  • 1080p - 1080p or lower
  • 720p - 720p or lower
  • 480p - 480p or lower
  • 360p - 360p or lower
  • audio - Best audio only

YouTube Search Output Format

[
  {
    "url": "https://www.youtube.com/watch?v=...",
    "title": "Video Title",
    "channel": "Channel Name",
    "duration": "10:30",
    "views": "1.2M views",
    "date": "2024-12-01"
  }
]

TikTok Commands

IMPORTANT: TikTok blocks headless browsers. Use --no-headless for search operations.

cd .claude/skills/browser-use/scripts

# Login and save session for authenticated operations
uv run browser.py tiktok-login -a mytiktok
uv run browser.py tiktok-login -a mytiktok -w 180  # Extended wait for 2FA

# Search videos (--no-headless required for TikTok)
uv run browser.py tiktok-search "keyword" -n 10 --no-headless
uv run browser.py tiktok-search "#dance" -n 5 --no-headless  # By hashtag
uv run browser.py tiktok-search "cooking" -n 10 -a mytiktok --no-headless  # With account

# Download single video
uv run browser.py tiktok-download "https://tiktok.com/@user/video/123" -o ~/Downloads

# Search and download
uv run browser.py tiktok-download "funny cats" --search -n 5 -o ~/Downloads --no-headless
uv run browser.py tiktok-download "#cooking" --search -n 10 -o ~/Downloads -p 3 --no-headless

TikTok Search Output Format

[
  {
    "url": "https://www.tiktok.com/@user/video/123456789",
    "title": "Video description...",
    "author": "username",
    "views": "1.2M",
    "likes": "50K",
    "date": "2d ago"
  }
]

Authentication

Save and reuse login sessions across browser commands. Uses Chrome with stealth mode to bypass automation detection (works with Google, etc.):

# Run from scripts folder
cd .claude/skills/browser-use/scripts

# Step 1: Create a login session (opens Chrome for manual login)
# Browser will open maximized - login manually then CLOSE THE BROWSER when done
uv run browser.py create-login https://gemini.google.com/app --account myaccount

# Options:
#   --wait, -w    Seconds to wait for login (default: 120)
#   --channel, -c Browser: chrome, msedge, chromium (default: chrome)

# Step 2: List saved accounts
uv run browser.py accounts

# Step 3: Use saved account with commands
# Manual browsing (opens browser for user interaction)
uv run browser.py open https://gemini.google.com/app --account myaccount

# Automation (headless, returns content)
uv run browser.py auto https://gemini.google.com/app --account myaccount
uv run browser.py screenshot https://gemini.google.com/app -o gemini.png --account myaccount

Storage Location

Authentication is stored in user's home directory ~/.auth/:

~/.auth/
├── account-name.json          # Storage state (cookies, localStorage)
└── profiles/
    └── account-name/          # Persistent browser profile

This location is shared across all projects and not committed to git.

Best Practices

  • Use headless=True for automation tasks
  • Use headless=False when debugging or when visual confirmation is needed
  • Always close the browser after use
  • Use specific selectors (id, data-testid) over generic ones when possible
  • Add appropriate waits for dynamic content
  • Handle timeouts gracefully with try/except blocks

Common Selectors

  • By ID: #element-id
  • By class: .class-name
  • By text: text=Button Text
  • By role: role=button[name="Submit"]
  • By CSS: div.container > p.content
  • By XPath: xpath=//div[@class='item']

Prerequisites

  • Authenticated with GitHub (see github-auth skill)

Chromium for ARM64

If agent-browser install fails on ARM64 (e.g., on a Hetzner ARM64 VPS) with an error like "Chrome for Testing does not provide Linux ARM64 builds," you need to install Chromium from your system's package manager and then configure agent-browser to use it.

  1. Install Chromium:

    sudo apt update && sudo apt install -y chromium-browser
    

    (Note: If apt reports a locked cache, run sudo dpkg --configure -a first to resolve it.)

  2. Configure agent-browser:

    agent-browser --executable-path /usr/bin/chromium
    

    Once configured, you should be able to use the browser_navigate tool and other browser-use functionalities.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.