GEO Wiki Agent Skill Guide
GEO Wiki Agent Skill Guide — enabling AI Agents to help users manage knowledge bases through guided dialogue
> Last updated: 2026-07-02 | CLI version: v1.0.7
>
> Core objective: After reading this guide, an Agent should be able to help users manage the knowledge base through guided dialogue.
---
## Core Philosophy
**The Agent does not make users learn commands — it guides users to express their needs, then carries out the work for them.**
```
User: Help me publish an article
Agent: Sure, I'll help you create it. I need the following information:
1. What is the article title?
2. Content source: provide a Markdown file, or tell me the topic and I'll write it for you?
3. Which category does it belong to? (I can show you the existing categories)
```
---
## Agent Behavior Standards
### Interaction Flow
```
Understand intent → Gather information → Execute operation → Verify result → Report to user
```
### User Intent Recognition
| User Expression | Agent Understanding | Follow-up Needed |
|----------------|---------------------|-----------------|
| "Help me publish an article" | Create document | Title, content, category |
| "Update that document" | Update document | Slug, what to update |
| "Add a category" | Create category | Name, slug |
| "Delete that article" | Delete document | Slug, confirmation |
| "Show me what's there" | List documents/categories | None |
| "Create a customer case study" | Create document + category | Customer info, category |
| "Batch update tags" | Tag update | Tag list, target values |
### Guided Dialogue Templates
**When user information is incomplete:**
```
Sure, I'll help you create the article. I need the following information:
1. What is the article title?
2. Article content: you can provide a Markdown file, or tell me the topic and I'll write it for you
3. Which category does it belong to? (I can show you the existing categories)
Do you need language versions created together?
```
**When user provides a URL:**
```
Sure, let me fetch the website information first, then write the article. Please confirm:
1. Article language: Chinese, English, Japanese, or all?
2. Category: use the existing "Customer Cases" category, or create a new one?
```
**When user wants a batch operation:**
```
Sure, I'll do the batch update. Let me confirm first:
1. Scope: all articles or a specific category?
2. Operation confirmation: this will modify [N] articles. Confirm to proceed?
```
### Operation Verification
After every operation, the Agent must:
1. Check that the returned JSON contains `success: true`
2. Verify that the content has been saved correctly
3. Report the result and access link to the user
**Success feedback:**
```
Operation complete!
- Title: xxx
- Link: https://your-domain.com/docs/<slug>
- Category: xxx
- Tags: tag1, tag2
```
---
## Installation and Login
### Environment Check
Before performing any operations, the Agent should first check whether the user's environment is ready:
```bash
# Check Node.js and npm
node --version && npm --version
```
### Install GEO Wiki CLI
```bash
# Install
npm install -g geowiki-cli
# Token login (recommended, valid for 90 days)
geo login --url https://your-domain.com --token geo_xxx
# Verify
geo status
```
---
## Quick Command Reference
### Authentication
| Command | Description |
|---------|-------------|
| `geo login --url URL --token TOKEN` | Token login (recommended) |
| `geo logout` | Log out |
| `geo status` | View connection status |
| `geo health` | Server health check (no auth required) |
### Document Management
| Command | Description |
|---------|-------------|
| `geo doc list --lang LANG` | List documents in a specific language |
| `geo doc list --lang LANG --category CAT` | Filter by category |
| `geo doc get --slug SLUG --lang LANG` | Get document content |
| `geo doc create -f ./doc.md -c CAT --lang LANG` | Create from file |
| `geo doc create --title "Title" --slug SLUG --content "Content" -c CAT --lang LANG` | Create with inline content |
| `geo doc create -f ./doc.md -c CAT --lang LANG --draft` | Save as draft |
| `geo doc update --slug SLUG -f ./updated.md --lang LANG` | Update from file |
| `geo doc update --slug SLUG --title "New Title" --lang LANG` | Update title |
| `geo doc update --slug SLUG --description "Description" --lang LANG` | Update description |
| `geo doc update --slug SLUG --author "Author" --lang LANG` | Update author |
| `geo doc update --slug SLUG --tags "tag1,tag2" --lang LANG` | Update tags |
| `geo doc update --slug SLUG --notice "Notice" --lang LANG` | Update notice |
| `geo doc update --slug SLUG --category CAT --lang LANG` | Update category |
| `geo doc update --slug SLUG --sort N --lang LANG` | Update sort order |
| `geo doc update --slug SLUG --content "New content" --lang LANG` | Update content |
| `geo doc update --slug SLUG -f ./doc.md --lang LANG --draft` | Update as draft |
| `geo doc slug-rename --slug OLD --new-slug NEW` | Rename URL slug (syncs all languages) |
| `geo doc delete --slug SLUG --lang LANG` | Delete a specific language version |
| `geo doc reorder --orders "slug1:0,slug2:1"` | Batch reorder |
### Draft Management
| Command | Description |
|---------|-------------|
| `geo draft list --json` | List drafts |
| `geo draft get --slug SLUG` | Get draft content |
| `geo draft publish --slug SLUG --lang LANG` | Publish a specific language draft |
| `geo draft delete --slug SLUG --lang LANG` | Delete a specific language draft |
### Category Management
| Command | Description |
|---------|-------------|
| `geo category list --lang LANG` | List categories |
| `geo category create --name "Name" --slug SLUG` | Create category |
| `geo category update --slug SLUG --name "New Name"` | Update category |
| `geo category delete --slug SLUG` | Delete category |
### Tag Management
| Command | Description |
|---------|-------------|
| `geo tag list --lang LANG` | List tags |
| `geo tag create --name "Name" --slug SLUG` | Create tag |
| `geo tag delete --slug SLUG --json` | Delete tag (silent) |
### Search
| Command | Description |
|---------|-------------|
| `geo search "keyword" --lang LANG` | Search documents |
| `geo search "CAN bus" --category CAT --lang LANG` | Search by category |
### Configuration Management
| Command | Description |
|---------|-------------|
| `geo config get --json` | Get configuration |
| `geo config update --site-name "New Site Name"` | Update configuration |
### User Management
| Command | Description |
|---------|-------------|
| `geo user list --json` | List users |
| `geo user create --username USER --password PASS --role ROLE` | Create user |
| `geo user reset-password --id USER-ID` | Reset password |
### GEO Optimization
| Command | Description |
|---------|-------------|
| `geo geo status` | GEO status |
| `geo geo rebuild` | Rebuild llms.txt/sitemap |
### Statistics
| Command | Description |
|---------|-------------|
| `geo stats` | Dashboard statistics |
| `geo stats metrics` | Detailed system metrics |
### Global Parameters
| Parameter | Description |
|-----------|-------------|
| `--json` | JSON format output |
| `--lang LANG` | Specify language (zh/en/jp) |
| `--category CAT` | Specify category |
| `--draft` | Save as draft |
---
## Typical Workflow Examples
### Creating Multilingual Articles
```bash
# Create Chinese version
geo doc create -f ./article-zh.md --category tech --lang zh --json
# Create English version
geo doc create -f ./article-en.md --category tech --lang en --json
# Create Japanese version
geo doc create -f ./article-jp.md --category tech --lang jp --json
# Verify
geo doc list --lang zh --category tech --json
```
### Creating with Inline Content
```bash
# No file needed, pass content directly
geo doc create --title "Product Launch" --slug product-launch --category news --lang zh --content "# Product Launch\n\nWe are pleased to announce..."
```
### Updating a Single Field
```bash
# Update title only
geo doc update --slug my-doc --title "New Title" --lang zh
# Update description only
geo doc update --slug my-doc --description "New Description" --lang zh
# Update notice only
geo doc update --slug my-doc --notice "This document has been updated" --lang zh
```
### Draft Review Workflow
```bash
# Save as draft
geo doc create -f ./draft.md --category guide --lang zh --draft
# Publish draft
geo draft publish --slug draft-slug --lang zh
```
### Batch Update
```bash
# Get articles in a category and update their tags
geo doc list --category tech --lang zh --json | jq -r '.[].slug' | while read slug; do
geo doc update --slug "$slug" --tags "tech,audited" --lang zh --json
done
```
---
## SEO / GEO Optimization Workflow
The Agent can use the CLI to read site information, generate optimization code, and apply it in one step via `customHeadHtml`. No code changes or new commands needed.
### Workflow
```
Read site status → Analyze content structure → Generate optimization code → Apply to customHeadHtml → Rebuild GEO
```
### Step 1: Understand the Site
```bash
# Get site configuration (TDK, URL, language, etc.)
geo config get --json
# Get document structure
geo doc list --lang zh --json
geo doc list --lang en --json
# Get category structure
geo category list --lang zh --json
# Get GEO status
geo geo report --json
```
### Step 2: Generate Optimization Code
The Agent generates `<meta>` and `<link>` tags based on site information. **Only `<meta>` and `<link>` are allowed — `<script>` is not permitted** (it will be filtered by security).
#### Search Engine Verification
```html
<meta name="google-site-verification" content="your-verification-code">
<meta name="msvalidate.01" content="your-bing-verification-code">
<meta name="baidu-site-verification" content="your-baidu-verification-code">
```
#### Multilingual SEO (hreflang)
```html
<link rel="alternate" hreflang="zh" href="https://site.com/?lang=zh">
<link rel="alternate" hreflang="en" href="https://site.com/?lang=en">
<link rel="alternate" hreflang="ja" href="https://site.com/?lang=jp">
<link rel="alternate" hreflang="x-default" href="https://site.com/">
```
#### GEO Optimization Tags
```html
<meta name="ai-content-declaration" content="structured, authoritative, AI-ready">
<meta name="geo.region" content="CN-GD">
<meta name="geo.placename" content="Shenzhen">
```
#### Social Media Supplements
```html
<meta property="og:locale" content="zh_CN">
<meta property="og:locale:alternate" content="en_US">
<meta name="twitter:site" content="@your_handle">
```
### Step 3: Apply
```bash
# Apply all optimization tags at once
geo config update --custom-head '
<meta name="google-site-verification" content="xxx">
<meta name="ai-content-declaration" content="structured, authoritative, AI-ready">
<meta name="geo.region" content="CN-GD">
<link rel="alternate" hreflang="zh" href="https://site.com/?lang=zh">
<link rel="alternate" hreflang="en" href="https://site.com/?lang=en">
'
```
### Step 4: Rebuild GEO
```bash
geo geo rebuild
```
### Important Notes
| Rule | Description |
|------|-------------|
| Allowed | `<meta>`, `<link>` tags |
| Not allowed | `<script>`, `<title>`, `<style>` (will be filtered) |
| Do not duplicate | The system already includes title, description, og, twitter, canonical, JSON-LD |
| Override rule | New content replaces the old customHeadHtml — it does not append |
### Agent Optimization Checklist
- [ ] Title includes brand name + core keywords (80 characters max)
- [ ] Description summarizes core value + call to action (200 characters max)
- [ ] Keywords cover core business terms (100 characters max)
- [ ] Search engine verification configured (Google/Bing/Baidu)
- [ ] hreflang tags added for multilingual sites
- [ ] GEO optimization tags added (ai-content-declaration)
- [ ] llms.txt and sitemap rebuilt
---
## Agent Integration Configuration
```json
{
"tools": {
"geo-wiki": {
"command": "geo",
"args": ["--url", "https://your-domain.com"]
}
}
}
```
---
## Best Practices
1. **Always use --json output** — for easy parsing and verification
2. **Verify login before operations** — `geo status`
3. **Verify results after operations** — check for `success: true`
4. **Report to the user at every step** — keep communication transparent
5. **Confirm before batch operations** — inform the user of the scope
6. **Always specify --lang** — to prevent accidental modification of other language versions
---
*Last updated: 2026-07-02 | Version: v1.0.7*