Wp-openclaw data-machine
Self-scheduling execution layer for autonomous task orchestration. Use for queuing tasks, chaining pipeline executions, scheduling recurring work, and 24/7 autonomous operation via Agent Ping webhooks.
git clone https://github.com/Sarai-Chinwag/wp-openclaw
T=$(mktemp -d) && git clone --depth=1 https://github.com/Sarai-Chinwag/wp-openclaw "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data-machine" ~/.claude/skills/sarai-chinwag-wp-openclaw-data-machine && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/Sarai-Chinwag/wp-openclaw "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/data-machine" ~/.openclaw/skills/sarai-chinwag-wp-openclaw-data-machine && rm -rf "$T"
skills/data-machine/SKILL.mdData Machine Skill
A self-scheduling execution layer for AI agents. Not just content automation — it's how agents schedule themselves to achieve goals autonomously.
When to Use This Skill
Use this skill when:
- Setting up automated workflows (content generation, publishing, notifications)
- Creating self-scheduling patterns (reminders, recurring tasks)
- Building multi-phase projects with queued task progression
- Configuring Agent Ping webhooks to trigger external agents
Core Philosophy
Data Machine is designed with AI agents as primary users. It functions as a reminder system + task manager + workflow executor all in one.
Three Key Concepts
- Flows operate on schedules — Configure "ping me at X time to do Y"
- Step-level prompt queues — Each ping can be a different task instruction
- Multiple purpose-specific flows — Separate flows for separate concerns
Mental Model
| Role | How It Works |
|---|---|
| Reminder System | Flows run on schedules (daily, hourly, cron) and ping the agent |
| Task Manager | Queues hold task backlog; each run pops the next task |
| Workflow Executor | Pipeline steps execute work (AI generation, publishing, API calls) |
Architecture Overview
Execution Model
Pipeline (template) → Flow (instance) → Job (execution)
- Pipeline: Reusable workflow template with steps
- Flow: Instance of a pipeline with specific configuration and schedule
- Job: Single execution of a flow
Step Types
| Type | Purpose | Has Queue |
|---|---|---|
| Import data (RSS, Sheets, Files, Reddit) | No |
| Process with AI (multi-turn, tools) | Yes |
| Output (WordPress, Twitter, Discord) | No |
| Modify existing content | No |
| Webhook to external agents | Yes |
Scheduling Options
Configure via
scheduling_config in the flow:
| Interval | Behavior |
|---|---|
| Only runs when triggered via UI or CLI |
| Runs once per day |
| Runs once per hour |
| Cron expression (e.g., Mondays at 9am) |
Working with Flows
List Flows
wp datamachine flows list
Get Flow Details
wp datamachine flows get <flow_id>
Run a Flow Manually
wp datamachine flows run <flow_id>
Check Job Status
wp datamachine jobs list --limit=10
Prompt Queues
Both AI and Agent Ping steps support queues via
QueueableTrait. If the configured prompt is empty and queue_enabled is true, the step pops from its queue.
This enables varied task instructions per execution — not the same prompt every time.
Queue Management
# Add to queue wp datamachine flows queue add <flow_id> "Task instruction here" # List queue contents wp datamachine flows queue list <flow_id> # Clear queue wp datamachine flows queue clear <flow_id>
Chaining Pattern
When an agent receives a ping, it should:
- Execute the immediate task
- Queue the next logical task (if continuation needed)
- Let the cycle continue
Ping: "Phase 1: Design the architecture" → Agent designs, writes DESIGN.md → Agent queues: "Phase 2: Implement schema per DESIGN.md" Ping: "Phase 2: Implement schema per DESIGN.md" → Agent implements → Agent queues: "Phase 3: Build API endpoints"
The queue becomes the agent's persistent project memory — multi-phase work is tracked in the queue, not held in context.
Purpose-Specific Flows
Critical pattern: Don't try to do everything in one flow. Create separate flows for separate concerns:
Flow: Content Generation (queue-driven) → AI Step (pops topic from queue) → Publish → Agent Ping Flow: Content Ideation (daily) → Agent Ping: "Review analytics, add topics to content queue" Flow: Weekly Review (cron: Monday 9am) → Agent Ping: "Analyze last week's performance" Flow: Coding Tasks (manual, queue-driven) → Agent Ping (pops from queue): specific coding task instructions
Each flow has its own:
- Schedule: When it runs
- Queue: Task backlog specific to that workflow
- Purpose: Single responsibility, clear scope
Agent Ping Configuration
Agent Ping steps send webhooks to external agent frameworks (OpenClaw, LangChain, custom handlers).
Handler Configuration
: Where to send the pingwebhook_url
: Static prompt, or leave empty to use queueprompt
: Whether to pop from queue when prompt is emptyqueue_enabled
Webhook Payload
The ping includes:
- Flow and job context
- The prompt (from config or queue)
- Any data from previous steps
Note: Data Machine is agent-agnostic. It sends webhooks — whatever listens on the URL handles the prompt.
Taxonomy Handling (Publishing)
When publishing WordPress content, taxonomies can be handled three ways:
| Selection | Behavior |
|---|---|
| Don't assign this taxonomy |
| AI provides values via tool parameters |
| Pre-select specific term |
AI Decides Mode
When
ai_decides is set:
- TaxonomyHandler generates a tool parameter for that taxonomy
- AI provides term names in its tool call
- Handler assigns terms (creating if needed)
- Hierarchical taxonomies (category): expects single string
- Non-hierarchical (tags): expects array of strings
Best Practice: AI taxonomy selection works for simple cases. For complex categorization, use
skip and assign programmatically after publish.
Key AI Tools
skip_item
Allows AI to skip items that shouldn't be processed:
Before generating content: 1. Search for similar existing posts 2. If duplicate found, use skip_item("duplicate of [existing URL]")
The tool marks the item as processed and sets job status to
agent_skipped.
local_search
Search site content for duplicate detection:
# Search by title local_search(query="topic name", title_only=true)
Tip: Search for core topic, not exact title. "pelicans dangerous" catches "Are Australian Pelicans Dangerous?"
CLI Reference
Note: If running WP-CLI as root, add
--allow-root to commands.
# Settings wp datamachine settings list wp datamachine settings get <key> wp datamachine settings set <key> <value> # Flows wp datamachine flows list wp datamachine flows get <flow_id> wp datamachine flows run <flow_id> # Queues wp datamachine flows queue add <flow_id> "prompt" wp datamachine flows queue list <flow_id> wp datamachine flows queue clear <flow_id> # Jobs wp datamachine jobs list [--status=<status>] [--limit=<n>] wp datamachine jobs get <job_id>
Debugging
Check Logs
tail -f wp-content/uploads/datamachine-logs/datamachine-pipeline.log
Failed Jobs
wp datamachine jobs list --status=failed
Scheduled Actions
# List pending actions wp action-scheduler run --hooks=datamachine --force # Check cron wp cron event list
Common Patterns
Self-Improving Content Pipeline
1. Fetch topics (RSS, manual queue, or AI ideation) 2. AI generates content with local_search to avoid duplicates 3. Publish to WordPress 4. Agent Ping to notify agent for image addition / promotion
Autonomous Maintenance
Daily Flow: → Agent Ping: "Check for failed jobs, investigate issues" Weekly Flow: → Agent Ping: "Review analytics, identify optimization opportunities"
Multi-Phase Project Execution
Queue tasks in sequence: "Phase 1: Research and planning" "Phase 2: Implementation" "Phase 3: Testing" "Phase 4: Documentation" Flow runs daily, pops next phase, agent executes and queues follow-up if needed.
Code Locations
For contributors working on Data Machine itself:
- Steps:
inc/Core/Steps/ - Abilities:
inc/Abilities/ - CLI:
inc/Cli/ - Taxonomy Handler:
inc/Core/WordPress/TaxonomyHandler.php - Queueable Trait:
inc/Core/Steps/QueueableTrait.php - React UI:
inc/Core/Admin/Pages/Pipelines/assets/react/
Development Status & Contributing
Data Machine is in active development. It works well (Sarai uses it daily), but it's not yet available on WordPress.org — no auto-updates.
Installation Source
Data Machine is installed from GitHub:
https://github.com/Extra-Chill/data-machine
Updating
To get the latest version:
cd /path/to/wp-content/plugins/data-machine git pull origin main
Check for breaking changes in the CHANGELOG before updating production sites.
Reporting Issues
If you encounter bugs or unexpected behavior:
- Check existing issues: https://github.com/Extra-Chill/data-machine/issues
- Open a new issue with:
- What you were trying to do
- What happened instead
- Steps to reproduce
- Relevant logs (
)wp-content/uploads/datamachine-logs/
Agents filing clear, detailed issues are incredibly helpful for development.
Contributing
PRs are welcome! If you've fixed a bug or added a feature:
- Fork the repository
- Create a feature branch
- Make your changes (follow existing code patterns)
- Submit a PR with clear description
For agents: If you hit a limitation or bug, consider fixing it and submitting a PR rather than working around it. Permanent fixes beat workarounds.
Expectations
- Features may change between versions
- Some edges cases may not be handled yet
- The maintainer (Extra Chill) is responsive to issues
- This is production-ready but evolving
This skill teaches AI agents how to use Data Machine for autonomous operation. For contributing to Data Machine development, see AGENTS.md in the repository root.