@genfeedai/cli
v0.6.0
Published
Unified CLI for Genfeed.ai - Generate, schedule, analyze, and publish AI content from your terminal
Downloads
31
Maintainers
Readme
@genfeedai/cli
___ __ _ ___ _ ___
/ __|___ _ _ / _|___ ___ ___| | / __| | |_ _|
| (_ / -_) ' \ | _/ -_) -_) -_) | | (__| |__ | |
\___\___|_||_||_| \___\___\___|_| \___|____|___|
> What image | video do you want to create? _CLI tool for Genfeed.ai - Generate, schedule, analyze, and publish AI content from your terminal.
Last Verified
- Date: 2026-08-06
- Implemented state source: local
packages/cli/commands and package metadata - Delivery state source: GitHub issues/project metadata
Dual-State Note
- Implemented state: command behavior documented here should match
src/commands/*. - Delivery state: roadmap/priority comes from GitHub Issues/Projects, not this README.
Monorepo Location
The CLI lives in packages/cli inside the genfeedai/genfeed.ai monorepo. It is part of the root packages/* workspace and uses the same Turbo build, lint, test, and type-check flow as the other shared packages.
Root-level commands:
bun run build:cli
bun run test:cli
bun run type-check:cli
bun run dev:cli -- --helpPackage-level commands:
bun run --cwd packages/cli build
bun run --cwd packages/cli test
bun run --cwd packages/cli type-checkRequirements
- Node.js 18+
- A Genfeed.ai account with API access
Installation
Using bun (recommended):
bun add -g @genfeedai/cliUsing npm:
npm install -g @genfeedai/cliQuick Start
Login with your API key:
genfeed loginGenerate an image:
genfeed generate image "A futuristic cityscape at sunset"Generate a video:
genfeed generate video "A drone flying over mountains"Authentication
Browser login (opens https://app.genfeed.ai/oauth/cli and completes a PKCE flow):
genfeed loginNon-interactive login with an API key from the Genfeed.ai dashboard — also the path for self-hosted deployments:
genfeed login --key gf_live_xxxPaste a key manually instead of opening a browser:
genfeed login --interactiveSelf-hosted login — point the browser flow at your own deployment:
genfeed login --api-url https://api.yourdomain.com/v1Both URLs are saved to the active profile, so subsequent commands target the same deployment. The
web app URL serving /oauth/cli is derived from the API URL (api. → app., or the API origin
when the API is path-mounted). Override it when your app lives somewhere else:
genfeed login --api-url https://yourdomain.com/api/v1 --app-url https://studio.yourdomain.comThe same values are settable outside login via genfeed config set api-url <url> /
genfeed config set app-url <url>, or the GENFEED_API_URL / GENFEED_APP_URL env vars.
genfeed config show prints the resolved app URL and marks it (derived) when it was inferred.
Check current user:
genfeed whoamiLogout:
genfeed logoutCommands
API Keys
List, create, rotate, and revoke API keys for headless and MCP access:
genfeed keys list
genfeed keys create -n "CI publisher" -p content
genfeed keys rotate <id>
genfeed keys revoke <id>create takes a scope preset via -p (mcp, read, content, full) or an explicit --scopes list, plus optional --expires-at, --rate-limit, and --allow-ip. The secret is printed once, on creation and on rotation.
CLI Configuration
Inspect and edit the active profile:
genfeed config show
genfeed config path
genfeed config set api-url http://localhost:3010/v1
genfeed config reset --forceSettable keys: agent-model, api-key, api-url, brand, fleet-host, fleet-port, org-id, persona, role.
Organizations
List your organizations:
gf organizationsSwitch the active organization (also updates the default brand):
gf organizations selectShow the current organization:
gf organizations currentBrand Management
List all brands:
genfeed brandsSelect active brand:
genfeed brands selectShow current brand:
genfeed brands currentImage Generation
Basic generation:
genfeed generate image "Your prompt here"With options:
genfeed generate image "Your prompt" --model imagen-4 --width 1920 --height 1080 --output ./image.jpgDon't wait for completion:
genfeed generate image "Your prompt" --no-waitVideo Generation
Basic generation:
genfeed generate video "Your prompt here"With options:
genfeed generate video "Your prompt" --model google-veo-3 --duration 10 --resolution 1080p --output ./video.mp4Article Generation
Generate an article:
genfeed generate article "Write about AI marketing trends" --category marketingGenerate several at once, steered by keywords:
genfeed generate article "Write about AI marketing trends" --count 3 --keywords ai,marketing,seoGenerate long-form X article:
genfeed generate article-x "Write a founder update thread" --tone analytical --words 3000Article generation is synchronous — the command returns the finished articles, so there is nothing to poll. To re-read one later:
genfeed status <article-id> --type articleCheck Status
Check image status:
genfeed status <id>Check video status:
genfeed status <id> --type videoCheck article status:
genfeed status <id> --type articleAgent Chat
Start the interactive Genfeed agent shell:
genfeed chat
genfeed chat --thread <thread-id>
genfeed chat --model claude-3-7-sonnetSend one non-interactive agent turn for Claude/OpenAI/OpenClaw-style tool use:
genfeed chat send "Plan a launch week content sequence" --json
genfeed chat send --thread <thread-id> --stdin < prompt.txt
genfeed chat send "Review this draft" \
--attachment '{"url":"https://cdn.genfeed.ai/example.png","kind":"image"}' \
--jsonAnswer a pending input request on an existing thread:
genfeed threads respond <thread-id> "Use the more technical angle" --jsonBatch Generation
genfeed batch create -n 5 -p twitter,linkedin --topics ai,product --style professional
genfeed batch list
genfeed batch show <batch-id>
genfeed batch approve <batch-id>Templates
genfeed template list
genfeed template create --label "LinkedIn Hook" --purpose prompt --content "Write a hook about {{topic}}"
genfeed template use <template-id> --variables '{"topic":"AI workflows"}'Scheduling and Insights
genfeed schedule calendar
genfeed insights
genfeed insights times --platform twitter
genfeed performance weekly
genfeed credits summary
genfeed posts list --platform twitter --status publishedOptions
Global Options
| Option | Description |
|--------|-------------|
| --json | Output as JSON (for scripting) |
| --help | Show help |
| --version | Show version |
Generation Options
| Option | Description |
|--------|-------------|
| -m, --model <model> | Model to use |
| -b, --brand <id> | Override active brand |
| -o, --output <path> | Download to file |
| --no-wait | Don't wait for completion |
Image-specific Options
| Option | Description |
|--------|-------------|
| -w, --width <px> | Image width |
| -h, --height <px> | Image height |
Video-specific Options
| Option | Description |
|--------|-------------|
| -d, --duration <sec> | Video duration |
| -r, --resolution <res> | Resolution (720p, 1080p, 4k) |
Article-specific Options
Article generation is synchronous, so --no-wait does not apply. By default,
articles use the active brand; pass --brand <id> to override it.
| Option | Description |
|--------|-------------|
| -b, --brand <id> | Override active brand |
| -c, --count <n> | Number of standard articles (1-4) |
| --category <cat> | Article category |
| --keywords <list> | Comma-separated keywords |
| --tone <tone> | Tone of voice (article-x only) |
| --words <n> | Target word count, 2500-10000 (article-x only) |
| --no-header-image | Skip the header image (article-x only) |
Scripting
Use --json for machine-readable output:
Get image URL:
URL=$(genfeed generate image "prompt" --json | jq -r '.url')Check status programmatically:
STATUS=$(genfeed status abc123 --json | jq -r '.status')Agent Integration
The Genfeed CLI is designed for use by AI agents and automation tools.
Non-Interactive Authentication
genfeed login --key $GENFEED_API_KEYJSON Output
All commands support --json for machine-readable output:
genfeed generate image "A sunset over mountains" --json
genfeed generate video "Product demo" --json
genfeed brands --jsonAsync Operations
Use --no-wait to get an ID immediately without waiting for completion:
# Start generation and get ID
ID=$(genfeed generate image "prompt" --no-wait --json | jq -r '.id')
# Poll for completion
genfeed status $ID --jsonAgent Usage Example
# Authenticate
genfeed login --key gf_live_xxx
# Generate an image
RESULT=$(genfeed generate image "Professional headshot, studio lighting" --json)
IMAGE_ID=$(echo $RESULT | jq -r '.id')
# Check status
genfeed status $IMAGE_ID --json
# Publish to social media
genfeed publish $IMAGE_ID --platforms twitter,linkedin --jsonExternal LLM Tooling Example
# One-shot agent turn from an external model/tool runner
genfeed chat send "Generate 3 LinkedIn post ideas for our AI launch" --json
# Continue the same thread on the next tool call
genfeed chat send --thread thread_123 "Turn idea 2 into a full post" --json
# Resolve a structured follow-up question from the agent
genfeed threads respond thread_123 "Target early-stage SaaS founders" --jsonMCP Server
For richer integration, connect directly to the Genfeed MCP server:
Endpoint: https://mcp.genfeed.ai/mcp
Transport: Streamable HTTP
Auth: Bearer token (API key)See the MCP documentation for details.
Configuration
Config is stored in ~/.gf/config.json:
{
"activeProfile": "default",
"profiles": {
"default": {
"apiUrl": "https://api.genfeed.ai/v1",
"appUrl": "https://app.genfeed.ai",
"role": "user",
"agent": {
"model": "claude-3-7-sonnet",
"lastThreadIdByOrganization": {}
},
"defaults": {
"imageModel": "imagen-4",
"videoModel": "google-veo-3"
}
}
}
}Environment Variable Overrides
| Variable | Description |
|----------|-------------|
| GENFEED_API_KEY | API key |
| GENFEED_API_URL | API base URL |
| GENFEED_APP_URL | Web app URL serving /oauth/cli (derived from GENFEED_API_URL when unset) |
| GENFEED_TOKEN | Auth token |
| GENFEED_ORGANIZATION_ID | Organization ID |
| GENFEED_USER_ID | User ID |
| GENFEED_AGENT_MODEL | Default agent model for chat / chat send |
Contributing
Contributions are welcome! Please see the monorepo CONTRIBUTING.md for guidelines.
License
MIT
