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.
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" |
When I break down your workflow, I follow these rules strictly:
One action, one output. "Open page and click download" becomes two steps.
After each step, I show you the output so you can confirm it's correct.
If your description is ambiguous, I ask a specific clarifying question.
I never guess what you meant.
If a step requires a tool I don't have yet, I tell you plainly and suggest
an alternative when possible.
I convert this to a one-shot scheduled job using OpenClaw's scheduling
"First of every month at 10am", "Every 6 hours"
I convert natural language to a cron expression
I add a condition-check step at the start of the workflow
when, I ask: "When should this run? Options: right now, at a specific time,
or on a recurring schedule."
every 2 minutes), I warn you about resource consumption and suggest
alternatives (every 15 minutes, every hour) before proceeding.
or sites where automated access could compromise your account security.
I explain why and suggest API alternatives when available.
You can manage schedules conversationally:
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.
stripe.com, and look for the latest invoice"
(OpenClaw's managed Chrome supports this)
"Your Stripe session expired. Please re-authenticate. I've paused
this workflow until you do."
(stored in ~/.openclaw/workflow-automator/screenshots/)
to domains listed in the plan's 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.
"⚠️ 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."
up to 3 times with exponential backoff (5s, 15s, 45s)
in 10 minutes"
Autonomous runs verify the hash before execution. If the plan file has
been modified since approval, execution is blocked and you are alerted.
(default 30 days). Expired approvals must be renewed to continue
autonomous execution. This forces periodic review of running workflows.
Once exhausted, the workflow pauses until re-approved.
in an append-only audit log at ~/.openclaw/workflow-automator/audit.log.
Use audit-log.sh read --failures to review failed runs or
audit-log.sh stats for a summary.
is checked. Sessions older than a configurable max (default 7 days) are
blocked, and the user is asked to re-authenticate. Set max_session_age_days
in the plan to override.
profile directory under ~/.openclaw/workflow-automator/sessions/.
One workflow's cookies cannot leak to another.
"clear_session": trueto wipe browser cookies/localStorage after the last step completes.
Use for one-time tasks that should not leave a logged-in session behind.
"restricted_mode": true. In this mode, only commands listed in 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 containingobfuscation patterns: base64, eval, exec, hex escapes (\x).
based on shell commands, browser steps, and file writes. High-risk
plans require --force to approve immediately.
number of shell commands, browser actions, file writes, URLs accessed,
and risk score. Forces the reviewer to see exactly what they're approving.
time in BOTH interactive and autonomous modes. Destructive patterns
are always hard-blocked. In autonomous mode, exfiltration and encoding
patterns are also hard-blocked. In interactive mode, dangerous patterns
trigger a secondary confirmation prompt — the user must type CONFIRM
to proceed, ensuring they explicitly acknowledge the risk rather than
rubber-stamping through a generic approval.
and browser profiles are set to owner-only access (chmod 700/600).
Other users on the system cannot read session cookies or approval data.
automatically wipes browser sessions older than 7 days. Stale cookies
don't accumulate on disk indefinitely.
data-inventory.sh show displays allpersistent data with disk usage, permissions, and sensitivity levels.
data-inventory.sh purge deletes data by category.
data-inventory.sh purge-workflow removes all traces of a workflow.
validate-plan.sh blocks browser automationof financial, banking, payment, and investment sites (Chase, PayPal,
Coinbase, etc.). These sites cannot be automated even with approval.
All runs are logged to ~/.openclaw/workflow-automator/runs/
I will refuse to execute commands that:
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)
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)
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.
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 4b
Step 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.
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.
This skill depends on the OpenClaw runtime for the following:
notify.sh outputs structured JSON describing thenotification (channel, message, urgency). The OpenClaw agent runtime is
responsible for delivering to WhatsApp/Telegram/Slack/email using
platform-managed credentials. This skill does NOT store or request
messaging API tokens.
check-schedules.sh must be called by an externalcron mechanism (OpenClaw's cron system or system crontab). This skill
manages schedule JSON files but does not install crontab entries itself.
sessions are managed by the OpenClaw platform. This skill emits browser
action JSON instructions; the platform drives the actual CDP session.
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.
共 1 个版本