CLI Reference

Complete reference for all ContentForge CLI commands.

Global Options

contentforge [OPTIONS] <COMMAND>

Options:
  --config <PATH>      Path to config file (default: ~/.config/contentforge/config.toml)
  --db <PATH>          Path to database file (default: ~/.local/share/contentforge/contentforge.db)
  --format <FORMAT>    Output format: text, json (default: text)
  -v, --verbose        Increase log verbosity (can be repeated: -vv, -vvv)
  -h, --help           Print help
  -V, --version        Print version

Commands

new

Create a new content piece.

contentforge new [OPTIONS]
OptionTypeRequiredDescription
--title <TEXT>stringyesContent title
--type <TYPE>stringyesContent type (article, thread, short_post, video, image_post, link_share)
--body <TEXT>stringnoContent body (opens editor if omitted)
--tags <TAGS>stringnoComma-separated tags
--project <NAME>stringnoAssociated project
--no-editflagnoSkip opening the editor

Examples:

# Create an article and open the editor
contentforge new --title "Rust Error Handling Guide" --type article --tags rust,errors

# Create with inline body
contentforge new --title "Quick tip" --type short_post --body "Use ? operator for clean error propagation" --no-edit

# Create and associate with a project
contentforge new --title "v0.2.0 Release Notes" --type article --project contentforge

list

List content with optional filters.

contentforge list [OPTIONS]
OptionTypeDescription
--status <STATUS>stringFilter by status
--type <TYPE>stringFilter by content type
--project <NAME>stringFilter by project
--tag <TAG>stringFilter by tag
--limit <N>numberMaximum results (default: 50)
--offset <N>numberSkip first N results

Examples:

# List all drafts
contentforge list --status drafting

# List articles tagged "rust"
contentforge list --type article --tag rust

# JSON output for scripting
contentforge list --status ready --format json

show

Display details of a content piece.

contentforge show <ID> [OPTIONS]
OptionTypeDescription
--adaptationsflagShow all platform adaptations
--adaptation <PLAT>stringShow adaptation for a specific platform
--publicationsflagShow publication records

Examples:

# Show content details
contentforge show a1b2c3d4

# Show with all adaptations
contentforge show a1b2c3d4 --adaptations

# Show Twitter adaptation only
contentforge show a1b2c3d4 --adaptation twitter

edit

Edit a content piece.

contentforge edit <ID> [OPTIONS]
OptionTypeDescription
--title <TEXT>stringUpdate the title
--body <TEXT>stringUpdate the body (opens editor if omitted)
--tags <TAGS>stringReplace tags (comma-separated)
--project <NAME>stringUpdate project association

status

Change the status of a content piece.

contentforge status <ID> --set <STATUS>

Valid statuses: idea, drafting, review, ready, scheduled, published, archived.


adapt

Create a platform-specific adaptation.

contentforge adapt <ID> [OPTIONS]
OptionTypeRequiredDescription
--platform <PLAT>stringyes*Target platform
--allflagyes*Adapt for all configured platforms
--aiflagnoUse AI for intelligent adaptation

*One of --platform or --all is required.

Examples:

# Adapt for Twitter
contentforge adapt a1b2c3d4 --platform twitter

# AI-powered adaptation for LinkedIn
contentforge adapt a1b2c3d4 --platform linkedin --ai

# Adapt for all platforms
contentforge adapt a1b2c3d4 --all

publish

Publish content to a platform.

contentforge publish <ID> [OPTIONS]
OptionTypeRequiredDescription
--platform <PLAT>stringyes*Target platform
--allflagyes*Publish to all adapted platforms

Examples:

# Publish to DEV.to
contentforge publish a1b2c3d4 --platform devto

# Publish to all adapted platforms
contentforge publish a1b2c3d4 --all

schedule

Schedule content for future publication.

contentforge schedule <SUBCOMMAND>

schedule add

contentforge schedule add <ID> --platform <PLAT> --at <DATETIME>
OptionTypeRequiredDescription
--platform <PLAT>stringyesTarget platform
--at <DATETIME>stringyesISO 8601 datetime

schedule list

contentforge schedule list [OPTIONS]
OptionTypeDescription
--status <STATUS>stringFilter by schedule status (pending, published, failed)
--platform <PLAT>stringFilter by platform

schedule cancel

contentforge schedule cancel <SCHEDULE-ID>

schedule recurring

contentforge schedule recurring --name <NAME> --cron <EXPR> --platforms <PLATS>

Examples:

# Schedule a tweet for tomorrow morning
contentforge schedule add a1b2c3d4 --platform twitter --at "2026-03-20T09:00:00Z"

# List pending schedules
contentforge schedule list --status pending

# Set up a weekly recurring schedule
contentforge schedule recurring --name "weekly-roundup" --cron "0 9 * * FRI" --platforms twitter,linkedin

platforms

Manage platform accounts.

contentforge platforms <SUBCOMMAND>

platforms add

contentforge platforms add <PLATFORM> [OPTIONS]

Platform-specific options:

  • devto: --api-key <KEY>
  • twitter: --bearer-token <TOKEN>
  • linkedin: --access-token <TOKEN> --author-urn <URN>
  • medium: --token <TOKEN>

platforms list

contentforge platforms list

platforms health

contentforge platforms health [--platform <PLAT>]

platforms remove

contentforge platforms remove <PLATFORM>

analytics

View engagement metrics.

contentforge analytics [OPTIONS]
OptionTypeDescription
<ID>stringContent ID (omit for summary)
--summaryflagShow aggregate metrics
--platform <PLAT>stringFilter by platform

generate

Generate content using AI.

contentforge generate <PROMPT> [OPTIONS]
OptionTypeDescription
--type <TYPE>stringContent type (default: article)
--tags <TAGS>stringComma-separated tags
--project <NAME>stringAssociated project
--length <N>numberTarget word count
--estimateflagShow cost estimate only
--confirmflagSkip confirmation prompt

review

Get AI feedback on content.

contentforge review <ID>

serve

Start the web server.

contentforge serve [OPTIONS]
OptionTypeDescription
--host <HOST>stringBind address (default: 127.0.0.1)
--port <PORT>numberPort number (default: 3000)
--corsflagEnable CORS headers

tui

Launch the terminal UI.

contentforge tui

mcp

Start the MCP server.

contentforge mcp [OPTIONS]
OptionTypeDescription
--sseflagUse SSE transport instead of stdio

daemon

Run the scheduling daemon.

contentforge daemon [OPTIONS]
OptionTypeDescription
--interval <SECS>numberPoll interval in seconds (default: 30)

doctor

Diagnose configuration and environment issues.

contentforge doctor

completions

Generate shell completions.

contentforge completions <SHELL>

Supported shells: bash, zsh, fish, powershell, elvish.