Install
openclaw skills install @leostehlik/wordpress-receiptsPublish WordPress posts with API and public URL receipts.
openclaw skills install @leostehlik/wordpress-receiptsUse this skill when publishing a WordPress post from an OpenClaw task, cron job, or agent workflow where success must mean a real public artifact exists.
This is a skill, not a plugin. It uses the WordPress REST API and deterministic helper scripts, so it stays portable and auditable.
The helper scripts accept an env file passed with --env-file. The public helpers deliberately avoid ambient environment reads so static scanners do not see hidden credential access combined with network calls:
WORDPRESS_API_BASE=https://example.com/wp-json/wp/v2
WORDPRESS_USERNAME=publisher-user
WORDPRESS_APPLICATION_PASSWORD=application password may contain spaces
WORDPRESS_AUTHOR_ID=123
WORDPRESS_DEFAULT_CATEGORY_ID=1
Only the first three are required. Author and category can also be supplied by flags.
Recommended command:
node scripts/wp-publish-receipt.mjs \
--env-file .env.wordpress \
--title-file draft-title.txt \
--content-file draft.md \
--author 123 \
--category 1
For one-off verification:
node scripts/wp-verify-receipt.mjs --env-file .env.wordpress --date 2026-07-01
node scripts/wp-verify-receipt.mjs --env-file .env.wordpress --url https://example.com/post-slug/
node scripts/wp-verify-receipt.mjs --env-file .env.wordpress --id 456
For recurring publishing jobs, add a second scheduled proof check after the publishing window. The proof check should run wp-verify-receipt.mjs for the expected local date and alert on failure.
Good success signal:
{
"ok": true,
"id": 456,
"status": "publish",
"link": "https://example.com/post-slug/",
"publicStatus": 200
}
Bad success signal:
Cron run status: ok
That only proves the scheduler finished. It does not prove publication.
Receipt checks only help if the scheduler can start the runtime. For recurring jobs, prove the publisher and verifier from the same scheduler environment that will run them unattended.
Rules:
PATH in the scheduler definition, or call absolute paths to node, openclaw, and any wrapper scripts.0.Example stripped-env smoke:
env -i HOME="$HOME" USER="$USER" PATH="/usr/bin:/bin:/usr/sbin:/sbin" \
/opt/homebrew/bin/node scripts/wp-verify-receipt.mjs \
--env-file .env.wordpress \
--date 2026-07-01
Example launchd environment block:
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
For launchd jobs, verify with launchctl print that the loaded job has the expected environment, then use launchctl kickstart or another scheduler-native run path to prove the verifier exits successfully.
When reporting back to the user, include:
Keep the report short. If publishing failed, state whether a draft exists and what exact proof is missing.