Awesome-openclaw-skills autofillin
Automated web form filling and file uploading skill with Playwright browser automation. Handles login persistence, form detection, file uploads, and waits for manual confirmation before submission.
install
source · Clone the upstream repo
git clone https://github.com/sundial-org/awesome-openclaw-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/autofillin" ~/.claude/skills/sundial-org-awesome-openclaw-skills-autofillin && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/autofillin" ~/.openclaw/skills/sundial-org-awesome-openclaw-skills-autofillin && rm -rf "$T"
manifest:
skills/autofillin/SKILL.mdsource content
AutoFillIn - Browser Form Automation Skill
Trigger Command:
autofillin
An intelligent automation skill that fills web forms, uploads files/folders to correct positions, and handles complex multi-field submissions with persistent login support.
What's New in v1.2.0
- Enhanced Error Handling: Graceful error recovery with detailed messages
- Consolidated Configuration: Merged mcp-config into SKILL.md
- Improved Robustness: Better port conflict handling and process management
- Cross-platform Fixes: Improved Windows/Linux compatibility
Changelog
| Version | Changes |
|---|---|
| v1.2.0 | Enhanced error handling, consolidated config, improved robustness |
| v1.1.0 | Added Playwright support, session persistence, folder upload |
| v1.0.0 | Initial release with Chrome debug mode |
Features
- Navigate to any web form URL
- Auto-fill text fields, textareas, dropdowns
- Upload files/folders to correct form positions
- Persistent login via saved browser storage
- Wait for manual confirmation before submission
- Support for multi-file uploads with position mapping
- Graceful error recovery
Quick Setup
# 1. Install Playwright browsers npx playwright install chromium # 2. First-time login (saves session for reuse) npx playwright open --save-storage=~/.playwright-auth.json "https://your-target-site.com" # Login manually in the browser that opens, then close it # 3. Future runs will auto-login using saved session npx playwright open --load-storage=~/.playwright-auth.json "https://your-target-site.com"
MCP Configuration
Add to your MCP settings (Claude Code, OpenCode, etc.):
{ "mcpServers": { "playwright": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-playwright"] }, "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/"] } } }
Environment variables for shell integration:
export CHROME_DEBUG_PORT=9222 export CHROME_USER_DATA_DIR="$HOME/.chrome-autofillin"
Browser Automation Options
Option 1: Playwright CLI (Recommended for OAuth sites)
# First login - saves session npx playwright open --save-storage=~/.playwright-auth.json "https://molthub.com/upload" # Subsequent uses - loads saved session npx playwright open --load-storage=~/.playwright-auth.json "https://molthub.com/upload"
Advantages:
- No "unsafe browser" blocks from Google/GitHub OAuth
- Session persistence across runs
- Works with MCP browser tools
Option 2: Chrome Debug Mode (For non-OAuth sites)
# Start Chrome with debug port ./scripts/start-chrome.sh "https://example.com/form" # With your default Chrome profile (keeps existing logins) ./scripts/start-chrome.sh --use-default-profile "https://example.com/form"
Note: Chrome debug mode with custom
--user-data-dir is blocked by Google OAuth. Use Playwright for sites requiring Google/GitHub login.
Usage Examples
Basic Form Filling
autofillin https://example.com/form - Fill "Name" field with "John Doe" - Fill "Email" field with "john@example.com" - Upload resume.pdf to file input
MoltHub Skill Upload
autofillin https://molthub.com/upload Form Data: - Slug: autofillin - Display name: AutoFillIn - Browser Form Automation Skill - Version: 1.2.0 - Tags: automation, browser, form, playwright, mcp - Changelog: v1.2.0 - Enhanced error handling, consolidated config Upload: - Folder: ~/clawd/skills/autofillin/ [WAIT FOR MANUAL CONFIRMATION TO PUBLISH]
Multi-file Upload with Position Mapping
autofillin https://example.com/document-upload Files to upload: - Position 1 (ID Document): ~/documents/id_card.pdf - Position 2 (Proof of Address): ~/documents/utility_bill.pdf - Position 3 (Photo): ~/photos/headshot.jpg [WAIT FOR MANUAL CONFIRMATION]
Workflow
1. BROWSER SETUP - Check for saved session (~/.playwright-auth.json) - Launch Playwright Chromium with session - Or prompt for one-time login if no session exists 2. NAVIGATION & LOGIN - Navigate to target URL - Detect if login is required - If login needed: Fill username, prompt for password, save session 3. PAGE ANALYSIS - Take accessibility snapshot - Identify all form fields - Map field labels to input elements 4. AUTO-FILL PHASE - Fill text fields using fill() or fill_form() - Select dropdown options - Upload files/folders via upload_file() 5. CONFIRMATION PHASE - Display summary of filled data - WAIT FOR MANUAL CONFIRMATION - User reviews and clicks Submit/Publish
MCP Tools Used
| Tool | Purpose |
|---|---|
| take_snapshot | Get page accessibility tree |
| fill | Fill single form field |
| fill_form | Fill multiple fields at once |
| upload_file | Upload file or folder |
| browser_click | Click buttons |
| evaluate_script | Run JavaScript |
| navigate_page | Navigate to URLs |
Credential Management
Safe Storage (Recommended)
# Use macOS Keychain security add-generic-password -a "github" -s "autofillin" -w "your-password" security find-generic-password -a "github" -s "autofillin" -w # Use Linux secret-tool secret-tool store --label="autofillin-github" service autofillin username github # Use Windows Credential Manager cmdkey /add:autofillin-github /user:github /pass:your-password
Session Persistence
Sessions saved to
~/.playwright-auth.json include cookies, localStorage, and sessionStorage.
Error Handling
| Error | Cause | Solution |
|---|---|---|
| Unsafe browser | Google OAuth blocked | Use Playwright instead of Chrome debug |
| Login required | Session expired | Run with --save-storage |
| Element not found | Page changed | Take new snapshot |
| Upload failed | Wrong file type | Check webkitdirectory |
| Port in use | Another Chrome instance | Script auto-kills conflicting process |
| Chrome not found | Not installed | Run setup-env.sh |
Troubleshooting
Chrome won't start with debug mode
# Check if port is in use lsof -i:9222 # Kill existing processes pkill -f "remote-debugging-port=9222" # Retry ./scripts/start-chrome.sh "https://example.com"
Session not persisting
# Verify auth file exists ls -la ~/.playwright-auth.json # Re-authenticate npx playwright open --save-storage=~/.playwright-auth.json "https://target-site.com"
File upload not working
- Ensure file path is absolute
- Check file permissions:
ls -la /path/to/file - For folder uploads, verify the input has
attributewebkitdirectory
Files in This Skill
autofillin/ ├── SKILL.md # This documentation (includes MCP config) └── scripts/ ├── setup-env.sh # Environment setup (cross-platform) ├── start-chrome.sh # Chrome debug launcher └── autofillin.sh # Main orchestrator with error handling
Author
- GitHub: @leohan123123
License
MIT