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.
A self-scheduling execution layer for AI agents. Not just content automation — it's how agents schedule themselves to achieve goals autonomously.
Use this skill when:
Data Machine is designed with AI agents as primary users. It functions as a reminder system + task manager + workflow executor all in one.
| 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) |
Pipeline (template) → Flow (instance) → Job (execution)
| Type | Purpose | Has Queue |
|------|---------|-----------|
| fetch | Import data (RSS, Sheets, Files, Reddit) | No |
| ai | Process with AI (multi-turn, tools) | Yes |
| publish | Output (WordPress, Twitter, Discord) | No |
| update | Modify existing content | No |
| agent_ping | Webhook to external agents | Yes |
Configure via scheduling_config in the flow:
| Interval | Behavior |
|----------|----------|
| manual | Only runs when triggered via UI or CLI |
| daily | Runs once per day |
| hourly | Runs once per hour |
| {"cron": "0 9 * * 1"} | Cron expression (e.g., Mondays at 9am) |
wp datamachine flows list
wp datamachine flows get <flow_id>
wp datamachine flows run <flow_id>
wp datamachine jobs list --limit=10
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.
# 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>
When an agent receives a ping, it should:
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.
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:
Agent Ping steps send webhooks to external agent frameworks (OpenClaw, LangChain, custom handlers).
webhook_url: Where to send the pingprompt: Static prompt, or leave empty to use queuequeue_enabled: Whether to pop from queue when prompt is emptyThe ping includes:
Note: Data Machine is agent-agnostic. It sends webhooks — whatever listens on the URL handles the prompt.
When publishing WordPress content, taxonomies can be handled three ways:
| Selection | Behavior |
|-----------|----------|
| skip | Don't assign this taxonomy |
| ai_decides | AI provides values via tool parameters |
| <term_id\|name\|slug> | Pre-select specific term |
When ai_decides is set:
Best Practice: AI taxonomy selection works for simple cases. For complex categorization, use skip and assign programmatically after publish.
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.
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?"
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>
tail -f wp-content/uploads/datamachine-logs/datamachine-pipeline.log
wp datamachine jobs list --status=failed
# List pending actions
wp action-scheduler run --hooks=datamachine --force
# Check cron
wp cron event list
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
Daily Flow:
→ Agent Ping: "Check for failed jobs, investigate issues"
Weekly Flow:
→ Agent Ping: "Review analytics, identify optimization opportunities"
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.
For contributors working on Data Machine itself:
inc/Core/Steps/inc/Abilities/inc/Cli/inc/Core/WordPress/TaxonomyHandler.phpinc/Core/Steps/QueueableTrait.phpinc/Core/Admin/Pages/Pipelines/assets/react/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.
Data Machine is installed from GitHub:
https://github.com/Extra-Chill/data-machine
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.
If you encounter bugs or unexpected behavior:
wp-content/uploads/datamachine-logs/)Agents filing clear, detailed issues are incredibly helpful for development.
PRs are welcome! If you've fixed a bug or added a feature:
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.
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.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer