Content Commands
The content command group handles AI-powered content generation and distribution across newsletters, social media, and blogs. It also includes competitor ad scraping and a content pipeline for managing drafts through approval.
Subgroups
| Subgroup | Purpose |
|---|---|
content newsletter | Generate and distribute AI newsletters |
content social | Generate and publish social media posts |
content blog | Manage and publish blog content |
content scrape-ads | Scrape competitor advertising |
content pipeline | Content research pipeline: generate, approve, publish posts |
content report | Intelligence report generation from research notes |
content research | Research pipeline status, notes, and reports |
Newsletter
content newsletter generate
Generate an AI-powered newsletter for a specific brand.
# Generate for CRE-11TRUST brand
optimal content newsletter generate --brand CRE-11TRUST
# Generate for a specific date
optimal content newsletter generate --brand LIFEINSUR --date 2026-03-26| Flag | Description |
|---|---|
--brand | Brand identifier: CRE-11TRUST or LIFEINSUR (required) |
--date | Target date for the newsletter (defaults to today) |
content newsletter distribute
Send a generated newsletter through a distribution channel.
optimal content newsletter distribute --document-id abc123 --channel email| Flag | Description |
|---|---|
--document-id | ID of the generated newsletter document (required) |
--channel | Distribution channel (e.g. email, discord) |
content newsletter status
Check the distribution status of a newsletter.
optimal content newsletter status --document-id abc123| Flag | Description |
|---|---|
--document-id | Newsletter document ID (required) |
Social Media
content social generate
Generate social media posts using AI.
# Generate 9 posts for a brand (default count)
optimal content social generate --brand CRE-11TRUST
# Generate posts for a specific week with a campaign theme
optimal content social generate --brand LIFEINSUR --count 3 --week-of 2026-03-23 --campaign "Q1 Launch"
# Generate without pushing to Strapi
optimal content social generate --brand OPTIMAL --count 5 --dry-run| Flag | Description |
|---|---|
--brand | Brand identifier: OPTIMAL, CRE-11TRUST, or LIFEINSUR (required) |
--count | Number of posts to generate (default: 9) |
--week-of | Target week start date (YYYY-MM-DD, default: next Monday) |
--campaign | Campaign theme override (default: auto-rotated) |
--dry-run | Generate without pushing to Strapi |
Social publishing moved to Strapi
Direct social-publish CLI commands (content social publish, content social queue) have been removed from the CLI. Social distribution is handled by Strapi lifecycle hooks: when a post is published from the Strapi admin at strapi.optimal.miami, the afterCreate hook posts directly to X, Instagram, and Facebook via the OpenRouter LLM for tweet generation. n8n is no longer in the social distribution path.
To see what's queued, open the Strapi admin's social-posts collection. To publish, click Publish there.
content social instagram
Publish posts specifically to Instagram.
optimal content social instagram --brand CRE-11TRUST --limit 1| Flag | Description |
|---|---|
--brand | Brand identifier (required) |
--limit | Maximum number of posts to publish |
TIP
Instagram publishing requires additional API credentials. Run optimal config doctor to verify your Instagram integration is configured.
Blog
content blog drafts
List unpublished blog drafts.
# List all drafts
optimal content blog drafts
# Filter by site
optimal content blog drafts --site optimal.miami| Flag | Description |
|---|---|
--site | Filter drafts by site |
content blog publish
Publish a blog post by slug.
# Publish a specific post
optimal content blog publish --slug quarterly-market-update
# Publish and trigger a deployment
optimal content blog publish --slug quarterly-market-update --deploy| Flag | Description |
|---|---|
--slug | Blog post slug (required) |
--deploy | Trigger a site deployment after publishing |
Ad Scraping
content scrape-ads
Scrape competitor advertising data.
# Scrape ads from specific companies
optimal content scrape-ads --companies "Acme Corp,Beta Inc" --output ./ads-data.json
# Control batch size for rate limiting
optimal content scrape-ads --companies "Acme Corp" --output ./ads.json --batch-size 10| Flag | Description |
|---|---|
--companies | Comma-separated list of company names (required) |
--output | Output file path (required) |
--batch-size | Number of concurrent scrape requests |
Content Pipeline
The pipeline subcommands manage the full lifecycle of content from scraped data through AI generation to published posts.
content pipeline status
Show the current state of the content pipeline, including scraped items, insights, and post counts.
optimal content pipeline statuscontent pipeline generate
Generate an AI post for a platform from the latest insight.
optimal content pipeline generate --platform twitter
optimal content pipeline generate --platform facebook --topic openclaw| Flag | Description |
|---|---|
--platform | Platform: twitter or facebook (required) |
--topic | Topic to generate for (default: openclaw) |
content pipeline approve
Approve a draft post for Strapi sync.
optimal content pipeline approve --id <uuid>| Flag | Description |
|---|---|
--id | Post UUID to approve (required) |
content pipeline publish
Publish an approved post to its platform (X/Twitter).
optimal content pipeline publish --id <uuid>| Flag | Description |
|---|---|
--id | Post UUID to publish (required) |
content pipeline sync
Sync approved posts from Supabase to Strapi for editorial review.
optimal content pipeline synccontent pipeline auto-generate
Generate posts automatically from the freshest available insight without specifying flags interactively. Cron-friendly.
# Auto-generate using the default platform rotation
optimal content pipeline auto-generate
# Force a specific platform
optimal content pipeline auto-generate --platform twitter| Flag | Description |
|---|---|
--platform | Platform to generate for. If omitted, the command picks the next platform in rotation. |
content pipeline scrape-feeds
Scrape RSS / X feeds for the configured topic and stage them for the next pipeline generation pass.
# Scrape default topic (openclaw)
optimal content pipeline scrape-feeds
# Different topic, skip Twitter/X
optimal content pipeline scrape-feeds --topic returnpro --skip-twitter| Flag | Description |
|---|---|
--topic | Topic to scrape (default: openclaw). |
--skip-twitter | Skip Twitter/X feed scraping. Useful when X rate-limits are tight. |
content pipeline list
List posts in the pipeline, optionally filtered by status and platform.
# List all posts
optimal content pipeline list
# List only drafts
optimal content pipeline list --status draft
# List approved Twitter posts
optimal content pipeline list --status approved --platform twitter| Flag | Description |
|---|---|
--status | Filter by status (draft, approved, posted, failed) |
--platform | Filter by platform (twitter, facebook) |
--limit | Max posts to return (default: 20) |
Intelligence Reports
content report generate
Generate a daily intelligence report from research notes. Produces HTML and optionally PDF output.
# Generate for today
optimal content report generate
# Generate for a specific date
optimal content report generate --date 2026-03-30
# Generate HTML only (skip PDF)
optimal content report generate --skip-pdf| Flag | Description |
|---|---|
--date | Date to generate report for (YYYY-MM-DD, default: today) |
--skip-pdf | Generate HTML only, skip PDF rendering |
Research Pipeline
content research status
Show research pipeline status: last scan time, data point counts, active campaigns.
optimal content research status
optimal content research status --json| Flag | Description |
|---|---|
--json | Output as JSON |
content research notes
View research notes for a specific date.
optimal content research notes
optimal content research notes --date 2026-03-30| Flag | Description |
|---|---|
--date | Date (YYYY-MM-DD, default: today) |
content research reports
List available intelligence reports.
optimal content research reports
optimal content research reports --json| Flag | Description |
|---|---|
--date | View a specific date |
--json | Output as JSON |