An advanced form automation system using Pi Pico, Chrome extension, and n8n workflows.
- Detects form fields on web pages
- Calculates absolute coordinates with browser chrome offsets
- Sends form data to local automation server
- Controls Pi Pico via serial connection
- Handles automation commands from n8n
- Simulates natural reading behavior
- Fixed: DELAY commands now handled locally, no longer blocks command queue
- Processes form field data
- Uses AI to generate realistic form values
- Converts to Pi Pico commands
- Alternative Pi Pico controller with advanced humanization
- Curved mouse movements with human-like imperfections
- Variable typing speeds and natural delays
-
Install dependencies:
npm install
-
Load Chrome extension:
- Go to
chrome://extensions/ - Enable Developer mode
- Load unpacked extension from
extension/folder
- Go to
-
Start automation server:
node reading-behavior.js
-
Import n8n workflow:
- Import
form-automation-workflow.jsoninto n8n - Configure Anthropic API credentials
- Import
- Load a web page with forms
- Extension automatically detects form fields
- n8n workflow generates automation commands
- Pi Pico executes physical mouse/keyboard actions
- Human-like automation: Natural mouse movements, variable typing speeds
- Form field detection: Automatic identification and coordinate calculation
- AI-powered form filling: Claude generates realistic form data
- Physical hardware control: Pi Pico bypasses software-based bot detection
- Reading behavior simulation: Realistic browsing patterns while forms are processed
- ✅ DELAY commands now processed locally instead of being sent to Pico
- ✅ Command queue no longer blocks on missing "OK" responses
- ✅ Proper error handling for serial port operations
- ✅ Coordination between reading sessions and automation
- Raspberry Pi Pico with HID firmware
- USB connection to computer
- Serial communication at 115200 baud
The system runs on port 3004 by default. Update the following if needed:
- Chrome extension endpoints in
content.js - n8n workflow HTTP request URL
- Server port in
reading-behavior.js