# CLI Command Reference Comprehensive documentation for all CLI commands. > **Note:** This documentation is auto-generated from the Click command definitions. To regenerate after adding or modifying commands, run: > ```bash > uv run python scripts/generate_cli_docs.py > ``` ## Quick Reference ### System Commands - `config` - Show current configuration - `health` - Check system health - `models` - List available AI models ### User Management - `add-user` - Create a new user (requires admin) - `delete-user` - Delete a user (requires admin) - `list-users` - List all users (requires admin) ### Site Management - `provision-site` - Provision a new site with Storage Zone and Pull Zone - `attach-domain` - Attach a domain to an existing Storage Zone - `list-sites` - List all site deployments - `get-site` - Get detailed information about a site - `remove-site` - Remove a site deployment record - `sync-sites` - Sync existing bunny.net sites to database ### Project Management - `ingest-cora` - Ingest a CORA .xlsx report and create a new project - `ingest-simple` - Ingest a simple spreadsheet and create a new project - `list-projects` - List all projects for the authenticated user ### Content Generation - `generate-batch` - Generate content batch from job file ### Deployment - `deploy-batch` - Deploy all content in a batch to cloud storage - `verify-deployment` - Verify deployed URLs return 200 OK status ### Link Export - `get-links` - Export article URLs with optional link details ## Table of Contents - [System](#system) - [User Management](#user-management) - [Site Management](#site-management) - [Project Management](#project-management) - [Content Generation](#content-generation) - [Deployment](#deployment) - [Link Export](#link-export) --- ## System ### `config` Show current configuration No options required. **Example:** ```bash uv run python main.py config ``` --- ### `health` Check system health No options required. **Example:** ```bash uv run python main.py health ``` --- ### `models` List available AI models No options required. **Example:** ```bash uv run python main.py models ``` --- ## User Management ### `add-user` Create a new user (requires admin authentication) **Options:** - `--username` - Type: STRING | Username for the new user - `--password` - Type: STRING | Password for the new user - `--role` - Type: Choice: `Admin`, `User` | Role for the new user - `--admin-user` - Type: STRING | Admin username for authentication - `--admin-password` - Type: STRING | Admin password for authentication **Example:** ```bash uv run python main.py add-user ``` --- ### `delete-user` Delete a user by username (requires admin authentication) **Options:** - `--username` - Type: STRING | Username to delete - `--admin-user` - Type: STRING | Admin username for authentication - `--admin-password` - Type: STRING | Admin password for authentication - `--yes` - Type: BOOL | Flag (boolean) | Confirm the action without prompting. **Example:** ```bash uv run python main.py delete-user ``` --- ### `list-users` List all users (requires admin authentication) **Options:** - `--admin-user` - Type: STRING | Admin username for authentication - `--admin-password` - Type: STRING | Admin password for authentication **Example:** ```bash uv run python main.py list-users ``` --- ## Site Management ### `attach-domain` Attach a domain to an existing Storage Zone (requires admin) **Options:** - `--name` - Type: STRING | Site name - `--domain` - Type: STRING | Custom domain (FQDN, e.g., www.example.com) - `--storage-name` - Type: STRING | Existing Storage Zone name - `--admin-user` - Type: STRING | Admin username for authentication - `--admin-password` - Type: STRING | Admin password for authentication **Example:** ```bash uv run python main.py attach-domain ``` --- ### `get-site` Get detailed information about a site deployment (requires admin) **Options:** - `--domain` - Type: STRING | Custom domain to lookup - `--admin-user` - Type: STRING | Admin username for authentication - `--admin-password` - Type: STRING | Admin password for authentication **Example:** ```bash uv run python main.py get-site ``` --- ### `list-sites` List all site deployments (requires admin) **Options:** - `--admin-user` - Type: STRING | Admin username for authentication - `--admin-password` - Type: STRING | Admin password for authentication **Example:** ```bash uv run python main.py list-sites ``` --- ### `provision-site` Provision a new site with Storage Zone and Pull Zone (requires admin) **Options:** - `--name` - Type: STRING | Site name - `--domain` - Type: STRING | Custom domain (FQDN, e.g., www.example.com) - `--storage-name` - Type: STRING | Storage Zone name (must be globally unique) - `--region` - Type: Choice: `DE`, `NY`, `LA`, `SG`, `SYD` | Storage region - `--admin-user` - Type: STRING | Admin username for authentication - `--admin-password` - Type: STRING | Admin password for authentication **Example:** ```bash uv run python main.py provision-site ``` --- ### `remove-site` Remove a site deployment record (requires admin) **Options:** - `--domain` - Type: STRING | Custom domain to remove - `--admin-user` - Type: STRING | Admin username for authentication - `--admin-password` - Type: STRING | Admin password for authentication - `--yes` - Type: BOOL | Flag (boolean) | Confirm the action without prompting. **Example:** ```bash uv run python main.py remove-site ``` --- ### `sync-sites` Sync existing bunny.net sites with custom domains to database (requires admin) **Options:** - `--admin-user` - Type: STRING | Admin username for authentication - `--admin-password` - Type: STRING | Admin password for authentication - `--dry-run` - Type: BOOL | Flag (boolean) | Show what would be imported without making changes **Example:** ```bash uv run python main.py sync-sites ``` --- ## Project Management ### `ingest-cora` Ingest a CORA .xlsx report and create a new project **Options:** - `--file`, `-f` **(required)** - Type: Path (must exist) | Path to CORA .xlsx file - `--name`, `-n` **(required)** - Type: STRING | Project name - `--money-site-url`, `-m` - Type: STRING | Money site URL (e.g., https://example.com) - `--custom-anchors`, `-a` - Type: STRING | Comma-separated list of custom anchor text (optional) - `--username`, `-u` - Type: STRING | Username for authentication - `--password`, `-p` - Type: STRING | Password for authentication **Example:** ```bash uv run python main.py ingest-cora --file path/to/file.xlsx --name "My Project" ``` --- ### `ingest-simple` Ingest a simple spreadsheet and create a new project Expected spreadsheet format: - First row: Headers (main_keyword, project_name, related_searches, entities) - Second row: Data values Required columns: main_keyword, project_name, related_searches, entities - main_keyword: Single phrase keyword - project_name: Name for the project - related_searches: Comma-delimited list (e.g., "term1, term2, term3") - entities: Comma-delimited list (e.g., "entity1, entity2, entity3") Optional columns (with defaults): - word_count: Default 1500 - term_frequency: Default 3 **Options:** - `--file`, `-f` **(required)** - Type: Path (must exist) | Path to simple .xlsx spreadsheet file - `--name`, `-n` - Type: STRING | Project name (overrides project_name from spreadsheet if provided) - `--money-site-url`, `-m` - Type: STRING | Money site URL (e.g., https://example.com) - `--username`, `-u` - Type: STRING | Username for authentication - `--password`, `-p` - Type: STRING | Password for authentication **Example:** ```bash uv run python main.py ingest-simple --file path/to/file.xlsx ``` --- ### `list-projects` List all projects for the authenticated user **Options:** - `--username`, `-u` - Type: STRING | Username for authentication - `--password`, `-p` - Type: STRING | Password for authentication **Example:** ```bash uv run python main.py list-projects ``` --- ## Content Generation ### `generate-batch` Generate content batch from job file **Options:** - `--job-file`, `-j` **(required)** - Type: Path (must exist) | Path to job JSON file - `--username`, `-u` - Type: STRING | Username for authentication - `--password`, `-p` - Type: STRING | Password for authentication - `--debug` - Type: BOOL | Flag (boolean) | Save AI responses to debug_output/ - `--continue-on-error` - Type: BOOL | Flag (boolean) | Continue processing if article generation fails - `--model`, `-m` - Type: STRING | Default: `gpt-4o-mini` | AI model to use (gpt-4o-mini, x-ai/grok-4-fast) **Example:** ```bash uv run python main.py generate-batch --file path/to/file.xlsx --debug ``` --- ## Deployment ### `deploy-batch` Deploy all content in a batch to cloud storage **Options:** - `--batch-id`, `-b` **(required)** - Type: INT | Project/batch ID to deploy - `--username`, `-u` - Type: STRING | Username for authentication - `--password`, `-p` - Type: STRING | Password for authentication - `--continue-on-error` - Type: BOOL | Flag (boolean) | Continue if file fails (default: True) - `--dry-run` - Type: BOOL | Flag (boolean) | Preview what would be deployed **Example:** ```bash uv run python main.py deploy-batch --batch-id 1 ``` --- ### `verify-deployment` Verify deployed URLs return 200 OK status **Options:** - `--batch-id`, `-b` **(required)** - Type: INT | Project/batch ID to verify - `--sample`, `-s` - Type: INT | Number of random URLs to check (default: check all) - `--timeout`, `-t` - Type: INT | Default: `10` | Request timeout in seconds (default: 10) **Example:** ```bash uv run python main.py verify-deployment --batch-id 1 ``` --- ## Link Export ### `get-links` Export article URLs with optional link details for a project and tier **Options:** - `--project-id`, `-p` **(required)** - Type: INT | Project ID to get links for - `--tier`, `-t` **(required)** - Type: STRING | Tier to filter (e.g., "1" or "2+" for tier 2 and above) - `--with-anchor-text` - Type: BOOL | Flag (boolean) | Include anchor text used for tiered links - `--with-destination-url` - Type: BOOL | Flag (boolean) | Include destination URL that the article links to **Example:** ```bash uv run python main.py get-links --project-id 1 --tier 1 ``` ---