CLI Quick Reference
GEO Wiki CLI command cheat sheet for quick Agent usage
GEO Wiki Pro v1.0.7 command-line management tool. Enables AI Agents to manage knowledge bases automatically.
## Installation
```bash
# Requires Node.js >= 18
npm install -g geowiki-cli
# Verify installation
geo status
```
## Login
```bash
# Token login (recommended, valid for 90 days)
geo login --url https://geowiki.pro --token geo_xxxxx
```
After login, the token is saved locally and subsequent commands carry authentication automatically.
## Health Check
```bash
geo health # Check server status (no login required)
geo health --json # JSON format output
```
## Document Management
```bash
# List documents
geo doc list --category <category> --lang zh --json
# Create document (from file)
geo doc create --file ./article.md --category <category> --lang zh
# Create document (inline content)
geo doc create --title "Title" --category docs --slug my-doc --content "# Body content"
# Get document
geo doc get --slug <slug> --lang zh --json
# Update document (from file)
geo doc update --slug <slug> --file ./updated.md --lang zh
# Update title
geo doc update --slug <slug> --title "New Title" --lang zh
# Update description
geo doc update --slug <slug> --description "New Description" --lang zh
# Update author
geo doc update --slug <slug> --author "John Doe" --lang zh
# Update tags
geo doc update --slug <slug> --tags "tag1,tag2" --lang zh
# Update notice
geo doc update --slug <slug> --notice "This document has been updated" --lang zh
# Update sort order only
geo doc update --slug <slug> --sort 0
# Update category only
geo doc update --slug <slug> --category new-category
# Rename URL slug (syncs all languages)
geo doc slug-rename --slug old-name --new-slug new-name
# Delete document (moves to trash, specify language)
geo doc delete --slug <slug> --lang zh --yes
# 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>
```
## Draft Management
```bash
geo draft list --json # List drafts
geo draft get --slug <slug> # View draft content
geo draft publish --slug <slug> --lang zh # Publish draft
geo draft publish --slug <slug> --lang en # Publish draft (specific language)
geo draft delete --slug <slug> --lang zh # Delete draft
geo draft delete --slug <slug> --lang en # Delete draft (specific language)
```
## Other Commands
```bash
geo search "keyword" --lang zh --json # Search documents
geo stats --json # Dashboard statistics
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. Do not use sed to edit files on the NAS directly
```bash
# Wrong: file gets truncated, sed only retains the modified portion
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` on multi-line files may cause content outside the frontmatter to be lost.
### 2. Chinese filenames need encoding
The CLI and frontend automatically encode filenames with `encodeURIComponent()`. When calling the API directly, manual encoding is required:
```bash
# Wrong
curl -H "X-Original-Filename: test.pdf" ...
# Correct
curl -H "X-Original-Filename: %E6%B5%8B%E8%AF%95.pdf" ...
```
### 3. All write operations require a CSRF Token
The CLI handles this automatically. When calling the API directly, extract `XSRF-TOKEN` from the cookie and include it in the request header.
### 4. Supported file upload types
Images: JPG, PNG, GIF, WebP
Video: 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}'
```