Add Outline AI workflow guide
Documents how AI agents can interact with Outline wiki: - MCP server setup and available tools - REST API fallback methods - Common workflows for saving/searching docs - API key management Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
259
docs/outline-ai-workflow.md
Normal file
259
docs/outline-ai-workflow.md
Normal file
@@ -0,0 +1,259 @@
|
||||
# Outline AI Workflow Guide
|
||||
|
||||
**Date:** 2026-02-01
|
||||
**Purpose:** Document how AI agents can interact with Outline wiki for knowledge management
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Outline is the NUC's wiki/documentation system. AI agents can interact with it via:
|
||||
1. **MCP Server** (preferred) - `mcp-outline` for full CRUD operations
|
||||
2. **REST API** - Direct API calls when MCP not available
|
||||
3. **Browser Automation** - Playwriter fallback for UI-only features
|
||||
|
||||
---
|
||||
|
||||
## MCP Server Setup
|
||||
|
||||
### Installation
|
||||
|
||||
Added to `~/.claude/settings.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"outline": {
|
||||
"command": "uvx",
|
||||
"args": ["mcp-outline"],
|
||||
"env": {
|
||||
"OUTLINE_API_KEY": "<api-key>",
|
||||
"OUTLINE_API_URL": "http://192.168.1.3:3080/api"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Available MCP Tools
|
||||
|
||||
| Tool | Purpose |
|
||||
|------|---------|
|
||||
| **Search & Discovery** | |
|
||||
| `search_documents` | Search by keywords with pagination |
|
||||
| `list_collections` | List all collections |
|
||||
| `get_collection_structure` | Get document hierarchy |
|
||||
| `get_document_id_from_title` | Find doc ID by title |
|
||||
| **Document Operations** | |
|
||||
| `read_document` | Get document content |
|
||||
| `create_document` | Create new document |
|
||||
| `update_document` | Update document (append mode available) |
|
||||
| `move_document` | Move to different collection/parent |
|
||||
| `export_document` | Export as markdown |
|
||||
| **Lifecycle** | |
|
||||
| `archive_document` | Archive a document |
|
||||
| `delete_document` | Delete or move to trash |
|
||||
| `restore_document` | Restore from trash |
|
||||
| **Batch Operations** | |
|
||||
| `batch_create_documents` | Create multiple docs |
|
||||
| `batch_update_documents` | Update multiple docs |
|
||||
| `batch_move_documents` | Move multiple docs |
|
||||
| **AI Features** | |
|
||||
| `ask_ai_about_documents` | Natural language queries |
|
||||
|
||||
---
|
||||
|
||||
## Collections
|
||||
|
||||
| Collection | ID | Purpose |
|
||||
|------------|-----|---------|
|
||||
| **NUC Docs** | `2a42945b-1a4f-4c92-add5-dfa147ef3f56` | Server documentation |
|
||||
| **Welcome** | (default) | Getting started guides |
|
||||
|
||||
---
|
||||
|
||||
## Common Workflows
|
||||
|
||||
### 1. Save Session Findings to Wiki
|
||||
|
||||
When Claude discovers important information during a session:
|
||||
|
||||
```python
|
||||
# Using MCP (preferred)
|
||||
mcp__outline__create_document(
|
||||
title="Session Finding: <topic>",
|
||||
text="<markdown content>",
|
||||
collectionId="2a42945b-1a4f-4c92-add5-dfa147ef3f56", # NUC Docs
|
||||
publish=True
|
||||
)
|
||||
```
|
||||
|
||||
### 2. Search Existing Documentation
|
||||
|
||||
Before solving a problem, check if solution exists:
|
||||
|
||||
```python
|
||||
# Search for relevant docs
|
||||
mcp__outline__search_documents(query="tailscale funnel setup")
|
||||
|
||||
# Read specific document
|
||||
mcp__outline__read_document(id="<doc-id>")
|
||||
```
|
||||
|
||||
### 3. Update Existing Documentation
|
||||
|
||||
When information changes:
|
||||
|
||||
```python
|
||||
# Find document
|
||||
doc_id = mcp__outline__get_document_id_from_title(title="Architecture")
|
||||
|
||||
# Update with new content
|
||||
mcp__outline__update_document(
|
||||
id=doc_id,
|
||||
text="<new content>",
|
||||
append=False # Replace content; True to append
|
||||
)
|
||||
```
|
||||
|
||||
### 4. Export for Backup
|
||||
|
||||
```python
|
||||
# Export single document
|
||||
mcp__outline__export_document(id="<doc-id>")
|
||||
|
||||
# Export entire collection
|
||||
mcp__outline__export_collection(id="2a42945b-1a4f-4c92-add5-dfa147ef3f56")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## REST API Fallback
|
||||
|
||||
When MCP is not available, use direct API calls:
|
||||
|
||||
### Authentication
|
||||
|
||||
```bash
|
||||
API_KEY="ol_api_..."
|
||||
curl -X POST 'http://192.168.1.3:3080/api/<endpoint>' \
|
||||
-H "Authorization: Bearer $API_KEY" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '<json payload>'
|
||||
```
|
||||
|
||||
### Create Document
|
||||
|
||||
```bash
|
||||
curl -X POST 'http://192.168.1.3:3080/api/documents.create' \
|
||||
-H "Authorization: Bearer $API_KEY" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{
|
||||
"title": "Document Title",
|
||||
"text": "Markdown content...",
|
||||
"collectionId": "2a42945b-1a4f-4c92-add5-dfa147ef3f56",
|
||||
"publish": true
|
||||
}'
|
||||
```
|
||||
|
||||
### Search Documents
|
||||
|
||||
```bash
|
||||
curl -X POST 'http://192.168.1.3:3080/api/documents.search' \
|
||||
-H "Authorization: Bearer $API_KEY" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"query": "search term"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## API Key Management
|
||||
|
||||
### Generate New API Key
|
||||
|
||||
1. Navigate to: http://192.168.1.3:3080/settings/api-and-apps
|
||||
2. Click "New API key..."
|
||||
3. Set name and scopes:
|
||||
- `documents.create` - Create documents
|
||||
- `documents.update` - Update documents
|
||||
- `documents.read` - Read documents
|
||||
- `collections.read` - List collections
|
||||
- `collections.create` - Create collections
|
||||
4. Copy key immediately (shown only once)
|
||||
|
||||
### Current API Key
|
||||
|
||||
- **Name:** Docs Import 2
|
||||
- **Scopes:** documents.create, documents.update, collections.create, collections.read
|
||||
- **Expires:** Mar 03, 2026
|
||||
|
||||
---
|
||||
|
||||
## When to Use Outline
|
||||
|
||||
**DO save to Outline:**
|
||||
- Infrastructure documentation
|
||||
- Configuration guides
|
||||
- Troubleshooting procedures
|
||||
- Architecture decisions
|
||||
- Setup instructions
|
||||
- Persistent reference material
|
||||
|
||||
**DON'T save to Outline:**
|
||||
- Temporary session notes (use `.artifacts/`)
|
||||
- Sensitive credentials (use Vaultwarden)
|
||||
- One-time command outputs
|
||||
- Transient debugging info
|
||||
|
||||
---
|
||||
|
||||
## Integration with Other Systems
|
||||
|
||||
### From Gitea
|
||||
|
||||
NUC docs are also in Gitea at `http://192.168.1.3:3030/alezmad/nuc-docs`
|
||||
- Git repo is source of truth for docs
|
||||
- Outline provides searchable wiki interface
|
||||
- Sync manually when significant changes occur
|
||||
|
||||
### From n8n
|
||||
|
||||
Can automate Outline updates:
|
||||
- Webhook triggers on events
|
||||
- Scheduled documentation reviews
|
||||
- Auto-archive stale documents
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### MCP Connection Issues
|
||||
|
||||
```bash
|
||||
# Test API connectivity
|
||||
curl -s http://192.168.1.3:3080/api/auth.info \
|
||||
-H "Authorization: Bearer $API_KEY" | jq .ok
|
||||
```
|
||||
|
||||
### File Upload Limits
|
||||
|
||||
Outline file size limits (configured in Coolify env vars):
|
||||
- `FILE_STORAGE_UPLOAD_MAX_SIZE`: 100MB
|
||||
- `FILE_STORAGE_IMPORT_MAX_SIZE`: 100MB
|
||||
- `FILE_STORAGE_WORKSPACE_IMPORT_MAX_SIZE`: 100MB
|
||||
|
||||
### API Key Scope Errors
|
||||
|
||||
If "API key does not have access":
|
||||
1. Check key scopes in Settings > API & Apps
|
||||
2. Generate new key with required scopes
|
||||
3. Update `~/.claude/settings.json` with new key
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [Architecture](./architecture.md) - NUC infrastructure overview
|
||||
- [MCP Research Guide](./mcp-research-guide.md) - Finding new MCPs
|
||||
- Outline API Docs: https://www.getoutline.com/developers
|
||||
- MCP Server: https://github.com/Vortiago/mcp-outline
|
||||
Reference in New Issue
Block a user