Workflow Automator
by @qashsolutions
Automate repeatable workflows with WhatsApp/Telegram notifications, Excel/CSV processing, browser automation, and flexible scheduling. Describe tasks in plai...
clawhub install openclaw-workflow-automatorπ About This Skill
name: workflow-automator description: > Automate repeatable workflows with WhatsApp/Telegram notifications, Excel/CSV processing, browser automation, and flexible scheduling. Describe tasks in plain English β the agent decomposes, executes, and schedules them. Use when the user wants to automate multi-step tasks, schedule recurring workflows, extract data from websites, process files, or send reports to messaging channels. version: 2.0.6 metadata: openclaw: requires: env: - OPENCLAW_MESSAGING - OPENCLAW_BROWSER - OPENCLAW_CRON bins: - bash - jq - shasum - date - grep - sed - awk - mktemp - curl - bc primaryEnv: OPENCLAW_MESSAGING
Workflow Automator
Send reports to WhatsApp. Alert your team on Telegram. Process Excel files. Scrape websites. Schedule it all to run automatically. Describe what you want in plain English β I handle the rest.
What I can do:
You describe it once. I run it forever.
How It Works
1. You describe the workflow in plain English 2. I break it into steps and classify each one (file, data, API, browser, messaging) 3. I ask about scheduling: - "Run this right now?" - "Run on a schedule? When?" - "Trigger from an external event?" 4. I show you the full plan with schedule and notification settings 5. You approve, edit, or reject 6. First run: I execute step by step with your approval 7. If scheduled: subsequent runs are autonomous β no approval needed 8. After each run, I message you the results on WhatsApp/Telegram/Slack 9. On any failure: I alert you immediately on your preferred channel
Step Classification
When I decompose your workflow, each step gets classified:
| Type | What I Use | Examples | |------|-----------|---------| | file-read | cat, head, tail, less | "Read the CSV" | | file-write | tee, redirect (>) | "Save results to output.txt" | | file-transform | sed, awk, cut, sort, uniq | "Extract column 3", "Sort by date" | | data-parse | jq (JSON), csvtool, awk (CSV) | "Get the 'total' field from JSON" | | data-merge | jq, cat, paste | "Combine three files into one" | | compute | awk, bc | "Sum all values", "Calculate average" | | condition | test, [[ ]], grep -c, wc -l | "If file has more than 50 lines" | | api-call | curl | "POST to this webhook URL" | | notify | OpenClaw messaging | "Send me a Slack/WhatsApp/Telegram message" | | script-run | bash | "Run this script" | | browser-navigate | browser: goto URL | "Go to stripe.com/dashboard" | | browser-click | browser: click element | "Click the Download button" | | browser-fill | browser: type into field | "Enter my username" | | browser-extract | browser: read page content | "Get the invoice total" | | browser-screenshot | browser: capture page | "Take a screenshot of the report" | | browser-wait | browser: wait for element | "Wait for the table to load" | | schedule-set | cron | "Run this every Monday at 8am" | | schedule-once | cron (one-time) | "Run this tomorrow at 3pm" | | webhook-listen | webhook | "Trigger when Stripe sends a payment event" |
Decomposition Rules
When I break down your workflow, I follow these rules strictly:
Each step must be atomic
One action, one output. "Open page and click download" becomes two steps.Each step must specify input and output
Steps must be independently verifiable
After each step, I show you the output so you can confirm it's correct.When in doubt, I ask
If your description is ambiguous, I ask a specific clarifying question. I never guess what you meant.Unsupported operations are stated honestly
If a step requires a tool I don't have yet, I tell you plainly and suggest an alternative when possible.Scheduling System
Schedule Types
Schedule Guardrails
Schedule Management
You can manage schedules conversationally:
Schedule Storage
Schedules are stored in ~/.openclaw/workflow-automator/schedules/. Each schedule
is a JSON file containing:
{
"workflow_name": "Monday Report",
"cron_expression": "0 8 * * 1",
"steps": [ ... ],
"last_run": "2026-03-17T08:00:00Z",
"next_run": "2026-03-24T08:00:00Z",
"status": "active",
"notification_channel": "telegram",
"created_at": "2026-03-10T14:30:00Z",
"updated_at": "2026-03-10T14:30:00Z"
}
I read this directory to answer "what's scheduled?" and to manage your workflows.
See references/scheduling-guide.md for cron syntax details and schedule patterns.
Browser Automation Rules
Before browser steps
Credential handling
Browser safety
~/.openclaw/workflow-automator/screenshots/)
allowed_sites array. If allowed_sites
is not set, I warn but don't block (backwards compatible).See references/browser-guide.md for detailed browser automation patterns.
Error Handling and Notifications
On error during scheduled run
1. Stop the workflow at the failing step 2. Capture: error message, step number, screenshot (if browser step) 3. Immediately message you on your preferred channel: "β οΈ Workflow 'Monday Report' failed at Step 3 (browser-extract). Error: Element not found. Screenshot attached. Reply 'retry' to try again or 'skip' to continue from Step 4." 4. Wait for your response before proceeding 5. If no response within the configured timeout: mark as failed and log itRetry logic
Notification channels
Execution Rules
Before execution
First run vs scheduled runs
~/.openclaw/workflow-automator/audit.log.
Use audit-log.sh read --failures to review failed runs or
audit-log.sh stats for a summary.
max_session_age_days
in the plan to override.
~/.openclaw/workflow-automator/sessions/.
One workflow's cookies cannot leak to another.
"clear_session": true"restricted_mode": true.allowed_commands can run
(warnings become hard blocks), and inline interpreter execution
(e.g. inline scripting language execution) is forbidden.
validate-plan.sh flags commands containing--force to approve immediately.
data-inventory.sh show displays alldata-inventory.sh purge deletes data by category.
data-inventory.sh purge-workflow removes all traces of a workflow.
validate-plan.sh blocks browser automationDuring execution
After each step
Logging
All runs are logged to~/.openclaw/workflow-automator/runs/Safety
I will refuse to execute commands that:Plan Format
When I present your workflow plan, it looks like this:
WORKFLOW PLAN: [Your description]
SCHEDULE: Every Monday at 8:00 AM CST (cron: 0 8 * * 1)
NOTIFY: Telegram on completion, WhatsApp on failure
ALLOWED SITES: stripe.com, docs.google.com (browser scope)
βββββββββββββββββββββββββββββββββββββββββββββββStep 1 of N: [Description]
Type: [step type from classification table]
Input: [source]
Output: [destination]
Command: [exact command or browser action]
Step 2 of N: [Description]
Type: [step type]
Input: [source β may reference Step 1 output]
Output: [destination]
Command: [exact command or browser action]
...
APPROVE this plan and schedule? (yes / edit / reject)
Execution Output Format
After each step executes:
STEP 1 of N: [Description]
βββββββββββββββββββββββββ
Command: [what ran]
Status: SUCCESS (exit code 0) | FAILED (exit code N)
Duration: [seconds]Output:
[stdout, truncated to 50 lines β full output saved to log]
Errors:
[stderr, if any]
β Continue to Step 2? (yes / no / retry)
Completion Summary
After all steps finish:
WORKFLOW COMPLETE: [Name]
βββββββββββββββββββββββββ
Total steps: N
Passed: N
Failed: N
Duration: [total time]Files created/modified:
- [list of output files]
Schedule: Next run Monday March 24 at 8:00 AM CST
Notification: Results will be sent to Telegram
Status: Workflow completed successfully.
Conditional Workflows
If your workflow has branches ("if X then Y, else Z"), I handle it like this:
Step 3 of N: Check condition
Type: condition
Input: [what to check]
Check: [the condition]
If TRUE β proceed to Step 4a
If FALSE β proceed to Step 4bStep 4a: [Action if true]
...
Step 4b: [Action if false]
...
Step 5: [Continues from whichever branch executed]
I show you which branch was taken and why.
What I Can Do (Phase 2)
What I Cannot Do Yet
Platform Requirements
Required binaries
This skill requires the following tools in the runtime environment:bash, jq, shasum (or sha256sum), date, grep, sed, awk,
mktemp, curl, bc. Optional: timeout/gtimeout (for step timeouts),
wkhtmltopdf (for PDF invoice generation).Run check-environment.sh --verbose to verify your environment before
first use. The preflight check runs automatically on each workflow execution
and caches the result for one hour.
Runtime dependencies
This skill depends on the OpenClaw runtime for the following:notify.sh outputs structured JSON describing thecheck-schedules.sh must be called by an externalCredential and data storage disclosure
All credentials and data paths are declared in the SKILL.md frontmatter (platform_credentials, user_credentials, data_directories).~/.openclaw/workflow-automator/sessions/ with owner-only permissions
(chmod 700) and auto-expire after 7 days.