Install
openclaw skills install page-filed-analyzerAnalyzes form fields on a live webpage using browser automation. Use when the user provides an online URL/link and wants to count and analyze form input fields on that page.
openclaw skills install page-filed-analyzerAnalyzes form fields on live webpages using browser automation.
When the user provides an online URL, perform the following steps:
Use mcp__browser-use__new_page to open the provided URL
Wait for the page to fully load (use mcp__browser-use__wait_for if needed)
Use mcp__browser-use__take_snapshot to get the page's accessibility tree
From the snapshot, identify and count these form field types:
input[type="text"] - Text inputsinput[type="number"] - Number inputsinput[type="email"] - Email inputsinput[type="password"] - Password inputsinput[type="tel"] - Phone inputsinput[type="date"] - Date inputsinput[type="file"] - File uploadsinput[type="checkbox"] - Checkboxesinput[type="radio"] - Radio buttonsselect - Dropdown selectstextarea - Text areasbutton[type="submit"] - Submit buttonsIf the snapshot doesn't provide enough detail, use mcp__browser-use__evaluate_script to run:
() => {
const fields = {
inputs: document.querySelectorAll('input').length,
textInputs: document.querySelectorAll('input[type="text"], input:not([type])').length,
numberInputs: document.querySelectorAll('input[type="number"]').length,
checkboxes: document.querySelectorAll('input[type="checkbox"]').length,
radios: document.querySelectorAll('input[type="radio"]').length,
selects: document.querySelectorAll('select').length,
textareas: document.querySelectorAll('textarea').length,
dateInputs: document.querySelectorAll('input[type="date"], input[type="datetime-local"]').length,
fileInputs: document.querySelectorAll('input[type="file"]').length,
// Ant Design / CN-UI specific
antInputs: document.querySelectorAll('.ant-input, .cn-input').length,
antSelects: document.querySelectorAll('.ant-select, .cn-select').length,
antDatePickers: document.querySelectorAll('.ant-picker, .cn-date-picker').length,
antCheckboxes: document.querySelectorAll('.ant-checkbox, .cn-checkbox').length,
antRadios: document.querySelectorAll('.ant-radio, .cn-radio').length,
antSwitches: document.querySelectorAll('.ant-switch, .cn-switch').length,
antUploads: document.querySelectorAll('.ant-upload, .cn-upload').length,
// Form items (containers)
formItems: document.querySelectorAll('.ant-form-item, .cn-form-item, .next-form-item').length,
};
// Calculate total unique fields
fields.totalFields = fields.formItems || (
fields.textInputs + fields.numberInputs + fields.checkboxes +
fields.radios + fields.selects + fields.textareas +
fields.dateInputs + fields.fileInputs
);
return fields;
}
Format the results as a markdown table:
## Page Field Statistics: [Page URL]
### Form Fields Summary
| Field Type | Count |
|------------|-------|
| Text Inputs | X |
| Number Inputs | X |
| Selects/Dropdowns | X |
| Checkboxes | X |
| Radio Buttons | X |
| Date Pickers | X |
| File Uploads | X |
| Text Areas | X |
| Switches | X |
### Total
- **Total Form Fields**: X
- **Total Form Items/Groups**: X
### Notes
- [Any observations about the form structure]
User input:
https://example.com/form-page
Output:
## Page Field Statistics: https://example.com/form-page
### Form Fields Summary
| Field Type | Count |
|------------|-------|
| Text Inputs | 12 |
| Number Inputs | 3 |
| Selects/Dropdowns | 8 |
| Checkboxes | 2 |
| Date Pickers | 4 |
### Total
- **Total Form Fields**: 29
- **Total Form Items/Groups**: 29