← 返回 Skills 市场
238
总下载
2
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install form-auto
功能描述
Universal form auto-fill tool for OpenClaw. Use when user needs to fill out web forms automatically. Supports job applications, registrations, surveys, and a...
使用说明 (SKILL.md)
Form Auto
Universal web form auto-fill tool. Automatically fills out any web form using OpenClaw's browser automation.
Features
- 📝 Universal Form Fill: Works with any web form
- 🔐 Browser Session: Uses existing login state
- 🎯 Smart Detection: Auto-detects form fields
- 📋 Template Support: Save and reuse form data
- 🌍 Multi-Language: Supports Chinese and English
- ⚡ Fast & Accurate: Reliable form filling
Trigger Conditions
- "帮我填表" / "Help me fill out this form"
- "自动填写报名表" / "Auto-fill registration form"
- "填写求职申请" / "Fill job application"
- "填写问卷" / "Fill out survey"
- "form-auto [url]"
⚠️ Privacy Warning
This skill accesses your browser profile to fill forms.
- 🔐 Reads browser session to access forms
- 📝 Fills form fields with your data
- 🌐 Interacts with websites on your behalf
- ⚠️ Only use on trusted websites
Step 1: Get User Information
Ask user for the information needed to fill the form:
请提供需要填写的信息:
基本信息:
- 姓名: ___
- 手机号: ___
- 邮箱: ___
- 地址: ___
其他信息(根据表单):
- 公司: ___
- 职位: ___
- 备注: ___
Or use saved profile from previous sessions.
Step 2: Open Form URL
// Open the form page
await browser.open({
url: "https://example.com/form"
})
// Wait for page load
await browser.wait({ timeout: 5000 })
Step 3: Detect Form Fields
// Detect all form fields on the page
const formFields = await browser.evaluate(() => {
const fields = []
// Find all input elements
document.querySelectorAll('input, select, textarea').forEach(el => {
const field = {
type: el.type || el.tagName.toLowerCase(),
name: el.name || '',
id: el.id || '',
placeholder: el.placeholder || '',
label: '',
required: el.required
}
// Try to find associated label
if (el.id) {
const label = document.querySelector(`label[for="${el.id}"]`)
if (label) field.label = label.innerText.trim()
}
// Or find parent label
if (!field.label) {
const parentLabel = el.closest('label')
if (parentLabel) field.label = parentLabel.innerText.trim()
}
// Or use placeholder as label
if (!field.label && el.placeholder) {
field.label = el.placeholder
}
fields.push(field)
})
return fields
})
console.log("检测到的表单字段:", formFields)
Step 4: Fill Form Fields
// Fill each field based on type and label
async function fillForm(userData) {
for (const field of formFields) {
const value = matchFieldToData(field, userData)
if (value) {
// Fill input/textarea
if (field.type === 'text' || field.type === 'email' ||
field.type === 'tel' || field.type === 'textarea') {
await browser.evaluate((id, name, val) => {
const el = id ? document.getElementById(id) :
document.querySelector(`[name="${name}"]`)
if (el) {
el.value = val
el.dispatchEvent(new Event('input', { bubbles: true }))
el.dispatchEvent(new Event('change', { bubbles: true }))
}
}, field.id, field.name, value)
}
// Fill select
if (field.type === 'select-one') {
await browser.evaluate((id, name, val) => {
const el = id ? document.getElementById(id) :
document.querySelector(`[name="${name}"]`)
if (el) {
el.value = val
el.dispatchEvent(new Event('change', { bubbles: true }))
}
}, field.id, field.name, value)
}
// Fill checkbox/radio
if (field.type === 'checkbox' || field.type === 'radio') {
if (value === 'true' || value === true) {
await browser.evaluate((id, name) => {
const el = id ? document.getElementById(id) :
document.querySelector(`[name="${name}"]`)
if (el && !el.checked) {
el.click()
}
}, field.id, field.name)
}
}
}
}
}
Step 5: Smart Field Matching
def match_field_to_data(field, user_data):
"""Match form field to user data based on label/name"""
label = (field.get('label', '') + ' ' +
field.get('name', '') + ' ' +
field.get('placeholder', '')).lower()
# Name matching
if any(kw in label for kw in ['姓名', '名字', 'name', '称呼']):
return user_data.get('name', '')
# Phone matching
if any(kw in label for kw in ['手机', '电话', 'phone', 'tel', 'mobile']):
return user_data.get('phone', '')
# Email matching
if any(kw in label for kw in ['邮箱', 'email', 'mail']):
return user_data.get('email', '')
# Address matching
if any(kw in label for kw in ['地址', 'address', '住址']):
return user_data.get('address', '')
# Company matching
if any(kw in label for kw in ['公司', 'company', '单位', '组织']):
return user_data.get('company', '')
# Position matching
if any(kw in label for kw in ['职位', 'position', '岗位', '职务']):
return user_data.get('position', '')
# ID card matching
if any(kw in label for kw in ['身份证', 'id card', '证件']):
return user_data.get('id_card', '')
return None
Step 6: Confirm & Submit
// Show filled form summary to user
const summary = await browser.evaluate(() => {
const filled = []
document.querySelectorAll('input, select, textarea').forEach(el => {
if (el.value) {
filled.push({
label: el.placeholder || el.name || el.id,
value: el.value
})
}
})
return filled
})
// Ask user to confirm
console.log("已填写的字段:")
summary.forEach(item => {
console.log(` ${item.label}: ${item.value}`)
})
// Wait for user confirmation before submit
// await browser.click({ selector: 'button[type="submit"]' })
Template System
Save commonly used form data:
{
"profile_name": "个人信息",
"data": {
"name": "张三",
"phone": "13800138000",
"email": "[email protected]",
"address": "北京市朝阳区xxx",
"company": "xxx科技有限公司",
"position": "产品经理"
}
}
Example Usage
求职申请表
User: "帮我填写这个求职申请表,网址是 https://company.com/apply"
Agent:
1. 打开网址
2. 检测表单字段
3. 询问用户信息(或使用保存的模板)
4. 自动填写
5. 展示填写结果
6. 等待用户确认提交
报名表
User: "填写这个培训班报名表,我的信息:姓名李四,手机13912345678,邮箱[email protected]"
Agent:
1. 打开报名表网址
2. 检测字段
3. 直接使用用户提供的信息填写
4. 展示结果确认
Error Handling
表单无法加载 → 提示用户检查网址
字段检测失败 → 提示手动填写或提供更多信息
填写失败 → 记录失败字段,继续填写其他
提交失败 → 提示用户手动提交
Multi-Language Support
- User language → Output language
- 支持中文和英文表单
Limitations
- 验证码: 无法自动填写验证码
- 复杂表单: 动态加载的表单可能需要额外处理
- 文件上传: 不支持自动上传文件
- 支付表单: 不支持自动填写支付信息
Privacy & Security
Data Handling
- ✅ No data uploaded to external servers
- ✅ All processing done locally
- ⚠️ Browser profile accessed during execution
- ⚠️ Form data entered on websites
Recommendations
- Trusted sites only: Only use on trusted websites
- Review before submit: Always review before submitting
- Sensitive data: Be careful with sensitive information
- Separate profile: Use separate browser profile for testing
Notes
- Requires OpenClaw v2026.3.22+ with browser automation
- Works with any standard HTML form
- Supports input, select, textarea, checkbox, radio
- Can save and reuse form data templates
安全使用建议
This skill appears to do what it says (automatically fill web forms) but it needs access to your browser session and may store form profiles. Before installing or using it: 1) Only use it on trusted sites — autofill will operate with your logged-in session and could submit sensitive data. 2) Ask the publisher (or inspect the full SKILL.md) how saved profiles are stored, encrypted, and deleted; avoid saving highly sensitive items (passwords, SSNs) in profiles. 3) Prefer invoking it manually rather than allowing autonomous runs; verify prompts before submission. 4) If possible run it against an ephemeral browser profile or in a test account to validate behavior. 5) Request the truncated remainder of the SKILL.md (or full file) and confirm there are no external upload endpoints or telemetry calls that would exfiltrate filled data. If you cannot get those assurances, treat the skill as privacy-sensitive and limit its use.
功能分析
Type: OpenClaw Skill
Name: form-auto
Version: 1.0.0
The 'form-auto' skill is a legitimate utility for automating web form completion. It uses standard browser automation techniques (browser.evaluate) to detect and fill HTML fields based on user-provided data or local templates. The code includes safety measures such as explicit privacy warnings, a confirmation step before submission, and lacks any evidence of data exfiltration, obfuscation, or unauthorized network activity.
能力评估
Purpose & Capability
The skill is a universal form autofill and the SKILL.md uses browser automation and simple field-matching logic; these requirements are coherent with the description. It declares python3 and needsBrowser: true in metadata (python3 plausibly used for the matching helper function, and browser access is required to operate). The only mismatch is marketing wording like "Works with any web form" (overbroad claim) but nothing else appears unrelated to the stated purpose.
Instruction Scope
The instructions explicitly state the skill will access the browser session / existing login state and run injected JS in arbitrary pages to detect and fill fields — this is necessary for autofill but is high-risk because it implicitly has access to cookies, auth tokens, and other sensitive page DOM. The SKILL.md also says "use saved profile from previous sessions" but does not specify where/how profiles are stored or protected, which raises concerns about persistent storage of user data. The provided runtime steps do not show any explicit external exfiltration, but a full review of the truncated portion is needed to ensure no hidden external endpoints or uploads are present.
Install Mechanism
Instruction-only skill with no install spec and no code files beyond SKILL.md — lowest install risk. Nothing is downloaded or written to disk by an installer in the manifest.
Credentials
The skill requests no environment variables or external credentials, which is proportionate. However, it requires access to the browser session (declared via needsBrowser), which is a legitimate need for a form-filling tool but is sensitive: browser profiles can contain cookies and tokens for unrelated services. The skill's use of saved profiles is not justified with storage details.
Persistence & Privilege
The skill is not always-enabled and is user-invocable; model invocation is allowed (platform default). It does not request elevated platform privileges in the manifest. Still, because it interacts with the browser session and mentions saved profiles, check how/where any persisted profile data would be stored and who can access it.
如何使用
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install form-auto - 安装完成后,直接呼叫该 Skill 的名称或使用
/form-auto触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
通用表单自动填写工具:利用OpenClaw v2026.3.22浏览器自动化,支持求职表、报名表、问卷等
元数据
常见问题
Form Auto 是什么?
Universal form auto-fill tool for OpenClaw. Use when user needs to fill out web forms automatically. Supports job applications, registrations, surveys, and a... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 238 次。
如何安装 Form Auto?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install form-auto」即可一键安装,无需额外配置。
Form Auto 是免费的吗?
是的,Form Auto 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Form Auto 支持哪些平台?
Form Auto 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Form Auto?
由 ToBeWin(@tobewin)开发并维护,当前版本 v1.0.0。
推荐 Skills