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,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: site
|
|
3
|
+
description: Query workspace-level information (domain, quotas) and run cross-content search.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Site Commands
|
|
7
|
+
|
|
8
|
+
> Retrieve workspace-level configuration and run cross-content search across videos, webinars,
|
|
9
|
+
> and categories in a single call. Always use `--json` in agentic contexts for structured output.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
Auth scope required: read (both commands).
|
|
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 site <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
18
|
+
|
|
19
|
+
## Commands
|
|
20
|
+
|
|
21
|
+
### site get
|
|
22
|
+
|
|
23
|
+
**Auth scope:** read **Side effects:** none **Output:** key-value
|
|
24
|
+
|
|
25
|
+
Returns workspace-level configuration including domain, settings, and optional quota and
|
|
26
|
+
presentation data. Use `--include-quota` to check storage and bandwidth usage.
|
|
27
|
+
|
|
28
|
+
Flags:
|
|
29
|
+
|
|
30
|
+
| Flag | Required | Description |
|
|
31
|
+
|------|----------|-------------|
|
|
32
|
+
| `--include-presentation` | no | Include presentation settings in the response |
|
|
33
|
+
| `--include-quota` | no | Include quota (storage and bandwidth) information in the response |
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Get basic workspace info
|
|
37
|
+
twentythree site get --json
|
|
38
|
+
|
|
39
|
+
# Get workspace info including quotas and presentation settings
|
|
40
|
+
twentythree site get --include-presentation --include-quota --json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### site search
|
|
44
|
+
|
|
45
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Type, Title, ID)
|
|
46
|
+
|
|
47
|
+
Searches across all content types (videos, webinars, categories) in the workspace in a single
|
|
48
|
+
call. Returns a mixed result set with a `Type` column identifying each result's content type.
|
|
49
|
+
|
|
50
|
+
Flags:
|
|
51
|
+
|
|
52
|
+
| Flag | Required | Description |
|
|
53
|
+
|------|----------|-------------|
|
|
54
|
+
| `--search` | no | Search query string |
|
|
55
|
+
| `--search-in` | no | Scope the search field: `title`, `description`, or `tags` (repeatable) |
|
|
56
|
+
| `--selection` | no | Filter by content selection |
|
|
57
|
+
| `--size` | no | Number of results to return |
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Search all content types for a keyword
|
|
61
|
+
twentythree site search --search "product demo" --json
|
|
62
|
+
|
|
63
|
+
# Scoped search: title and tags only, with result limit
|
|
64
|
+
twentythree site search --search "q2" --search-in title --search-in tags --size 20 --json
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Common Patterns
|
|
68
|
+
|
|
69
|
+
### Workspace health check
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Check workspace status and quota usage in one call
|
|
73
|
+
twentythree site get --include-quota --json
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Cross-content discovery in one call
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Find all content (videos + webinars + categories) matching a term
|
|
80
|
+
twentythree site search --search "onboarding" --json
|
|
81
|
+
|
|
82
|
+
# Refine to title matches only, returning up to 50 results
|
|
83
|
+
twentythree site search --search "onboarding" --search-in title --size 50 --json
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Review workspace configuration before bulk operations
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# Inspect full workspace settings including presentation config
|
|
90
|
+
twentythree site get --include-presentation --include-quota --json
|
|
91
|
+
|
|
92
|
+
# Search for content to confirm what is available
|
|
93
|
+
twentythree site search --search "webinar" --json
|
|
94
|
+
```
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spot
|
|
3
|
+
description: Create and manage embeddable video widgets (spots) that reference one or more videos.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Spot Commands
|
|
7
|
+
|
|
8
|
+
> Create and manage spots — embeddable video widgets that display curated sets of videos.
|
|
9
|
+
> Always use `--json` in agentic contexts for structured output.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
Auth scope required: read (list, check), write (create, update, delete, set-videos, reset-version).
|
|
14
|
+
Run `twentythree auth credentials` if not already configured.
|
|
15
|
+
Verify: `twentythree auth status --json`
|
|
16
|
+
|
|
17
|
+
> Use `spot check <id>` rather than `spot get` — there is no `spot get` command.
|
|
18
|
+
> For any flag not listed here, run `twentythree spot <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
19
|
+
|
|
20
|
+
## Commands
|
|
21
|
+
|
|
22
|
+
### spot list
|
|
23
|
+
|
|
24
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Name, Type, Active)
|
|
25
|
+
|
|
26
|
+
Flags:
|
|
27
|
+
|
|
28
|
+
| Flag | Required | Description |
|
|
29
|
+
|------|----------|-------------|
|
|
30
|
+
| `--page` | no | Page number |
|
|
31
|
+
| `--size` | no | Number of results per page |
|
|
32
|
+
| `--search` | no | Search term |
|
|
33
|
+
| `--spot-type` | no | Filter by spot type |
|
|
34
|
+
| `--active` | no | Filter by active status (boolean) |
|
|
35
|
+
| `--orderby` | no | Field to order results by |
|
|
36
|
+
| `--order` | no | Sort order (asc or desc) |
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# List all spots in the workspace
|
|
40
|
+
twentythree spot list --json
|
|
41
|
+
|
|
42
|
+
# List only active spots
|
|
43
|
+
twentythree spot list --active --json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### spot create
|
|
47
|
+
|
|
48
|
+
**Auth scope:** write **Side effects:** creates **Output:** key-value
|
|
49
|
+
|
|
50
|
+
Flags:
|
|
51
|
+
|
|
52
|
+
| Flag | Required | Description |
|
|
53
|
+
|------|----------|-------------|
|
|
54
|
+
| `--spot-name` | yes | Name for the new spot |
|
|
55
|
+
| `--spot-type` | no | Type of spot |
|
|
56
|
+
| `--spot-design` | no | Design for the spot |
|
|
57
|
+
| `--spot-layout` | no | Layout for the spot |
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Create a basic spot
|
|
61
|
+
twentythree spot create --spot-name "Homepage Widget" --json
|
|
62
|
+
|
|
63
|
+
# Create a spot with type and layout specified
|
|
64
|
+
twentythree spot create --spot-name "Featured Videos" --spot-type video --spot-layout grid --json
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### spot check
|
|
68
|
+
|
|
69
|
+
**Auth scope:** read **Side effects:** none **Output:** key-value
|
|
70
|
+
|
|
71
|
+
Takes `<spot-id>` as positional argument. Use this to retrieve spot details — there is no `spot get` command.
|
|
72
|
+
|
|
73
|
+
No additional flags.
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Get details of a specific spot
|
|
77
|
+
twentythree spot check <spot-id> --json
|
|
78
|
+
|
|
79
|
+
# Inspect a spot before updating it
|
|
80
|
+
twentythree spot check <spot-id> --json
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### spot update
|
|
84
|
+
|
|
85
|
+
**Auth scope:** write **Side effects:** updates **Output:** key-value
|
|
86
|
+
|
|
87
|
+
Takes `<spot-id>` as positional argument.
|
|
88
|
+
|
|
89
|
+
Flags:
|
|
90
|
+
|
|
91
|
+
| Flag | Required | Description |
|
|
92
|
+
|------|----------|-------------|
|
|
93
|
+
| `--spot-name` | no | New name for the spot |
|
|
94
|
+
| `--active` | no | Set active status (boolean) |
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Rename a spot
|
|
98
|
+
twentythree spot update <spot-id> --spot-name "Updated Widget Name" --json
|
|
99
|
+
|
|
100
|
+
# Deactivate a spot
|
|
101
|
+
twentythree spot update <spot-id> --no-active --json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### spot delete
|
|
105
|
+
|
|
106
|
+
**Auth scope:** write **Side effects:** destructive **Output:** key-value
|
|
107
|
+
|
|
108
|
+
Takes `<spot-id>` as positional argument. No additional flags.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# Delete a spot
|
|
112
|
+
twentythree spot delete <spot-id> --json
|
|
113
|
+
|
|
114
|
+
# Delete a spot that is no longer in use
|
|
115
|
+
twentythree spot delete <spot-id> --json
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### spot set-videos
|
|
119
|
+
|
|
120
|
+
**Auth scope:** write **Side effects:** updates **Output:** key-value
|
|
121
|
+
|
|
122
|
+
Takes `<spot-id>` as positional argument. Assigns the video playlist shown in the spot.
|
|
123
|
+
|
|
124
|
+
Flags:
|
|
125
|
+
|
|
126
|
+
| Flag | Required | Description |
|
|
127
|
+
|------|----------|-------------|
|
|
128
|
+
| `--videos` | yes | Comma-separated video IDs to assign to the spot |
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Assign a single video to a spot
|
|
132
|
+
twentythree spot set-videos <spot-id> --videos "<video-id>" --json
|
|
133
|
+
|
|
134
|
+
# Assign multiple videos to a spot
|
|
135
|
+
twentythree spot set-videos <spot-id> --videos "<video-id-1>,<video-id-2>,<video-id-3>" --json
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### spot reset-version
|
|
139
|
+
|
|
140
|
+
**Auth scope:** write **Side effects:** updates **Output:** key-value
|
|
141
|
+
|
|
142
|
+
Takes `<spot-id>` as positional argument. Resets the spot to its initial version state. No additional flags.
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# Reset a spot's version
|
|
146
|
+
twentythree spot reset-version <spot-id> --json
|
|
147
|
+
|
|
148
|
+
# Use after a spot update goes wrong to restore default state
|
|
149
|
+
twentythree spot reset-version <spot-id> --json
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Common Patterns
|
|
153
|
+
|
|
154
|
+
### Create a spot and attach videos
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Step 1: Create the spot
|
|
158
|
+
twentythree spot create --spot-name "Homepage Videos" --json
|
|
159
|
+
|
|
160
|
+
# Step 2: Assign videos to the spot using the ID from step 1
|
|
161
|
+
twentythree spot set-videos <spot-id> --videos "<video-id-1>,<video-id-2>,<video-id-3>" --json
|
|
162
|
+
|
|
163
|
+
# Step 3: Verify the spot configuration
|
|
164
|
+
twentythree spot check <spot-id> --json
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Find and inspect active spots
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# List only active spots
|
|
171
|
+
twentythree spot list --active --json
|
|
172
|
+
|
|
173
|
+
# Get full details of a specific spot
|
|
174
|
+
twentythree spot check <spot-id> --json
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Update a spot's video playlist
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
# Get current spot details to see existing video assignment
|
|
181
|
+
twentythree spot check <spot-id> --json
|
|
182
|
+
|
|
183
|
+
# Replace the video playlist with a new set
|
|
184
|
+
twentythree spot set-videos <spot-id> --videos "<new-video-id-1>,<new-video-id-2>" --json
|
|
185
|
+
|
|
186
|
+
# Activate the spot if it was inactive
|
|
187
|
+
twentythree spot update <spot-id> --active --json
|
|
188
|
+
```
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tag
|
|
3
|
+
description: List and discover content tags. Tags are created implicitly via video update --tags.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Tag Commands
|
|
7
|
+
|
|
8
|
+
> Discover and explore content tags on TwentyThree. The tag topic is read-only — tags are created
|
|
9
|
+
> implicitly when applied to videos. Always use `--json` in agentic contexts for structured output.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
Auth scope required: anonymous (both commands — no auth token required).
|
|
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 tag <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
18
|
+
|
|
19
|
+
> **Note:** To add or remove tags from content, use `video update --tags` or `webinar update --tags`. The `tag` topic itself is read-only.
|
|
20
|
+
|
|
21
|
+
## Commands
|
|
22
|
+
|
|
23
|
+
### tag list
|
|
24
|
+
|
|
25
|
+
**Auth scope:** anonymous **Side effects:** none **Output:** table (Tag, Count)
|
|
26
|
+
|
|
27
|
+
Flags:
|
|
28
|
+
|
|
29
|
+
| Flag | Required | Description |
|
|
30
|
+
|------|----------|-------------|
|
|
31
|
+
| `--search` | no | Filter tags by a search string |
|
|
32
|
+
| `--exclude-machine-tags` | no | Exclude machine-generated tags from the results |
|
|
33
|
+
| `--only-machine-tags` | no | Return only machine tags (overrides --exclude-machine-tags) |
|
|
34
|
+
| `--only-published` | no | Return only tags from published videos |
|
|
35
|
+
| `--orderby` | no | Order tags by this value |
|
|
36
|
+
| `--order` | no | Sort order for the results |
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# List all tags in the workspace
|
|
40
|
+
twentythree tag list --json
|
|
41
|
+
|
|
42
|
+
# Find tags matching a search term, ordered by usage count
|
|
43
|
+
twentythree tag list --search "product" --orderby count --order desc --json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### tag related
|
|
47
|
+
|
|
48
|
+
**Auth scope:** anonymous **Side effects:** none **Output:** table (Tag)
|
|
49
|
+
|
|
50
|
+
Takes `<tag>` as a positional argument. No additional flags.
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Discover tags related to a specific tag
|
|
54
|
+
twentythree tag related "product" --json
|
|
55
|
+
|
|
56
|
+
# Find tags related to a topic for content discovery
|
|
57
|
+
twentythree tag related "webinar" --json
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Common Patterns
|
|
61
|
+
|
|
62
|
+
### Content discovery by tag
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Step 1: Find tags that match a topic
|
|
66
|
+
twentythree tag list --search "onboarding" --only-published --json
|
|
67
|
+
|
|
68
|
+
# Step 2: Explore related tags to broaden content discovery
|
|
69
|
+
twentythree tag related "onboarding" --json
|
|
70
|
+
|
|
71
|
+
# Step 3: Use found tags to filter video search via video list
|
|
72
|
+
twentythree video list --json | jq '.[] | select(.tags | contains("onboarding"))'
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Audit all tags in the workspace
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# List all tags sorted by usage count (most used first)
|
|
79
|
+
twentythree tag list --orderby count --order desc --json
|
|
80
|
+
|
|
81
|
+
# List only human-authored tags (exclude machine-generated)
|
|
82
|
+
twentythree tag list --exclude-machine-tags --orderby count --order desc --json
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Apply tags to a video (write operation — not a tag command)
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Tags are managed via video update, not the tag topic
|
|
89
|
+
twentythree video update <video-id> --tags "product demo tutorial" --json
|
|
90
|
+
|
|
91
|
+
# Then verify the tags were applied
|
|
92
|
+
twentythree tag list --search "demo" --only-published --json
|
|
93
|
+
```
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: thumbnail
|
|
3
|
+
description: Manage thumbnail templates (Liquid-based) used to render video thumbnails with metadata variables.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Thumbnail Commands
|
|
7
|
+
|
|
8
|
+
> Create and manage Liquid-based thumbnail templates for rendering video and webinar thumbnails.
|
|
9
|
+
> Always use `--json` in agentic contexts for structured output.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
Auth scope required: read (list, data, file list), write (add, update, delete, duplicate, file upload, file delete).
|
|
14
|
+
Run `twentythree auth credentials` if not already configured.
|
|
15
|
+
Verify: `twentythree auth status --json`
|
|
16
|
+
|
|
17
|
+
Thumbnail templates use Liquid templating with video metadata variables. Use `thumbnail data` to preview the render variables before authoring a template.
|
|
18
|
+
|
|
19
|
+
> For any flag not listed here, run `twentythree thumbnail <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
20
|
+
|
|
21
|
+
## Commands
|
|
22
|
+
|
|
23
|
+
### thumbnail list
|
|
24
|
+
|
|
25
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Name, Type, Width, Height)
|
|
26
|
+
|
|
27
|
+
Flags:
|
|
28
|
+
|
|
29
|
+
| Flag | Required | Description |
|
|
30
|
+
|------|----------|-------------|
|
|
31
|
+
| `--search` | no | Filter by template name |
|
|
32
|
+
| `--object-type` | no | Filter by object type (photo, live, liveseries) |
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# List all thumbnail templates
|
|
36
|
+
twentythree thumbnail list --json
|
|
37
|
+
|
|
38
|
+
# List templates scoped to video objects
|
|
39
|
+
twentythree thumbnail list --object-type photo --json
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### thumbnail add
|
|
43
|
+
|
|
44
|
+
**Auth scope:** write **Side effects:** creates **Output:** key-value (template ID)
|
|
45
|
+
|
|
46
|
+
Flags:
|
|
47
|
+
|
|
48
|
+
| Flag | Required | Description |
|
|
49
|
+
|------|----------|-------------|
|
|
50
|
+
| `--name` | yes | Name for the new thumbnail template |
|
|
51
|
+
| `--liquid-template` | yes | Liquid template HTML content |
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Create a minimal thumbnail template
|
|
55
|
+
twentythree thumbnail add --name "Simple Title" --liquid-template "<div>{{ photo.title }}</div>" --json
|
|
56
|
+
|
|
57
|
+
# Create a branded template with metadata
|
|
58
|
+
twentythree thumbnail add --name "Brand Template" --liquid-template "<html><body><h1>{{ photo.title }}</h1><p>{{ photo.one }}</p></body></html>" --json
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### thumbnail update
|
|
62
|
+
|
|
63
|
+
**Auth scope:** write **Side effects:** updates **Output:** key-value
|
|
64
|
+
|
|
65
|
+
Takes `<template-id>` as positional argument.
|
|
66
|
+
|
|
67
|
+
Flags:
|
|
68
|
+
|
|
69
|
+
| Flag | Required | Description |
|
|
70
|
+
|------|----------|-------------|
|
|
71
|
+
| `--name` | no | New name for the template |
|
|
72
|
+
| `--liquid-template` | no | New Liquid template HTML content |
|
|
73
|
+
| `--object-type` | no | Object type (photo, live, liveseries) |
|
|
74
|
+
| `--width` | no | Template width in pixels |
|
|
75
|
+
| `--height` | no | Template height in pixels |
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Rename a thumbnail template
|
|
79
|
+
twentythree thumbnail update <template-id> --name "Brand Template v2" --json
|
|
80
|
+
|
|
81
|
+
# Update template content and dimensions
|
|
82
|
+
twentythree thumbnail update <template-id> --liquid-template "<div>{{ photo.title }}</div>" --width 1280 --height 720 --json
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### thumbnail delete
|
|
86
|
+
|
|
87
|
+
**Auth scope:** write **Side effects:** destructive **Output:** key-value
|
|
88
|
+
|
|
89
|
+
Takes `<template-id>` as positional argument. No additional flags.
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Delete a thumbnail template
|
|
93
|
+
twentythree thumbnail delete <template-id> --json
|
|
94
|
+
|
|
95
|
+
# Delete an unused template
|
|
96
|
+
twentythree thumbnail delete <template-id> --json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### thumbnail duplicate
|
|
100
|
+
|
|
101
|
+
**Auth scope:** write **Side effects:** creates **Output:** key-value (new template ID)
|
|
102
|
+
|
|
103
|
+
Takes `<template-id>` as positional argument.
|
|
104
|
+
|
|
105
|
+
Flags:
|
|
106
|
+
|
|
107
|
+
| Flag | Required | Description |
|
|
108
|
+
|------|----------|-------------|
|
|
109
|
+
| `--name` | no | Name for the duplicate |
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Duplicate a template (uses auto-generated name)
|
|
113
|
+
twentythree thumbnail duplicate <template-id> --json
|
|
114
|
+
|
|
115
|
+
# Duplicate a template with a new name
|
|
116
|
+
twentythree thumbnail duplicate <template-id> --name "Brand v2" --json
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### thumbnail data
|
|
120
|
+
|
|
121
|
+
**Auth scope:** read **Side effects:** none **Output:** key-value (Liquid render variables)
|
|
122
|
+
|
|
123
|
+
Takes `<template-id>` as positional argument. Returns the variables available for use in the template's Liquid markup when rendering for a given object.
|
|
124
|
+
|
|
125
|
+
Flags:
|
|
126
|
+
|
|
127
|
+
| Flag | Required | Description |
|
|
128
|
+
|------|----------|-------------|
|
|
129
|
+
| `--object-id` | yes | Video or webinar ID to get render data for |
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# Preview Liquid render data for a video
|
|
133
|
+
twentythree thumbnail data <template-id> --object-id <video-id> --json
|
|
134
|
+
|
|
135
|
+
# Inspect render variables before authoring a template
|
|
136
|
+
twentythree thumbnail data <template-id> --object-id <video-id> --json
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Subtopic: thumbnail file
|
|
140
|
+
|
|
141
|
+
Manage image files attached to thumbnail templates. These files can be referenced inside Liquid templates as static assets.
|
|
142
|
+
|
|
143
|
+
### thumbnail file list
|
|
144
|
+
|
|
145
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Filename, Size, URL)
|
|
146
|
+
|
|
147
|
+
Takes `<template-id>` as positional argument. No additional flags.
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# List files attached to a thumbnail template
|
|
151
|
+
twentythree thumbnail file list <template-id> --json
|
|
152
|
+
|
|
153
|
+
# View all assets available to a template
|
|
154
|
+
twentythree thumbnail file list <template-id> --json
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### thumbnail file upload
|
|
158
|
+
|
|
159
|
+
**Auth scope:** write **Side effects:** creates **Output:** key-value
|
|
160
|
+
|
|
161
|
+
Takes `<file-path>` as positional argument.
|
|
162
|
+
|
|
163
|
+
Flags:
|
|
164
|
+
|
|
165
|
+
| Flag | Required | Description |
|
|
166
|
+
|------|----------|-------------|
|
|
167
|
+
| `--template-id` | yes | Thumbnail template ID to attach the file to |
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# Upload a logo image to a template
|
|
171
|
+
twentythree thumbnail file upload ./logo.png --template-id <template-id> --json
|
|
172
|
+
|
|
173
|
+
# Upload a banner image
|
|
174
|
+
twentythree thumbnail file upload ./banner.jpg --template-id <template-id> --json
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### thumbnail file delete
|
|
178
|
+
|
|
179
|
+
**Auth scope:** write **Side effects:** destructive **Output:** key-value
|
|
180
|
+
|
|
181
|
+
Flags:
|
|
182
|
+
|
|
183
|
+
| Flag | Required | Description |
|
|
184
|
+
|------|----------|-------------|
|
|
185
|
+
| `--template-id` | yes | Thumbnail template ID |
|
|
186
|
+
| `--filename` | yes | Filename to delete |
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# Delete a file from a thumbnail template
|
|
190
|
+
twentythree thumbnail file delete --template-id <template-id> --filename logo.png --json
|
|
191
|
+
|
|
192
|
+
# Remove an outdated banner image
|
|
193
|
+
twentythree thumbnail file delete --template-id <template-id> --filename old-banner.jpg --json
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Common Patterns
|
|
197
|
+
|
|
198
|
+
### Author a new thumbnail template
|
|
199
|
+
|
|
200
|
+
Use `thumbnail data` to discover available Liquid variables before writing the template:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# Step 1: Preview render variables for a specific video
|
|
204
|
+
twentythree thumbnail data <template-id> --object-id <video-id> --json
|
|
205
|
+
|
|
206
|
+
# Step 2: Create the template using discovered variables
|
|
207
|
+
twentythree thumbnail add --name "Brand Template" --liquid-template "<html><body><h1>{{ photo.title }}</h1></body></html>" --json
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Duplicate an existing template as a starting point
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
twentythree thumbnail duplicate <template-id> --name "Brand v2" --json
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### List templates scoped to object type
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
# List templates for videos only
|
|
220
|
+
twentythree thumbnail list --object-type photo --json
|
|
221
|
+
|
|
222
|
+
# List templates for webinars
|
|
223
|
+
twentythree thumbnail list --object-type live --json
|
|
224
|
+
```
|