@unwarkz/n8n-nodes-outline-wiki 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +223 -0
- package/dist/credentials/OutlineApi.credentials.js +43 -0
- package/dist/nodes/outline/Outline.node.js +1641 -0
- package/dist/nodes/outline/OutlineAiTools.node.js +1506 -0
- package/dist/nodes/outline/outline.svg +7 -0
- package/index.js +3 -0
- package/package.json +51 -0
package/README.md
ADDED
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
# @unwarkz/n8n-nodes-outline-wiki
|
|
2
|
+
|
|
3
|
+
N8N community node package for **[Outline Wiki](https://www.getoutline.com/)** — a beautiful, feature-rich knowledge base.
|
|
4
|
+
Provides two nodes: a full-featured **regular workflow node** for all Outline API operations, and an **AI Agent tools node** that exposes those same operations to LLM-powered agents.
|
|
5
|
+
|
|
6
|
+
[](https://www.npmjs.com/package/@unwarkz/n8n-nodes-outline-wiki)
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
|
|
13
|
+
### Outline Wiki Node (regular workflow node)
|
|
14
|
+
|
|
15
|
+
Use in standard n8n workflows — drag, drop, configure, done. Full Resource → Operation picker covering the entire Outline REST API:
|
|
16
|
+
|
|
17
|
+
| Resource | Operations |
|
|
18
|
+
|----------|-----------|
|
|
19
|
+
| **Document** | Get, Create, Update, Delete, List, Search, Search Titles, Import (file → document), Export (document → binary), Archive, Restore, Move, Answer Question (AI) |
|
|
20
|
+
| **Collection** | List, Get, Create, Update, Delete, Get Document Tree, Export |
|
|
21
|
+
| **Comment** | List, Create, Update, Delete |
|
|
22
|
+
| **Attachment** | Upload (binary → Outline S3), Delete |
|
|
23
|
+
| **User** | List, Get |
|
|
24
|
+
| **Share** | List, Create, Revoke |
|
|
25
|
+
|
|
26
|
+
**Highlights:**
|
|
27
|
+
- **Import**: upload any binary (Markdown, HTML, DOCX, CSV, TSV) from the workflow binary data and import it as a new Outline document
|
|
28
|
+
- **Export**: export a document as Markdown and place it in the output binary data for downstream processing
|
|
29
|
+
- **Attachment Upload**: two-step signed upload (creates attachment record → POSTs file to signed S3/GCS URL) and returns the CDN URL for embedding in document content
|
|
30
|
+
- `continueOnFail()` support — errors are captured per item instead of failing the whole workflow
|
|
31
|
+
- Subtitle shows `Resource: Operation` for at-a-glance visibility in the canvas
|
|
32
|
+
|
|
33
|
+
### Outline Wiki AI Tools Node
|
|
34
|
+
|
|
35
|
+
Connect to an n8n **AI Agent** node to give it full read/write access to your Outline knowledge base.
|
|
36
|
+
Select which of the **31 tools** to expose:
|
|
37
|
+
|
|
38
|
+
#### Documents (13 tools)
|
|
39
|
+
|
|
40
|
+
| Tool | Description |
|
|
41
|
+
|------|-------------|
|
|
42
|
+
| `outline_search_documents` | Full-text search across all documents with optional collection/status/date filters |
|
|
43
|
+
| `outline_search_titles` | Fast title-only search (much faster than full-text) |
|
|
44
|
+
| `outline_create_document` | Create a new document (Markdown body, draft or published) |
|
|
45
|
+
| `outline_get_document` | Retrieve full document content by ID or URL slug |
|
|
46
|
+
| `outline_update_document` | Update title, body, or publish status |
|
|
47
|
+
| `outline_delete_document` | Move to trash (default) or permanently destroy |
|
|
48
|
+
| `outline_list_documents` | List documents with optional collection/parent/status filters |
|
|
49
|
+
| `outline_import_document` | Import a file (Markdown, DOCX, HTML, CSV…) as a new document — accepts `binary_property_name` from any prior tool |
|
|
50
|
+
| `outline_export_document` | Export a document as Markdown — stores in binary property for cross-tool use |
|
|
51
|
+
| `outline_archive_document` | Archive outdated content (restorable) |
|
|
52
|
+
| `outline_restore_document` | Restore an archived or deleted document |
|
|
53
|
+
| `outline_move_document` | Move to a different collection or parent |
|
|
54
|
+
| `outline_answer_question` | Natural-language AI query against your knowledge base *(Business/Enterprise/Cloud only)* |
|
|
55
|
+
|
|
56
|
+
#### Collections (7 tools)
|
|
57
|
+
|
|
58
|
+
| Tool | Description |
|
|
59
|
+
|------|-------------|
|
|
60
|
+
| `outline_list_collections` | List all accessible collections |
|
|
61
|
+
| `outline_create_collection` | Create a new collection with name, description, icon, color, and permissions |
|
|
62
|
+
| `outline_get_collection` | Retrieve collection details by UUID |
|
|
63
|
+
| `outline_update_collection` | Update name, description, or settings |
|
|
64
|
+
| `outline_delete_collection` | ⚠️ Delete a collection and ALL its documents (irreversible) |
|
|
65
|
+
| `outline_get_collection_documents` | Get the full document hierarchy/tree for a collection |
|
|
66
|
+
| `outline_export_collection` | Trigger a bulk Markdown/JSON/HTML export (returns FileOperation) |
|
|
67
|
+
|
|
68
|
+
#### Comments (4 tools)
|
|
69
|
+
|
|
70
|
+
| Tool | Description |
|
|
71
|
+
|------|-------------|
|
|
72
|
+
| `outline_list_comments` | List comments on a document or within a collection |
|
|
73
|
+
| `outline_create_comment` | Add a comment or threaded reply to a document |
|
|
74
|
+
| `outline_update_comment` | Edit an existing comment |
|
|
75
|
+
| `outline_delete_comment` | Delete a comment (and all its replies) |
|
|
76
|
+
|
|
77
|
+
#### Attachments (2 tools)
|
|
78
|
+
|
|
79
|
+
| Tool | Description |
|
|
80
|
+
|------|-------------|
|
|
81
|
+
| `outline_upload_attachment` | Upload a file (PNG, PDF, DOCX, ZIP…) to Outline cloud storage — accepts `binary_property_name`, returns attachment URL for embedding in documents |
|
|
82
|
+
| `outline_delete_attachment` | Permanently delete an attachment |
|
|
83
|
+
|
|
84
|
+
#### Users (2 tools)
|
|
85
|
+
|
|
86
|
+
| Tool | Description |
|
|
87
|
+
|------|-------------|
|
|
88
|
+
| `outline_list_users` | List workspace users (filterable by name/email) |
|
|
89
|
+
| `outline_get_user` | Get details for a specific user |
|
|
90
|
+
|
|
91
|
+
#### Shares (3 tools)
|
|
92
|
+
|
|
93
|
+
| Tool | Description |
|
|
94
|
+
|------|-------------|
|
|
95
|
+
| `outline_create_share` | Create a public share link for a document |
|
|
96
|
+
| `outline_list_shares` | List existing share links |
|
|
97
|
+
| `outline_revoke_share` | Revoke a share link |
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Binary File Interoperability
|
|
102
|
+
|
|
103
|
+
The AI Tools node uses **n8n native binary references** for file exchange — no base64 in the AI context.
|
|
104
|
+
|
|
105
|
+
- Tools that **produce** files store them in n8n's binary data system and return a `binaryPropertyName`.
|
|
106
|
+
- Tools that **consume** files accept a `binary_property_name` parameter and read data via `getBinaryDataBuffer`.
|
|
107
|
+
- Binary data is shared via `global._n8nBinaryRegistry` so files flow between all tool modules in the same agent run.
|
|
108
|
+
- Compatible with `N8N_DEFAULT_BINARY_DATA_MODE=filesystem` and `database`.
|
|
109
|
+
|
|
110
|
+
**Example AI agent chains:**
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
# Import a Telegram attachment into Outline
|
|
114
|
+
telegram_get_file({ file_id: "..." })
|
|
115
|
+
→ { binaryPropertyName: "telegram_file_0" }
|
|
116
|
+
|
|
117
|
+
outline_import_document({
|
|
118
|
+
binary_property_name: "telegram_file_0",
|
|
119
|
+
collection_id: "...",
|
|
120
|
+
publish: true
|
|
121
|
+
})
|
|
122
|
+
→ { success: true, data: { id: "doc-...", title: "..." } }
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
# Export a document and send via Telegram
|
|
127
|
+
outline_export_document({ id: "doc-uuid", output_filename: "notes.md" })
|
|
128
|
+
→ { binaryPropertyName: "outline_file_0", sizeKb: 12 }
|
|
129
|
+
|
|
130
|
+
telegram_send_document({
|
|
131
|
+
chat_id: "@mychat",
|
|
132
|
+
binary_property_name: "outline_file_0"
|
|
133
|
+
})
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
# Upload a PDF from Gotenberg as an Outline attachment
|
|
138
|
+
gotenberg_url_to_pdf({ url: "https://example.com" })
|
|
139
|
+
→ { binaryPropertyName: "gotenberg_file_0" }
|
|
140
|
+
|
|
141
|
+
outline_upload_attachment({
|
|
142
|
+
binary_property_name: "gotenberg_file_0",
|
|
143
|
+
document_id: "doc-uuid"
|
|
144
|
+
})
|
|
145
|
+
→ { attachmentUrl: "https://cdn.outline.com/..." }
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Prerequisites
|
|
151
|
+
|
|
152
|
+
1. An **Outline** account — cloud ([app.getoutline.com](https://app.getoutline.com)) or self-hosted.
|
|
153
|
+
2. An **Outline API key** — generate one at **Settings → API & Apps**.
|
|
154
|
+
Keys always begin with `ol_api_`.
|
|
155
|
+
3. n8n version ≥ 1.0.0.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Installation
|
|
160
|
+
|
|
161
|
+
### Via n8n Community Nodes (recommended)
|
|
162
|
+
|
|
163
|
+
1. Go to **Settings → Community Nodes**
|
|
164
|
+
2. Click **Install**
|
|
165
|
+
3. Enter: `@unwarkz/n8n-nodes-outline-wiki`
|
|
166
|
+
4. Click **Install**
|
|
167
|
+
|
|
168
|
+
### Manual Installation
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
cd ~/.n8n
|
|
172
|
+
npm install @unwarkz/n8n-nodes-outline-wiki
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Credential Setup
|
|
178
|
+
|
|
179
|
+
1. In n8n go to **Credentials → New Credential → Outline API**
|
|
180
|
+
2. Fill in:
|
|
181
|
+
- **API Key** — your `ol_api_...` key from Outline Settings → API & Apps
|
|
182
|
+
- **Base URL** — `https://app.getoutline.com` (or your self-hosted domain, e.g. `https://docs.example.com`)
|
|
183
|
+
3. Click **Test connection** — it will validate against `auth.info`
|
|
184
|
+
4. Save the credential
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Usage
|
|
189
|
+
|
|
190
|
+
1. Add an **Outline Wiki AI Tools** node to your workflow
|
|
191
|
+
2. Select the **Outline API** credential
|
|
192
|
+
3. Choose which tools to enable (all 31 are enabled by default)
|
|
193
|
+
4. Connect the **Tool** output to an **AI Agent** node's **Tools** input
|
|
194
|
+
5. The AI Agent can now read, write, search, and manage your Outline knowledge base
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## API Coverage
|
|
199
|
+
|
|
200
|
+
This node covers the following Outline API endpoints:
|
|
201
|
+
|
|
202
|
+
| Category | Endpoints |
|
|
203
|
+
|----------|-----------|
|
|
204
|
+
| Documents | `documents.search`, `documents.search_titles`, `documents.create`, `documents.info`, `documents.update`, `documents.delete`, `documents.list`, `documents.import`, `documents.export`, `documents.archive`, `documents.restore`, `documents.move`, `documents.answerQuestion` |
|
|
205
|
+
| Collections | `collections.list`, `collections.create`, `collections.info`, `collections.update`, `collections.delete`, `collections.documents`, `collections.export` |
|
|
206
|
+
| Comments | `comments.list`, `comments.create`, `comments.update`, `comments.delete` |
|
|
207
|
+
| Attachments | `attachments.create` + signed S3/GCS upload, `attachments.delete` |
|
|
208
|
+
| Users | `users.list`, `users.info` |
|
|
209
|
+
| Shares | `shares.create`, `shares.list`, `shares.revoke` |
|
|
210
|
+
|
|
211
|
+
Reference: [Outline API Documentation](https://www.getoutline.com/developers) · [OpenAPI Spec](https://github.com/outline/openapi)
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Part of the Assistant Set
|
|
216
|
+
|
|
217
|
+
This package is also included in the full [@unwarkz/n8n-nodes-assistant-set](https://www.npmjs.com/package/@unwarkz/n8n-nodes-assistant-set) package, which bundles Mem0 memory, Gotenberg PDF, Telegram Bot, and Outline Wiki nodes together.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## License
|
|
222
|
+
|
|
223
|
+
MIT © unwarkz
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OutlineApi = void 0;
|
|
4
|
+
|
|
5
|
+
class OutlineApi {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.name = 'outlineApi';
|
|
8
|
+
this.displayName = 'Outline API';
|
|
9
|
+
this.documentationUrl = 'https://www.getoutline.com/developers';
|
|
10
|
+
this.properties = [
|
|
11
|
+
{
|
|
12
|
+
displayName: 'API Key',
|
|
13
|
+
name: 'apiKey',
|
|
14
|
+
type: 'string',
|
|
15
|
+
typeOptions: { password: true },
|
|
16
|
+
default: '',
|
|
17
|
+
required: true,
|
|
18
|
+
description: 'Your Outline API key (Settings → API & Apps). Always begins with "ol_api_".',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
displayName: 'Base URL',
|
|
22
|
+
name: 'baseUrl',
|
|
23
|
+
type: 'string',
|
|
24
|
+
default: 'https://app.getoutline.com',
|
|
25
|
+
required: true,
|
|
26
|
+
description: 'The base URL of your Outline instance (e.g., https://app.getoutline.com or your self-hosted domain)',
|
|
27
|
+
},
|
|
28
|
+
];
|
|
29
|
+
this.test = {
|
|
30
|
+
request: {
|
|
31
|
+
baseURL: '={{$credentials.baseUrl}}',
|
|
32
|
+
url: '/api/auth.info',
|
|
33
|
+
method: 'POST',
|
|
34
|
+
headers: {
|
|
35
|
+
Authorization: '=Bearer {{$credentials.apiKey}}',
|
|
36
|
+
'Content-Type': 'application/json',
|
|
37
|
+
},
|
|
38
|
+
body: '{}',
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.OutlineApi = OutlineApi;
|