twentythree-skills 1.0.0
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 +47 -0
- package/bin/add.js +103 -0
- package/package.json +46 -0
- package/skills/SKILL.md +211 -0
- package/skills/reference/action.md +233 -0
- package/skills/reference/analytics.md +337 -0
- package/skills/reference/app.md +160 -0
- package/skills/reference/audience.md +377 -0
- package/skills/reference/category.md +123 -0
- package/skills/reference/collector.md +103 -0
- package/skills/reference/comment.md +225 -0
- package/skills/reference/openupload.md +138 -0
- package/skills/reference/player.md +192 -0
- package/skills/reference/poll.md +174 -0
- package/skills/reference/presentation.md +99 -0
- package/skills/reference/protection.md +131 -0
- package/skills/reference/session.md +98 -0
- package/skills/reference/setting.md +115 -0
- package/skills/reference/site.md +94 -0
- package/skills/reference/spot.md +188 -0
- package/skills/reference/tag.md +93 -0
- package/skills/reference/thumbnail.md +224 -0
- package/skills/reference/user.md +216 -0
- package/skills/reference/video.md +631 -0
- package/skills/reference/webhook.md +151 -0
- package/skills/reference/webinar.md +1371 -0
- package/skills/workflows/upload-and-publish.md +146 -0
- package/skills/workflows/webinar-lifecycle.md +209 -0
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: audience
|
|
3
|
+
description: Manage viewer audience records, segments, lead-capture registrations, and audience fields.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Audience Commands
|
|
7
|
+
|
|
8
|
+
> Query, register, and manage viewer audience profiles, registrations, and custom fields.
|
|
9
|
+
> Always use `--json` in agentic contexts for structured output.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
Auth scope required: read (list, search, metrics, timelines, companies, funnel, identity-sources, list-collectors, field list), write (register, unregister, remove, field set, field remove).
|
|
14
|
+
Run `twentythree auth credentials` if not already configured.
|
|
15
|
+
Verify: `twentythree auth status --json`
|
|
16
|
+
|
|
17
|
+
> For any flag not listed here, run `twentythree audience <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
18
|
+
|
|
19
|
+
## Commands
|
|
20
|
+
|
|
21
|
+
### audience list
|
|
22
|
+
|
|
23
|
+
**Auth scope:** read **Side effects:** none **Output:** table (UUID, Name, Email, Company, Score, Timelines)
|
|
24
|
+
|
|
25
|
+
Flags:
|
|
26
|
+
|
|
27
|
+
| Flag | Required | Description |
|
|
28
|
+
|------|----------|-------------|
|
|
29
|
+
| `--page` | no | Page number |
|
|
30
|
+
| `--size` | no | Page size (max 500) |
|
|
31
|
+
| `--offset` | no | Offset for pagination |
|
|
32
|
+
| `--orderby` | no | Order by field (recent, timeline_count, score, first) |
|
|
33
|
+
| `--order` | no | Sort direction (asc/desc) |
|
|
34
|
+
| `--search` | no | Free-text search across names and emails |
|
|
35
|
+
| `--identified` | no | Filter to identified profiles only |
|
|
36
|
+
| `--objects` | no | Filter by viewed object IDs (space-separated) |
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# List all audience members (paginated)
|
|
40
|
+
twentythree audience list --json
|
|
41
|
+
|
|
42
|
+
# List identified audience members ordered by engagement score
|
|
43
|
+
twentythree audience list --identified --orderby score --order desc --size 100 --json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### audience search
|
|
47
|
+
|
|
48
|
+
**Auth scope:** read **Side effects:** none **Output:** table (UUID, Name, Email, Company, Score, Last Seen)
|
|
49
|
+
|
|
50
|
+
Flags:
|
|
51
|
+
|
|
52
|
+
| Flag | Required | Description |
|
|
53
|
+
|------|----------|-------------|
|
|
54
|
+
| `--text` | yes | Search text (required) |
|
|
55
|
+
| `--size` | no | Number of results |
|
|
56
|
+
| `--offset` | no | Results offset |
|
|
57
|
+
| `--orderby` | no | Order by field |
|
|
58
|
+
| `--order` | no | Sort direction (asc/desc) |
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Search for an audience member by name or email
|
|
62
|
+
twentythree audience search --text "jane@example.com" --json
|
|
63
|
+
|
|
64
|
+
# Search for all audience members from a company
|
|
65
|
+
twentythree audience search --text "acme" --size 20 --orderby score --order desc --json
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### audience metrics
|
|
69
|
+
|
|
70
|
+
**Auth scope:** read **Side effects:** none **Output:** key-value
|
|
71
|
+
|
|
72
|
+
Flags:
|
|
73
|
+
|
|
74
|
+
| Flag | Required | Description |
|
|
75
|
+
|------|----------|-------------|
|
|
76
|
+
| `--page` | no | Page number |
|
|
77
|
+
| `--size` | no | Page size |
|
|
78
|
+
| `--offset` | no | Offset for pagination |
|
|
79
|
+
| `--search` | no | Free-text search filter |
|
|
80
|
+
| `--identified` | no | Filter to identified profiles only |
|
|
81
|
+
| `--objects` | no | Filter by viewed object IDs (space-separated) |
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Get overall audience metrics for the workspace
|
|
85
|
+
twentythree audience metrics --json
|
|
86
|
+
|
|
87
|
+
# Get metrics for identified audience members only
|
|
88
|
+
twentythree audience metrics --identified --json
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### audience timelines
|
|
92
|
+
|
|
93
|
+
**Auth scope:** read **Side effects:** none **Output:** table (UUID, Object ID, Type, Engagement, Sessions, Source)
|
|
94
|
+
|
|
95
|
+
Flags:
|
|
96
|
+
|
|
97
|
+
| Flag | Required | Description |
|
|
98
|
+
|------|----------|-------------|
|
|
99
|
+
| `--page` | no | Page number |
|
|
100
|
+
| `--size` | no | Page size |
|
|
101
|
+
| `--offset` | no | Offset for pagination |
|
|
102
|
+
| `--uuid` | no | Filter by audience member UUID |
|
|
103
|
+
| `--objects` | no | Filter by object IDs (space-separated) |
|
|
104
|
+
| `--orderby` | no | Order by field |
|
|
105
|
+
| `--order` | no | Sort direction (asc/desc) |
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# Get all timelines for a specific audience member
|
|
109
|
+
twentythree audience timelines --uuid <uuid> --json
|
|
110
|
+
|
|
111
|
+
# Get timelines for specific videos across all viewers
|
|
112
|
+
twentythree audience timelines --objects "<video-id-1> <video-id-2>" --json
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### audience register
|
|
116
|
+
|
|
117
|
+
**Auth scope:** write **Side effects:** creates **Output:** none
|
|
118
|
+
|
|
119
|
+
Flags:
|
|
120
|
+
|
|
121
|
+
| Flag | Required | Description |
|
|
122
|
+
|------|----------|-------------|
|
|
123
|
+
| `--email` | yes | Contact email address |
|
|
124
|
+
| `--object-id` | no | Webinar/video ID to register for |
|
|
125
|
+
| `--uuid` | no | Existing contact UUID |
|
|
126
|
+
| `--action-id` | no | Collector action ID |
|
|
127
|
+
| `--firstname` | no | First name |
|
|
128
|
+
| `--lastname` | no | Last name |
|
|
129
|
+
| `--company` | no | Company name |
|
|
130
|
+
| `--phone` | no | Phone number |
|
|
131
|
+
| `--return-url` | no | Base URL for tracking URL |
|
|
132
|
+
| `--source` | no | Registration source (api, import, site, custom) |
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
# Register a new audience member
|
|
136
|
+
twentythree audience register --email "jane@example.com" --json
|
|
137
|
+
|
|
138
|
+
# Register a member for a specific webinar with full profile data
|
|
139
|
+
twentythree audience register --email "john@acme.com" --object-id <webinar-id> --firstname "John" --lastname "Doe" --company "Acme Corp" --source api --json
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### audience unregister
|
|
143
|
+
|
|
144
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
145
|
+
|
|
146
|
+
Flags:
|
|
147
|
+
|
|
148
|
+
| Flag | Required | Description |
|
|
149
|
+
|------|----------|-------------|
|
|
150
|
+
| `--object-id` | yes | Object ID to unregister from |
|
|
151
|
+
| `--email` | no | Contact email |
|
|
152
|
+
| `--uuid` | no | Contact UUID |
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# Unregister by email from a specific webinar
|
|
156
|
+
twentythree audience unregister --object-id <webinar-id> --email "jane@example.com" --json
|
|
157
|
+
|
|
158
|
+
# Unregister by UUID
|
|
159
|
+
twentythree audience unregister --object-id <webinar-id> --uuid <uuid> --json
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### audience remove
|
|
163
|
+
|
|
164
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
165
|
+
|
|
166
|
+
Permanently removes an audience profile. At least one of `--email` or `--uuid` required.
|
|
167
|
+
|
|
168
|
+
Flags:
|
|
169
|
+
|
|
170
|
+
| Flag | Required | Description |
|
|
171
|
+
|------|----------|-------------|
|
|
172
|
+
| `--email` | no | Contact email address |
|
|
173
|
+
| `--uuid` | no | Contact UUID |
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# Permanently remove an audience member by email (GDPR deletion)
|
|
177
|
+
twentythree audience remove --email "jane@example.com" --json
|
|
178
|
+
|
|
179
|
+
# Remove by UUID
|
|
180
|
+
twentythree audience remove --uuid <uuid> --json
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### audience companies
|
|
184
|
+
|
|
185
|
+
**Auth scope:** read **Side effects:** none **Output:** table (UUID, Name, Domain, Score, Profiles, Timelines)
|
|
186
|
+
|
|
187
|
+
Flags:
|
|
188
|
+
|
|
189
|
+
| Flag | Required | Description |
|
|
190
|
+
|------|----------|-------------|
|
|
191
|
+
| `--page` | no | Page number |
|
|
192
|
+
| `--size` | no | Page size |
|
|
193
|
+
| `--offset` | no | Offset for pagination |
|
|
194
|
+
| `--orderby` | no | Order by field |
|
|
195
|
+
| `--order` | no | Sort direction (asc/desc) |
|
|
196
|
+
| `--identified` | no | Filter to identified companies only |
|
|
197
|
+
| `--domains` | no | Filter by company domains (space-separated) |
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
# List all companies in the audience
|
|
201
|
+
twentythree audience companies --json
|
|
202
|
+
|
|
203
|
+
# Find companies in a specific domain with highest engagement score
|
|
204
|
+
twentythree audience companies --domains "acme.com competitor.com" --orderby score --order desc --json
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### audience funnel
|
|
208
|
+
|
|
209
|
+
**Auth scope:** read **Side effects:** none **Output:** key-value
|
|
210
|
+
|
|
211
|
+
Flags:
|
|
212
|
+
|
|
213
|
+
| Flag | Required | Description |
|
|
214
|
+
|------|----------|-------------|
|
|
215
|
+
| `--objects` | no | Filter by object IDs (space-separated) |
|
|
216
|
+
| `--live-type` | no | Live event type filter |
|
|
217
|
+
| `--resolve-recordings` | no | Resolve recording details |
|
|
218
|
+
| `--resolve-live-series` | no | Resolve live series details |
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# Get overall audience funnel data
|
|
222
|
+
twentythree audience funnel --json
|
|
223
|
+
|
|
224
|
+
# Get funnel for specific videos
|
|
225
|
+
twentythree audience funnel --objects "<video-id-1> <video-id-2>" --resolve-recordings --json
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### audience identity-sources
|
|
229
|
+
|
|
230
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Source, Title, Service)
|
|
231
|
+
|
|
232
|
+
No additional flags.
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# List all identity sources configured for the workspace
|
|
236
|
+
twentythree audience identity-sources --json
|
|
237
|
+
|
|
238
|
+
# Use in context to understand how audience members were identified
|
|
239
|
+
twentythree audience identity-sources --json
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### audience list-collectors
|
|
243
|
+
|
|
244
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Action ID, Name, Start, End, Require Email)
|
|
245
|
+
|
|
246
|
+
Flags:
|
|
247
|
+
|
|
248
|
+
| Flag | Required | Description |
|
|
249
|
+
|------|----------|-------------|
|
|
250
|
+
| `--object-id` | no | Filter by object ID |
|
|
251
|
+
| `--action-id` | no | Filter by action ID |
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# List all collectors linked to the audience system
|
|
255
|
+
twentythree audience list-collectors --json
|
|
256
|
+
|
|
257
|
+
# List collectors linked to a specific video
|
|
258
|
+
twentythree audience list-collectors --object-id <video-id> --json
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Subtopic: audience field
|
|
262
|
+
|
|
263
|
+
Manage custom fields on audience profiles. Fields are workspace-wide and appear on all audience records.
|
|
264
|
+
|
|
265
|
+
### audience field list
|
|
266
|
+
|
|
267
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Key, Label, Type, Priority, Options)
|
|
268
|
+
|
|
269
|
+
Flags:
|
|
270
|
+
|
|
271
|
+
| Flag | Required | Description |
|
|
272
|
+
|------|----------|-------------|
|
|
273
|
+
| `--include-widget-html` | no | Include HTML widget for each field |
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
# List all custom audience fields
|
|
277
|
+
twentythree audience field list --json
|
|
278
|
+
|
|
279
|
+
# List fields including their HTML widget rendering
|
|
280
|
+
twentythree audience field list --include-widget-html --json
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### audience field set
|
|
284
|
+
|
|
285
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
286
|
+
|
|
287
|
+
Creates or updates a custom audience field. Use `audience field types` to discover valid type values.
|
|
288
|
+
|
|
289
|
+
Flags:
|
|
290
|
+
|
|
291
|
+
| Flag | Required | Description |
|
|
292
|
+
|------|----------|-------------|
|
|
293
|
+
| `--key` | yes | Unique field key |
|
|
294
|
+
| `--type` | yes | Field type (use `audience field types` to list valid values) |
|
|
295
|
+
| `--label` | yes | Human-readable label |
|
|
296
|
+
| `--options` | no | Semicolon-separated options (for enumerable types) |
|
|
297
|
+
| `--priority` | no | Display order priority |
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
# Add a simple text field to all audience profiles
|
|
301
|
+
twentythree audience field set --key "department" --type text --label "Department" --json
|
|
302
|
+
|
|
303
|
+
# Add an enum field with options
|
|
304
|
+
twentythree audience field set --key "tier" --type enum --label "Customer Tier" --options "free;pro;enterprise" --priority 1 --json
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### audience field remove
|
|
308
|
+
|
|
309
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
310
|
+
|
|
311
|
+
Flags:
|
|
312
|
+
|
|
313
|
+
| Flag | Required | Description |
|
|
314
|
+
|------|----------|-------------|
|
|
315
|
+
| `--key` | yes | Field key to remove |
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
# Remove a custom audience field
|
|
319
|
+
twentythree audience field remove --key "old-field" --json
|
|
320
|
+
|
|
321
|
+
# Remove a field that is no longer in use
|
|
322
|
+
twentythree audience field remove --key "department" --json
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### audience field types
|
|
326
|
+
|
|
327
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Type, Label)
|
|
328
|
+
|
|
329
|
+
No additional flags. Returns valid type values for use with `audience field set --type`.
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
# Discover valid field types before creating a new field
|
|
333
|
+
twentythree audience field types --json
|
|
334
|
+
|
|
335
|
+
# Use output to pick a type for field set
|
|
336
|
+
twentythree audience field types --json
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## Common Patterns
|
|
340
|
+
|
|
341
|
+
### Register a new audience member for a webinar
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
# Register a viewer for a specific webinar with profile data
|
|
345
|
+
twentythree audience register \
|
|
346
|
+
--email "jane@example.com" \
|
|
347
|
+
--object-id <webinar-id> \
|
|
348
|
+
--firstname "Jane" \
|
|
349
|
+
--lastname "Smith" \
|
|
350
|
+
--company "Acme Corp" \
|
|
351
|
+
--source api \
|
|
352
|
+
--json
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### Search for a viewer and get their viewing timeline
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
# Step 1: Find the audience member
|
|
359
|
+
twentythree audience search --text "jane@example.com" --json
|
|
360
|
+
|
|
361
|
+
# Step 2: Get their full viewing history using the UUID from step 1
|
|
362
|
+
twentythree audience timelines --uuid <uuid> --json
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
### Add a custom field to all audience profiles
|
|
366
|
+
|
|
367
|
+
```bash
|
|
368
|
+
# Step 1: Check existing fields and available types
|
|
369
|
+
twentythree audience field list --json
|
|
370
|
+
twentythree audience field types --json
|
|
371
|
+
|
|
372
|
+
# Step 2: Create the new field
|
|
373
|
+
twentythree audience field set --key "company_size" --type text --label "Company Size" --priority 5 --json
|
|
374
|
+
|
|
375
|
+
# Step 3: Verify the field was created
|
|
376
|
+
twentythree audience field list --json
|
|
377
|
+
```
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: category
|
|
3
|
+
description: Organise videos and webinars into collections (categories). API name: album.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Category Commands
|
|
7
|
+
|
|
8
|
+
> List, create, update, and delete content categories (collections of videos and webinars).
|
|
9
|
+
> Always use `--json` in agentic contexts for structured output.
|
|
10
|
+
|
|
11
|
+
> Category is the CLI name; the API uses `album`. No `category get` command exists — use `category list` with a search term or ID filter to retrieve details.
|
|
12
|
+
|
|
13
|
+
## Prerequisites
|
|
14
|
+
|
|
15
|
+
Auth scope required: anonymous (list), write (create, update, delete).
|
|
16
|
+
Run `twentythree auth credentials` if not already configured.
|
|
17
|
+
Verify: `twentythree auth status --json`
|
|
18
|
+
|
|
19
|
+
Category `list` does not require auth — it works before running `twentythree auth credentials`. All other category commands require a `write` token.
|
|
20
|
+
|
|
21
|
+
> For any flag not listed here, run `twentythree category <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
22
|
+
|
|
23
|
+
## Commands
|
|
24
|
+
|
|
25
|
+
### category list
|
|
26
|
+
|
|
27
|
+
**Auth scope:** anonymous **Side effects:** none **Output:** table (ID, Title, Hidden, Created)
|
|
28
|
+
|
|
29
|
+
Flags:
|
|
30
|
+
|
|
31
|
+
| Flag | Required | Description |
|
|
32
|
+
|------|----------|-------------|
|
|
33
|
+
| `--include-hidden` | no | Include hidden categories in the results |
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# List all visible categories
|
|
37
|
+
twentythree category list --json
|
|
38
|
+
|
|
39
|
+
# Include hidden categories
|
|
40
|
+
twentythree category list --include-hidden --json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### category create
|
|
44
|
+
|
|
45
|
+
**Auth scope:** write **Side effects:** creates **Output:** none
|
|
46
|
+
|
|
47
|
+
> **Note:** The API returns `output_shape: none` for category create — no ID is returned in the response. To find the newly created category, re-run `category list --json` and filter by title.
|
|
48
|
+
|
|
49
|
+
Flags:
|
|
50
|
+
|
|
51
|
+
| Flag | Required | Description |
|
|
52
|
+
|------|----------|-------------|
|
|
53
|
+
| `--title` | yes | Title for the new category |
|
|
54
|
+
| `--description` | no | Description for the new category |
|
|
55
|
+
| `--hidden` | no | Create as hidden category (boolean) |
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Create a visible category
|
|
59
|
+
twentythree category create --title "Q2 Demos" --json
|
|
60
|
+
|
|
61
|
+
# Create a hidden category with description
|
|
62
|
+
twentythree category create --title "Internal Videos" --description "For internal team only" --hidden --json
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### category update
|
|
66
|
+
|
|
67
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
68
|
+
|
|
69
|
+
Takes `<category-id>` as positional argument.
|
|
70
|
+
|
|
71
|
+
Flags:
|
|
72
|
+
|
|
73
|
+
| Flag | Required | Description |
|
|
74
|
+
|------|----------|-------------|
|
|
75
|
+
| `--title` | no | New title for the category |
|
|
76
|
+
| `--description` | no | New description for the category |
|
|
77
|
+
| `--hidden` | no | Show or hide the category (boolean) |
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Update a category title
|
|
81
|
+
twentythree category update <category-id> --title "Q2 Product Demos" --json
|
|
82
|
+
|
|
83
|
+
# Hide an existing category
|
|
84
|
+
twentythree category update <category-id> --hidden --json
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### category delete
|
|
88
|
+
|
|
89
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
90
|
+
|
|
91
|
+
Takes `<category-id>` as positional argument. No additional flags.
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# Delete a category
|
|
95
|
+
twentythree category delete <category-id> --json
|
|
96
|
+
|
|
97
|
+
# Delete a category you no longer need
|
|
98
|
+
twentythree category delete <category-id> --json
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Common Patterns
|
|
102
|
+
|
|
103
|
+
### Create a category and look it up
|
|
104
|
+
|
|
105
|
+
Because `category create` returns no ID, re-query after creation:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# Step 1: Create the category
|
|
109
|
+
twentythree category create --title "Q2 Demos" --description "Demo videos for Q2" --json
|
|
110
|
+
|
|
111
|
+
# Step 2: Find the newly created category by title
|
|
112
|
+
twentythree category list --json
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### List hidden categories
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
twentythree category list --include-hidden --json
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Terminology Notes
|
|
122
|
+
|
|
123
|
+
CLI `category` = API `album`. The `api_endpoint` field in `--agent` output uses the API name (e.g. `GET /album/list`, `POST /album/create`). When debugging API responses or reading the raw OpenAPI spec, look for `/album/*` paths.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: collector
|
|
3
|
+
description: Attach and remove lead-capture collectors (forms) on videos and webinars.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Collector Commands
|
|
7
|
+
|
|
8
|
+
> Attach and manage lead-capture forms (collectors) on videos and webinars.
|
|
9
|
+
> Always use `--json` in agentic contexts for structured output.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
Auth scope required: read (list), write (include, exclude).
|
|
14
|
+
Run `twentythree auth credentials` if not already configured.
|
|
15
|
+
Verify: `twentythree auth status --json`
|
|
16
|
+
|
|
17
|
+
> For any flag not listed here, run `twentythree collector <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
18
|
+
|
|
19
|
+
## Commands
|
|
20
|
+
|
|
21
|
+
### collector list
|
|
22
|
+
|
|
23
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Name, Type)
|
|
24
|
+
|
|
25
|
+
Flags:
|
|
26
|
+
|
|
27
|
+
| Flag | Required | Description |
|
|
28
|
+
|------|----------|-------------|
|
|
29
|
+
| `--object-id` | no | Filter collectors by object (video/webinar) ID |
|
|
30
|
+
| `--include-analytics` | no | Include analytics data for each collector |
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# List all collectors in the workspace
|
|
34
|
+
twentythree collector list --json
|
|
35
|
+
|
|
36
|
+
# List collectors attached to a specific video
|
|
37
|
+
twentythree collector list --object-id <video-id> --json
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### collector include
|
|
41
|
+
|
|
42
|
+
**Auth scope:** write **Side effects:** creates **Output:** none
|
|
43
|
+
|
|
44
|
+
Attaches a collector to a video or webinar. Takes `<collector-id>` as positional argument.
|
|
45
|
+
|
|
46
|
+
Flags:
|
|
47
|
+
|
|
48
|
+
| Flag | Required | Description |
|
|
49
|
+
|------|----------|-------------|
|
|
50
|
+
| `--object-id` | yes | ID of the video or webinar to attach the collector to |
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Attach a collector to a video
|
|
54
|
+
twentythree collector include <collector-id> --object-id <video-id> --json
|
|
55
|
+
|
|
56
|
+
# Attach a collector to a webinar
|
|
57
|
+
twentythree collector include <collector-id> --object-id <webinar-id> --json
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### collector exclude
|
|
61
|
+
|
|
62
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
63
|
+
|
|
64
|
+
Blocks a collector from appearing on a video or webinar. Takes `<collector-id>` as positional argument.
|
|
65
|
+
|
|
66
|
+
Flags:
|
|
67
|
+
|
|
68
|
+
| Flag | Required | Description |
|
|
69
|
+
|------|----------|-------------|
|
|
70
|
+
| `--object-id` | yes | ID of the video or webinar to block the collector from |
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Block a collector from a specific video
|
|
74
|
+
twentythree collector exclude <collector-id> --object-id <video-id> --json
|
|
75
|
+
|
|
76
|
+
# Block a collector from a webinar
|
|
77
|
+
twentythree collector exclude <collector-id> --object-id <webinar-id> --json
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Common Patterns
|
|
81
|
+
|
|
82
|
+
### Attach a lead-capture form to a video
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Step 1: Find available collectors and their IDs
|
|
86
|
+
twentythree collector list --json
|
|
87
|
+
|
|
88
|
+
# Step 2: Attach the chosen collector to the target video
|
|
89
|
+
twentythree collector include <collector-id> --object-id <video-id> --json
|
|
90
|
+
|
|
91
|
+
# Step 3: Verify the collector is now attached
|
|
92
|
+
twentythree collector list --object-id <video-id> --json
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Review collector analytics and then remove from a video
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# Check which collectors are on a video, including analytics
|
|
99
|
+
twentythree collector list --object-id <video-id> --include-analytics --json
|
|
100
|
+
|
|
101
|
+
# Remove a collector that is no longer needed on this video
|
|
102
|
+
twentythree collector exclude <collector-id> --object-id <video-id> --json
|
|
103
|
+
```
|