AutoFillIn 是一个浏览器表单自动化技能,触发命令为 autofillin。它用于自动填写网页表单、将文件或文件夹上传到正确位置,并处理复杂的多字段提交,同时支持登录状态持久化。
主要能力
- 导航到任意网页表单 URL。
- 自动填写文本字段、文本域和下拉选项。
- 将文件或文件夹上传到表单的正确位置。
- 通过保存的浏览器存储实现登录持久化。
- 在提交前等待手动确认。
- 支持多文件上传并按位置映射。
- 提供优雅的错误恢复。
版本更新
- v1.2.0:增强错误处理,合并配置(将 mcp-config 合并进 SKILL.md),改进健壮性(更好的端口冲突处理与进程管理),改进 Windows/Linux 跨平台兼容性。
- v1.1.0:新增 Playwright 支持、会话持久化、文件夹上传。
- v1.0.0:初始版本,使用 Chrome 调试模式。
快速设置
- 安装 Playwright 浏览器: npx playwright install chromium
- 首次登录(保存会话以便复用): npx playwright open --save-storage=~/.playwright-auth.json "https://your-target-site.com" 在打开的浏览器中手动登录,然后关闭。
- 后续运行将使用保存的会话自动登录: npx playwright open --load-storage=~/.playwright-auth.json "https://your-target-site.com"
MCP 配置 添加到 MCP 设置(Claude Code、OpenCode 等): { "mcpServers": { "playwright": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-playwright"] }, "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/"] } } }
Shell 集成环境变量: export CHROME_DEBUG_PORT=9222 export CHROME_USER_DATA_DIR="$HOME/.chrome-autofillin"
浏览器自动化选项 选项 1:Playwright CLI(推荐用于 OAuth 站点)
- 首次登录保存会话: npx playwright open --save-storage=~/.playwright-auth.json "https://molthub.com/upload"
- 后续使用加载已保存会话: npx playwright open --load-storage=~/.playwright-auth.json "https://molthub.com/upload" 优势:不会被 Google/GitHub OAuth 拦截为“不安全浏览器”;会话跨运行持久化;可与 MCP 浏览器工具配合使用。
选项 2:Chrome 调试模式(用于非 OAuth 站点)
- 启动带调试端口的 Chrome: ./scripts/start-chrome.sh "https://example.com/form"
- 使用默认 Chrome 配置文件(保留已有登录): ./scripts/start-chrome.sh --use-default-profile "https://example.com/form" 注意:使用自定义 --user-data-dir 的 Chrome 调试模式会被 Google OAuth 阻止。需要 Google/GitHub 登录的站点请使用 Playwright。
使用示例 基础表单填写: 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 技能上传: 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]
多文件按位置映射上传: 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]
工作流程
- 浏览器设置:检查已保存会话(~/.playwright-auth.json);使用会话启动 Playwright Chromium;若无会话则提示一次性登录。
- 导航与登录:导航到目标 URL;检测是否需要登录;如需登录则填写用户名、提示输入密码并保存会话。
- 页面分析:获取可访问性快照;识别所有表单字段;将字段标签映射到输入元素。
- 自动填写阶段:使用 fill() 或 fill_form() 填写文本字段;选择下拉选项;通过 upload_file() 上传文件/文件夹。
- 确认阶段:显示已填写数据的摘要;等待手动确认;用户检查并点击提交/发布。
使用的 MCP 工具
- take_snapshot:获取页面可访问性树
- fill:填写单个表单字段
- fill_form:一次填写多个字段
- upload_file:上传文件或文件夹
- browser_click:点击按钮
- evaluate_script:运行 JavaScript
- navigate_page:导航到 URL
凭据管理 安全存储(推荐):
- macOS Keychain: security add-generic-password -a "github" -s "autofillin" -w "your-password" security find-generic-password -a "github" -s "autofillin" -w
- Linux secret-tool: secret-tool store --label="autofillin-github" service autofillin username github
- Windows 凭据管理器: cmdkey /add:autofillin-github /user:github /pass:your-password
会话持久化 会话保存到 ~/.playwright-auth.json,包含 cookies、localStorage 和 sessionStorage。
错误处理
- 不安全浏览器:Google OAuth 阻止;改用 Playwright 而非 Chrome 调试。
- 需要登录:会话过期;使用 --save-storage 运行。
- 元素未找到:页面已更改;重新获取快照。
- 上传失败:文件类型错误;检查 webkitdirectory。
- 端口被占用:另一个 Chrome 实例;脚本自动终止冲突进程。
- 未找到 Chrome:未安装;运行 setup-env.sh。
故障排除 Chrome 无法以调试模式启动:
- 检查端口是否被占用:lsof -i:9222
- 终止现有进程:pkill -f "remote-debugging-port=9222"
- 重试:./scripts/start-chrome.sh "https://example.com"
会话未持久化:
- 验证认证文件存在:ls -la ~/.playwright-auth.json
- 重新认证:npx playwright open --save-storage=~/.playwright-auth.json "https://target-site.com"
文件上传不工作:
- 确保文件路径为绝对路径
- 检查文件权限:ls -la /path/to/file
- 对于文件夹上传,验证输入具有 webkitdirectory 属性
技能文件结构 autofillin/ ├── SKILL.md # 本文档(包含 MCP 配置) └── scripts/ ├── setup-env.sh # 环境设置(跨平台) ├── start-chrome.sh # Chrome 调试启动器 └── autofillin.sh # 带错误处理的主编排脚本
作者:GitHub @leohan123123 许可证:MIT