Manage the Senso content verification and publishing workflow. List items awaiting review, approve or reject content versions, publish to external destinations, save drafts, manage content ownership, and unpublish content. Use when the user wants to review, approve, reject, or publish generated content.
npx @senso-ai/shipables install senso-ai/senso-review-publishManage the content verification pipeline and publish content to external destinations. Content flows through: draft -> review -> published (or rejected -> restored to draft).
npm install -g @senso-ai/cli
export SENSO_API_KEY=<your-key>
Every senso command must include --output json --quiet.
Draft ──> Review ──> Published
│
v
Rejected ──> Restored (back to Draft)
Published content can also be unpublished (reverted to draft).
# All items in the verification workflow
senso content verification --output json --quiet
# Filter by status
senso content verification --status draft --output json --quiet
senso content verification --status review --output json --quiet
senso content verification --status rejected --output json --quiet
senso content verification --status published --output json --quiet
# Search by title
senso content verification --search "refund policy" --output json --quiet
# With pagination
senso content verification --limit 20 --offset 0 --output json --quiet
senso content get <content_id> --output json --quiet
Returns the full content detail including all versions, metadata, processing status, and publish status.
senso engine publish --data '{
"geo_question_id": "<prompt_uuid>",
"raw_markdown": "# Article Title\n\nArticle content here...",
"seo_title": "SEO-Optimized Title for the Article",
"summary": "Brief summary of the article content"
}' --output json --quiet
Required fields:
geo_question_id — the prompt ID this content was generated forraw_markdown — the content body in markdownseo_title — the SEO titleOptional fields:
summary — a brief summarySave content for review before publishing:
senso engine draft --data '{
"geo_question_id": "<prompt_uuid>",
"raw_markdown": "# Draft Article\n\nContent still being refined...",
"seo_title": "Draft Title",
"summary": "Work in progress"
}' --output json --quiet
Same fields as publish — the content is saved but not pushed to external destinations.
Reject a content version with an optional reason:
# Reject with a reason
senso content reject <version_id> --reason "Needs more supporting data in section 3" --output json --quiet
# Reject without a reason
senso content reject <version_id> --output json --quiet
Note: The reject command uses a version_id, not a content_id. Get version IDs from senso content get <content_id>.
Restore a rejected version back to draft status for further editing:
senso content restore <version_id> --output json --quiet
Remove published content from external destinations and revert to draft:
senso content unpublish <content_id> --output json --quiet
Permanently remove a content item:
senso content delete <content_id> --output json --quiet
This cannot be undone. Always confirm with the user before deleting.
Owners are responsible for reviewing and approving content.
senso content owners <content_id> --output json --quiet
senso content set-owners <content_id> --user-ids <user_id_1> <user_id_2> --output json --quiet
This replaces all existing owners with the specified user IDs.
senso content remove-owner <content_id> <user_id> --output json --quiet
To find user IDs for setting ownership:
senso users list --output json --quiet
senso members list --output json --quiet
When the user asks to "review content" or "check what's pending":
List pending items:
senso content verification --status review --output json --quiet
Show each item to the user — display the title, summary, and content
For each item, ask the user: "Approve (publish), reject, or skip?"
Act on their decision:
senso engine publishsenso content reject <version_id> --reason "..."Summary: Tell the user how many items were published, rejected, and skipped
After using the senso-content-gen skill to generate content:
senso generate sample command returns generated content inlinesenso engine publish using the generated markdown, SEO title, and the prompt ID| HTTP Status | Meaning | Action |
|---|---|---|
| 401 | Invalid or missing API key | Check SENSO_API_KEY |
| 404 | Content or version not found | Verify the ID with senso content verification or senso content get |
| 409 | Conflict — operation already in progress | Another publish/reject operation is running. Wait and retry. |
| 422 | Unprocessable | Check that geo_question_id, raw_markdown, and seo_title are all provided for publish/draft |
SENSO_API_KEYSenso API key for authenticating CLI commands