CLI Quick Reference
GEO Wiki CLI command quick reference for Agent quick use
# GEO Wiki CLI — Agent Skill
GEO Wiki Pro command-line management tool. Enables AI Agents to automatically manage knowledge bases.
## Installation
```bash
# Requires Node.js >= 18
npm install -g geowiki-cli
# Verify installation
geo status
```
## Login
```bash
# Token login (recommended)
geo login --url https://geowiki.pro --token geo_xxxxx
# Password login
geo login --url https://geowiki.pro --user <username> --pass <password>
```
After login, Token is automatically saved locally, and subsequent commands automatically include authentication.
## Document Management
```bash
# List documents
geo doc list --category <category> --lang zh --json
# Create document
geo doc create --file ./article.md --category <category> --lang zh
# Get document
geo doc get --slug <slug> --lang zh --json
# Update document
geo doc update --slug <slug> --file ./updated.md
# Update category only
geo doc update --slug <slug> --category new-category
# Update sort only
geo doc update --slug <slug> --sort 0
# Delete document (move to trash)
geo doc delete --slug <slug>
# Batch reorder
geo doc reorder --orders "slug1:0,slug2:1,slug3:2"
```
## Category Management
```bash
geo category list --json
geo category create --name "Category Name" --slug category-slug
geo category update --slug <slug> --name "New Name"
geo category delete --slug <slug>
```
## Tag Management
```bash
geo tag list --json
geo tag create --name "Tag Name" --slug tag-slug
geo tag delete --slug <slug>
```
## Media Upload
```bash
geo media upload --file ./image.png
geo media upload --file ./document.pdf --directory docs
geo media list --json
```
## Configuration Management
```bash
geo config get --json
geo config update --site-name "New Site Name"
geo config update --hero-title "New Title" --hero-subtitle "New Subtitle"
geo config update --featured-slugs "slug1,slug2,slug3"
```
## User Management
```bash
geo user list --json
geo user create --username <user> --password <pass> --role editor
geo user update --id <user-id> --role admin
geo user reset-password --id <user-id>
geo user delete --id <user-id>
# API Token management
geo user token list --json
geo user token delete --id <token-id>
```
## Other Commands
```bash
geo search "keyword" --json # Search documents
geo stats --json # Dashboard statistics
geo draft list --json # Draft management
geo feedback list --json # Feedback management
geo guestbook list --json # Guestbook management
geo geo status # GEO optimization status
geo geo report --json # GEO analytics report
geo geo rebuild # Rebuild llms.txt / sitemap
```
## Global Options
All commands support the `--json` flag for structured JSON output, suitable for Agent parsing.
## Agent Notes
### 1. Don't Edit NAS Files Directly with sed
```bash
# Wrong: File gets truncated, sed only keeps modified parts
ssh user@nas "sed -i 's/old/new/' /path/to/file.md"
# Correct: Use CLI or API to update
geo doc update --slug <slug> --file ./updated.md
```
**Reason**: `sed -i` may cause content loss outside frontmatter when processing multi-line files.
### 2. Chinese Filenames Need Encoding
CLI and frontend automatically encode filenames with `encodeURIComponent()`. When calling API directly, manual encoding is required:
```bash
# Wrong
curl -H "X-Original-Filename: 测试.pdf" ...
# Correct
curl -H "X-Original-Filename: %E6%B5%8B%E8%AF%95.pdf" ...
```
### 3. All Write Operations Require CSRF Token
CLI handles this automatically. When calling API directly, extract `XSRF-TOKEN` from Cookie and include in request header.
### 4. Supported File Upload Types
Images: JPG, PNG, GIF, WebP
Videos: MP4, WebM
Audio: MP3, WAV, OGG
Documents: PDF, DOC, DOCX, TXT, MD
3D Models: STEP, STP, IGS
## Agent Usage Examples
```bash
# Complete workflow: Login -> Create document -> Rebuild GEO
geo login --url https://geowiki.pro --token geo_xxxxx
geo doc create --file ./new-article.md --category guide --lang zh
geo geo rebuild
# Batch import
for f in ./docs/*.md; do
geo doc create --file "$f" --category docs --lang zh
done
# Process search results
geo search "API" --json | jq '.[] | {slug, title}'
```