skills$openclaw/browser-auto-download
aaronxx5.8k

by aaronxx

browser-auto-download – OpenClaw Skill

browser-auto-download is an OpenClaw Skills integration for coding workflows. Browser-automated file download with enhanced features. Auto-detects platform (Windows/macOS/Linux, 64/32-bit, ARM/Intel), handles multi-step navigation (homepage to platform-specific pages), captures auto-downloads triggered on page load, and falls back to button clicking when needed. Ideal for complex download flows where curl/wget fail due to client-side rendering, automatic downloads, or multi-page navigation. Features page scrolling for lazy content, extended wait times, and Golang support.

5.8k stars2.9k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026coding

Skill Snapshot

namebrowser-auto-download
descriptionBrowser-automated file download with enhanced features. Auto-detects platform (Windows/macOS/Linux, 64/32-bit, ARM/Intel), handles multi-step navigation (homepage to platform-specific pages), captures auto-downloads triggered on page load, and falls back to button clicking when needed. Ideal for complex download flows where curl/wget fail due to client-side rendering, automatic downloads, or multi-page navigation. Features page scrolling for lazy content, extended wait times, and Golang support. OpenClaw Skills integration.
owneraaronxx
repositoryaaronxx/browser-auto-download
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @aaronxx/browser-auto-download
last updatedFeb 7, 2026

Maintainer

aaronxx

aaronxx

Maintains browser-auto-download in the OpenClaw Skills directory.

View GitHub profile
File Explorer
10 files
.
scripts
auto_download.py
30.3 KB
_meta.json
295 B
CHANGELOG.md
2.6 KB
CONTRIBUTING.md
5.2 KB
package.json
1.4 KB
QUICKSTART.md
5.1 KB
README.md
9.6 KB
SKILL.md
7.5 KB
USER_GUIDE.md
2.1 KB
SKILL.md

name: browser-auto-download version: "4.1.0" description: "Browser-automated file download with enhanced features. Auto-detects platform (Windows/macOS/Linux, 64/32-bit, ARM/Intel), handles multi-step navigation (homepage to platform-specific pages), captures auto-downloads triggered on page load, and falls back to button clicking when needed. Ideal for complex download flows where curl/wget fail due to client-side rendering, automatic downloads, or multi-page navigation. Features page scrolling for lazy content, extended wait times, and Golang support."

Browser Auto Download v4.1.0 (Enhanced)

Download files from dynamic webpages with intelligent detection and multi-step navigation.

Key Features

  • Auto-download capture: Detects downloads triggered automatically on page load
  • Multi-step navigation: Finds and navigates to platform-specific pages (PC/Desktop versions)
  • Platform auto-detection: Windows x64/ARM64, macOS Intel/Apple Silicon, Linux
  • Event listening: Captures all download events without requiring button clicks
  • Smart fallback: Tries multiple strategies (auto-download, navigation, clicking)

When to Use

Use this skill for:

  • Auto-download sites: Downloads start automatically when page loads
  • Multi-step flows: Homepage - click "PC version" - download page
  • Dynamic content: Download links generated via JavaScript
  • Interactive downloads: Requires clicking buttons or navigating UI

NOT for: Direct file URLs (use curl/wget instead)

Option 1: Automatic (Recommended)

python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com/download"

The script will:

  1. Check for auto-downloads on page load
  2. Look for platform-specific page links (PC/Desktop version)
  3. Navigate if needed
  4. Try clicking download buttons as fallback

Option 2: Built-in Shortcuts

# WeChat DevTools
python skills/browser-auto-download/scripts/auto_download.py --wechat

# Meitu Xiuxiu
python skills/browser-auto-download/scripts/auto_download.py --meitu

Option 3: Python Module

from skills.browser-auto-download.scripts.auto_download import auto_download

result = auto_download(
    url="https://example.com/download",
    auto_select=True,   # Platform detection
    auto_navigate=True  # Multi-step navigation
)

if result:
    print(f"Downloaded: {result['path']}")

How It Works

Three-Stage Strategy

Stage 1: Auto-Download Detection

Page loads - Check for downloads - Success?
    Yes:                    No:
    Save file               Go to Stage 2

Stage 2: Multi-Step Navigation

Look for "PC/Desktop" link - Navigate - Check downloads - Success?
    Yes:                        No:
    Save file                  Go to Stage 3

Stage 3: Button Clicking

Try multiple selectors - Click - Wait for download - Save

Platform-Specific Page Detection

Automatically finds links like:

  • "meitu for PC" - pc.meitu.com
  • "Desktop version" - desktop.example.com
  • "Windows Download" - windows.example.com

Keywords: pc, desktop, windows, mac, download, 电脑, 桌面, 客户端

Examples

Auto-Download Sites (Best Case)

# Sites that trigger download on page load
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://pc.meitu.com/en/pc?download=pc"

Multi-Step Navigation

# Homepage - PC version - Download
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://xiuxiu.meitu.com/" \
  --auto-navigate  # Enable (default: True)

Manual Selector (Fallback)

# If auto-detection fails
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com/download" \
  --selector "button:has-text('Download for free')"

Disable Features

# Don't navigate to platform pages
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com" \
  --no-auto-navigate

# Don't detect platform
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com" \
  --no-auto-select

Platform Detection

SystemArchitectureKeywords Used
WindowsAMD64/x86_64windows, win64, x64, 64-bit, pc
Windowsx86/i686windows, win32, x86, 32-bit, pc
macOSARM64 (M1/M2/M3)macos, arm64, apple silicon
macOSx86_64 (Intel)macos, x64, intel
Linuxx86_64linux, x64, amd64

Troubleshooting

Download not starting:

  • Use --headless (default: False) to observe the process
  • Check stderr for auto-download messages
  • Try --no-auto-navigate if navigation is causing issues
  • Use --selector to manually specify button

Wrong version downloaded:

  • Check platform detection in stderr output
  • Use --no-auto-select and manually specify --selector
  • Verify the site offers multiple versions

Navigation going to wrong page:

  • Disable with --no-auto-navigate
  • The site may not have platform-specific pages

File not saved:

  • Check write permissions in output directory
  • Ensure sufficient disk space
  • Wait for large files (up to 3 minutes)

Output Format

stderr (Progress)

Starting browser (visible)...
Opening: https://example.com
Checking for auto-downloads...
Checking for platform-specific page link...
Found platform page: https://pc.example.com
Navigating to platform page...
Download detected: software_v2.1.0_win64.exe
Saving: software_v2.1.0_win64.exe

SUCCESS!
File: C:\Users\User\Downloads\software_v2.1.0_win64.exe
Size: 231.9 MB

stdout (JSON result)

{
  "path": "C:\\Users\\User\\Downloads\\software_v2.1.0_win64.exe",
  "filename": "software_v2.1.0_win64.exe",
  "size_bytes": 243209941,
  "size_mb": 231.9,
  "platform": "Windows AMD64"
}

Real-World Examples

Meitu Xiuxiu (Multi-step + Auto-download)

from auto_download import quick_download_meitu

result = quick_download_meitu()
# Flow: Homepage - PC page link - Navigate - Auto-download

WeChat DevTools (Button click)

from auto_download import quick_download_wechat_devtools

result = quick_download_wechat_devtools()
# Flow: Homepage - Click "Stable Windows 64" - Download

Generic Software (Mixed)

result = auto_download(
    url="https://example.com/downloads",
    auto_select=True,    # Detect Windows 64-bit
    auto_navigate=True   # Find "Desktop version" link
)

Requirements

pip install playwright
playwright install chromium

Advanced Usage

Custom Platform Keywords

Modify get_system_preference() in the script to add custom keywords.

Integration with Scripts

import subprocess
import json

result = subprocess.run([
    'python', 'skills/browser-auto-download/scripts/auto_download.py',
    '--url', 'https://example.com/download'
], capture_output=True, text=True)

if result.returncode == 0:
    data = json.loads(result.stdout)
    print(f"Downloaded: {data['path']}")  # Use the file

Batch Downloads

urls = [
    "https://example1.com/download",
    "https://example2.com/download",
    "https://example3.com/download"
]

for url in urls:
    result = auto_download(url)
    if result:
        print(f"Success: {result['filename']}")
README.md

Browser Auto Download

Status Success Rate Python License

🚀 Intelligent browser-automated file downloads with multi-modal support

Automatically download files from dynamic webpages using Playwright browser automation. Supports auto-downloads, multi-step navigation, direct links, relative paths, and precise button clicking with cross-platform (Windows/macOS/Linux) intelligent detection.

✨ Features

🎯 Multi-Modal Download Support

  • Auto-Download Detection - Captures downloads triggered on page load (e.g., Meitu Xiuxiu)
  • Multi-Step Navigation - Automatically finds and navigates to platform-specific pages
  • Direct Link Downloads - Handles direct .exe/.dmg/.zip URLs (e.g., Python.org)
  • Relative Path Resolution - Converts relative paths to absolute URLs (e.g., 7-Zip)
  • Precise Button Clicking - Chinese/English selector support (e.g., WeChat DevTools)
  • Platform Auto-Detection - Windows x64/ARM64, macOS Intel/Apple Silicon, Linux

🧠 Intelligent Download Strategy

The skill employs a 3-tier fallback system:

Stage 1: Auto-Download Detection
  ├─ Page load triggers
  ├─ Direct links (.exe/.dmg/.zip)
  └─ Relative paths (a/file.exe)
        ↓ Fails
Stage 2: Multi-Step Navigation
  ├─ Find "PC/Desktop" links
  ├─ Auto-navigate to platform pages
  └─ Re-check for downloads
        ↓ Fails
Stage 3: Button Clicking
  ├─ Chinese selectors (稳定版 >> Windows 64)
  ├─ English selectors (Download for free)
  └─ Fallback to generic patterns
SystemArchitectureAuto-Detection
WindowsAMD64/x86_64✅ windows, win64, x64, 64-bit
Windowsx86/i686✅ windows, win32, x86, 32-bit
macOSARM64 (M1/M2/M3)✅ macos, arm64, apple silicon
macOSx86_64 (Intel)✅ macos, x64, intel
Linuxx86_64✅ linux, x64, amd64

📦 Installation

Requirements

pip install playwright
playwright install chromium

Install Skill

  1. Download browser-auto-download.skill from ClawHub
  2. Place in your OpenClaw skills directory
  3. Restart OpenClaw

Or install from source:

git clone https://github.com/your-repo/browser-auto-download
cp -r browser-auto-download ~/.openclaw/skills/

🚀 Usage

Quick Start

# Auto-detect mode (recommended)
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com/download"

Built-in Shortcuts

# WeChat DevTools (Chinese page)
python skills/browser-auto-download/scripts/auto_download.py --wechat

# Meitu Xiuxiu (multi-step navigation)
python skills/browser-auto-download/scripts/auto_download.py --meitu

Python API

from skills.browser_auto_download.scripts.auto_download import auto_download

# Automatic mode
result = auto_download(
    url="https://example.com/download",
    auto_select=True,    # Platform detection
    auto_navigate=True   # Multi-step navigation
)

if result:
    print(f"Downloaded: {result['path']}")
    print(f"Size: {result['size_mb']:.1f} MB")

Advanced Options

# Manual selector
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com" \
  --selector "button:has-text('Download')"

# Custom output directory
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com" \
  --output "/path/to/downloads"

# Headless mode
python skills/browser-auto-download/scripts/auto_download.py \
  --url "https://example.com" \
  --headless

📊 Test Results

100% Success Rate (4/4)

WebsiteResultModeFile Size
Meitu Xiuxiu✅ SuccessAuto-download + Navigation13.0 MB
WeChat DevTools✅ SuccessPrecise button click231.9 MB
Python.org✅ SuccessDirect exe link28.8 MB
7-Zip✅ SuccessRelative path link1.4 MB

Platform Tested: Windows 11 Pro (AMD64)

🔧 How It Works

Example: Meitu Xiuxiu (Multi-Step)

# 1. Opens homepage
page.goto("https://xiuxiu.meitu.com/")

# 2. Finds "PC version" link
pc_link = find_platform_specific_page(page)
# → "https://pc.meitu.com/en/pc?download=pc"

# 3. Navigates to platform page
page.goto(pc_link)

# 4. Auto-download triggers on load
# → Captured by event listener!

# 5. Saves file
download.save_as("~/Downloads/xiuxiu64.exe")

Example: WeChat DevTools (Button Click)

# 1. Opens download page
page.goto("https://developers.weixin.qq.com/.../download.html")

# 2. Finds precise Chinese selector
selector = "text=稳定版 >> .. >> a:has-text('Windows 64')"

# 3. Clicks download button
page.locator(selector).first.click()

# 4. Captures download event
download = page.wait_for_event("download")

# 5. Saves file
download.save_as("~/Downloads/wechat_devtools.exe")

🎯 Use Cases

  • Software Installation - Automate development tool downloads
  • Batch Downloads - Download multiple files from different sites
  • CI/CD Pipelines - Integrate into automated workflows
  • Cross-Platform Setup - Download platform-specific installers
  • Language-Agnostic - Works with Chinese/English/multilingual sites

🛠️ Technical Details

Supported Download Patterns

PatternExampleSupported
Auto-download on loadMeitu Xiuxiu
Direct .exe linkPython.org
Relative path (a/file.exe)7-Zip
Multi-step navigationHomepage → PC page
Button click (Chinese)WeChat DevTools
Button click (English)Download for free

Selector Strategy

selectors = [
    # Precise Chinese
    "text=稳定版 >> .. >> a:has-text('Windows 64')",
    # English patterns
    "button:has-text('Download for free')",
    "button:has-text('Download')",
    # Generic
    "text=Download",
    "a:has-text('.exe')",
]

Event Listening

# Global download listener
all_downloads = []

def handle_download(download):
    all_downloads.append(download)

page.on("download", handle_download)

# Captures downloads from ANY trigger:
# - Page load
# - Navigation
# - Button click
# - JavaScript execution

📈 Performance

  • Fast Failure - Aborts early on timeout (30s default)
  • Smart Caching - Reuses browser sessions
  • Parallel Detection - Checks multiple patterns simultaneously
  • Memory Efficient - Cleans up browser resources

🤝 Contributing

Contributions are welcome! Areas for improvement:

  • Version detection (always download latest)
  • Resume support for large files
  • Download progress callbacks
  • More platform-specific patterns
  • Custom selector configuration

Development

# Clone repository
git clone https://github.com/your-repo/browser-auto-download

# Run tests
python test_meitu.py
python test_python.py
python test_7zip.py
python test_wechat.py

# Create new skill package
python -m skill_creator.package_skill.py \
  skills/browser-auto-download

📝 Changelog

v5.0.0 (2026-02-04) - Optimization Release ⚡

Performance Improvements:

  • ✅ Increased initial page load wait (2s → 3s) for better stability
  • ✅ Extended auto-download detection window (5s → 10s)
  • ✅ Longer wait after button clicks (10s → 15s) for complex pages
  • ✅ Increased download event timeout (15s → 20s)
  • ✅ Better handling of JavaScript-rendered buttons (Eclipse, etc.)
  • ✅ Improved direct download link detection

Reliability Boost:

  • Page interaction success rate: ~60% → ~90%
  • Better handling of dynamic content and lazy loading
  • Enhanced debug mode with screenshot/HTML/text capture

Real-World Testing:

  • Eclipse IDE download: ✅ 158.7 MB (direct CDN link)
  • Multiple retry strategies for robust downloads

Documentation:

  • Added OPTIMIZATION.md - Detailed technical analysis
  • Added QUICKSTART.md - Quick reference guide
  • Added apply-optimizations.bat - One-click optimization script

v4.0.0 (2026-02-04) - Production Release

New Features:

  • ✅ Direct .exe/.dmg/.zip link support
  • ✅ Relative path resolution
  • ✅ Improved Chinese page support
  • ✅ 4-tier download strategy

Test Results:

  • 4/4 tests successful (100%)
  • Meitu Xiuxiu: 13.0 MB ✅
  • WeChat DevTools: 231.9 MB ✅
  • Python.org: 28.8 MB ✅
  • 7-Zip: 1.4 MB ✅

v3.0.0 (2026-02-04)

  • Multi-step navigation
  • Auto-download detection
  • Platform auto-detection

v2.0.0 (2026-02-04)

  • Basic button clicking
  • Platform detection

v1.0.0 (2026-02-04)

  • Initial release
  • WeChat DevTools support

📄 License

MIT License - see LICENSE for details.

🙏 Acknowledgments

📮 Contact


Made with ❤️ for OpenClaw

Automate the boring stuff. Download with intelligence.

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

Requirements

```bash pip install playwright playwright install chromium ```

FAQ

How do I install browser-auto-download?

Run openclaw add @aaronxx/browser-auto-download in your terminal. This installs browser-auto-download into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/aaronxx/browser-auto-download. Review commits and README documentation before installing.