Communication
pinch-to-post
WordPress automation for Clawdbot.
---
name: pinch-to-post
description: WordPress automation for Clawdbot. Manage posts, pages, WooCommerce products, orders, inventory, comments, SEO (Yoast/RankMath), media via REST API or WP-CLI. Multi-site support, bulk operations, content health checks, markdown to Gutenberg, social cross-posting. 50+ featuresβjust ask.
metadata: {"clawdbot":{"emoji":"π¦","skillKey":"pinch-to-post","primaryEnv":"WP_APP_PASSWORD","requires":{"anyBins":["curl","wp"]}}}
user-invocable: true
---
# π¦ Pinch to Post `v3.1.0`
**Your WordPress site just got claws.**
The only WordPress skill you'll ever need. 50+ features. Zero admin panels. Just tell me what you want.
> **Keywords:** WordPress, WooCommerce, REST API, WP-CLI, blog automation, content management, ecommerce, posts, pages, media, comments, SEO, Yoast, RankMath, inventory, orders, coupons, bulk operations, multi-site, Gutenberg, publishing
## β‘ Watch This
```
You: "Create a post about sustainable coffee farming"
Bot: Done. Draft #1247 created. Want me to add a featured image?
You: "Publish all my drafts from this week"
Bot: Published 8 posts. Here are the links...
You: "Approve the good comments, spam the bots"
Bot: Approved 12, marked 47 as spam. Your comment section is clean.
```
No clicking. No admin panels. No friction.
## π Why Pinch to Post?
| Task | Manual (WP Admin) | With Pinch to Post |
|------|-------------------|-------------------|
| Create 10 posts | 15-20 minutes | 30 seconds |
| Update inventory on 50 products | 45 minutes | 1 minute |
| Moderate 100 comments | 20 minutes | 10 seconds |
| Check content health on 5 posts | 30 minutes | 15 seconds |
| Export all posts to markdown | Hours | 5 seconds |
**Time saved per week:** 2-4 hours. **Sanity saved:** Immeasurable.
## π What's New in v3.0
- **Markdown to Gutenberg** β Write markdown, publish as blocks
- **Content Health Scores** β Know if your post is ready before you publish
- **Social Cross-Posting** β Twitter, LinkedIn, Mastodon in one command
- **Content Calendar** β See your whole publishing schedule
- **Bulk Operations** β Mass publish, delete, approve
- **Multi-Site Management** β Control all your sites from one place
## π¬ What People Are Saying
> *"I used to spend my Sunday mornings moderating comments. Now I just say 'clean up the comments' and go make pancakes."*
> *"We manage 12 WordPress sites. This turned a full-time job into a 10-minute daily check-in."*
> *"I didn't know I needed this until I had it. Now I can't go back."*
## π Performance
Tested and optimized for:
- Sites with **50,000+ posts**
- WooCommerce stores with **10,000+ products**
- Media libraries with **100,000+ files**
Rate limiting built-in. Won't hammer your server.
## Quick Setup (60 Seconds)
### Step 1: Get Your Password
WordPress Admin β Users β Profile β Application Passwords β Add New β Copy it
### Step 2: Configure Me
```json
{
"skills": {
"entries": {
"pinch-to-post": {
"enabled": true,
"env": {
"WP_SITE_URL": "https://your-site.com",
"WP_USERNAME": "admin",
"WP_APP_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
}
}
}
}
}
```
### Step 3: There Is No Step 3
You're done. Go publish something.
## Running Multiple Sites? You Overachiever.
```json
{
"env": {
"WP_DEFAULT_SITE": "blog",
"WP_SITE_BLOG_URL": "https://blog.example.com",
"WP_SITE_BLOG_USER": "admin",
"WP_SITE_BLOG_PASS": "xxxx xxxx xxxx",
"WP_SITE_SHOP_URL": "https://shop.example.com",
"WP_SITE_SHOP_USER": "admin",
"WP_SITE_SHOP_PASS": "yyyy yyyy yyyy",
"WP_SITE_DOCS_URL": "https://docs.example.com",
"WP_SITE_DOCS_USER": "editor",
"WP_SITE_DOCS_PASS": "zzzz zzzz zzzz"
}
}
```
Now say "list posts on the shop site" and feel like a wizard.
## Got WooCommerce? Even Better.
```json
{
"env": {
"WC_CONSUMER_KEY": "ck_xxxxxxxxxxxxxxxx",
"WC_CONSUMER_SECRET": "cs_xxxxxxxxxxxxxxxx"
}
}
```
Products, orders, inventory, coupons, sales reports. All yours.
## Want Social Cross-Posting? (Fancy!)
```json
{
"env": {
"TWITTER_API_KEY": "...",
"TWITTER_API_SECRET": "...",
"TWITTER_ACCESS_TOKEN": "...",
"TWITTER_ACCESS_SECRET": "...",
"LINKEDIN_ACCESS_TOKEN": "...",
"MASTODON_INSTANCE": "https://mastodon.social",
"MASTODON_ACCESS_TOKEN": "..."
}
}
```
One post. Three platforms. Zero extra work.
# The Feature Feast π½οΈ
Everything below is what I can do. It's a lot. Grab a snack.
## Posts & Pages
The bread and butter. The peanut butter and jelly. The... you get it.
### Create a Post
```bash
curl -X POST "${WP_SITE_URL}/wp-json/wp/v2/posts" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}" \
-H "Content-Type: application/json" \
-d '{
"title": "Post Title",
"content": "<!-- wp:paragraph --><p>Your brilliant words here</p><!-- /wp:paragraph -->",
"excerpt": "Brief summary for SEO nerds",
"status": "draft",
"categories": [1, 5],
"tags": [10, 15],
"featured_media": 123
}'
```
### Update a Post
```bash
curl -X POST "${WP_SITE_URL}/wp-json/wp/v2/posts/{id}" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}" \
-H "Content-Type: application/json" \
-d '{"title": "Even Better Title", "status": "publish"}'
```
### Delete a Post (Goodbye, Old Friend)
```bash
# Soft delete (trash)
curl -X DELETE "${WP_SITE_URL}/wp-json/wp/v2/posts/{id}" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}"
# Hard delete (gone forever)
curl -X DELETE "${WP_SITE_URL}/wp-json/wp/v2/posts/{id}?force=true" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}"
```
### Find Your Posts
```bash
# Recent stuff
curl -s "${WP_SITE_URL}/wp-json/wp/v2/posts?per_page=20&status=any" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}"
# Search (where did I put that post about llamas?)
curl -s "${WP_SITE_URL}/wp-json/wp/v2/posts?search=llamas" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}"
# By category
curl -s "${WP_SITE_URL}/wp-json/wp/v2/posts?categories=5" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}"
# By date (time travelers welcome)
curl -s "${WP_SITE_URL}/wp-json/wp/v2/posts?after=2026-01-01T00:00:00&before=2026-01-31T23:59:59" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}"
```
### Schedule a Post (Future You Will Thank You)
```bash
curl -X POST "${WP_SITE_URL}/wp-json/wp/v2/posts" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}" \
-H "Content-Type: application/json" \
-d '{
"title": "This Post Is From The Future",
"content": "Scheduled content, so fancy",
"status": "future",
"date": "2026-02-15T10:00:00"
}'
```
### Pages Too!
```bash
curl -X POST "${WP_SITE_URL}/wp-json/wp/v2/pages" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}" \
-H "Content-Type: application/json" \
-d '{
"title": "About Us (We're Pretty Great)",
"content": "Page content here",
"status": "publish",
"template": "templates/full-width.php"
}'
```
## Media Management
Pictures! Videos! PDFs! All the things!
### Upload an Image
```bash
curl -X POST "${WP_SITE_URL}/wp-json/wp/v2/media" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}" \
-H "Content-Disposition: attachment; filename=masterpiece.jpg" \
-H "Content-Type: image/jpeg" \
--data-binary @/path/to/masterpiece.jpg
```
### Add Alt Text (Because Accessibility Matters)
```bash
curl -X POST "${WP_SITE_URL}/wp-json/wp/v2/media/${MEDIA_ID}" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}" \
-H "Content-Type: application/json" \
-d '{
"title": "Hero Image",
"alt_text": "A majestic llama wearing sunglasses",
"caption": "Living its best life"
}'
```
### Set Featured Image
```bash
curl -X POST "${WP_SITE_URL}/wp-json/wp/v2/posts/{post_id}" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}" \
-H "Content-Type: application/json" \
-d '{"featured_media": 456}'
```
## Categories & Tags
Organize your chaos.
### List Categories
```bash
curl -s "${WP_SITE_URL}/wp-json/wp/v2/categories?per_page=100&hide_empty=false" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}"
```
### Create a Category
```bash
curl -X POST "${WP_SITE_URL}/wp-json/wp/v2/categories" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}" \
-H "Content-Type: application/json" \
-d '{"name": "Hot Takes", "slug": "hot-takes", "description": "Opinions nobody asked for"}'
```
### Tags Work the Same Way
```bash
curl -X POST "${WP_SITE_URL}/wp-json/wp/v2/tags" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}" \
-H "Content-Type: application/json" \
-d '{"name": "must-read", "slug": "must-read"}'
```
## Comments
The good, the bad, and the spammy.
### See Pending Comments
```bash
curl -s "${WP_SITE_URL}/wp-json/wp/v2/comments?status=hold" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}"
```
### Approve a Comment
```bash
curl -X POST "${WP_SITE_URL}/wp-json/wp/v2/comments/{id}" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}" \
-H "Content-Type: application/json" \
-d '{"status": "approved"}'
```
### Mark as Spam (Begone, Bot!)
```bash
curl -X POST "${WP_SITE_URL}/wp-json/wp/v2/comments/{id}" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}" \
-H "Content-Type: application/json" \
-d '{"status": "spam"}'
```
### Reply to a Comment (Be Nice)
```bash
curl -X POST "${WP_SITE_URL}/wp-json/wp/v2/comments" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}" \
-H "Content-Type: application/json" \
-d '{
"post": {post_id},
"parent": {comment_id},
"content": "Thanks for reading! You rock."
}'
```
### Bulk Approve Everything (YOLO Mode)
```bash
for id in $(curl -s "${WP_SITE_URL}/wp-json/wp/v2/comments?status=hold&per_page=100" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}" | jq -r '.[].id'); do
curl -X POST "${WP_SITE_URL}/wp-json/wp/v2/comments/${id}" \
-u "${WP_USERNAME}:${WP_APP_PASSWORD}" \
-H "Content-Type: application/json" \
-d '{"status": "approved"}'
done
```
## WooCommerce π
Ka-ching! Let's make some money.
### Products
```bash
# List 'em
curl -s "${WP_SITE_URL}/wp-json/wc/v3/products?per_page=20" \
-u "${WC_CONSUMER_KEY}:${WC_CONSUMER_SECRET}"
# Create one
curl -X POST "${W
... (truncated)
communication
By
Comments
Sign in to leave a comment