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,225 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: comment
|
|
3
|
+
description: Moderate and manage comments, questions, and chat on videos, categories, and webinars.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Comment Commands
|
|
7
|
+
|
|
8
|
+
> List, moderate, and manage comments, questions, and chat messages on TwentyThree content.
|
|
9
|
+
> Always use `--json` in agentic contexts for structured output.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
Auth scope required: read (list), write (add, update, delete, promote, clone, set-order, reaction add).
|
|
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 comment <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
18
|
+
|
|
19
|
+
## Commands
|
|
20
|
+
|
|
21
|
+
### comment list
|
|
22
|
+
|
|
23
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Author, Content, Type, Date)
|
|
24
|
+
|
|
25
|
+
Flags:
|
|
26
|
+
|
|
27
|
+
| Flag | Required | Description |
|
|
28
|
+
|------|----------|-------------|
|
|
29
|
+
| `--object-id` | no | Filter by object ID |
|
|
30
|
+
| `--object-type` | no | Filter by object type (photo, album, live) |
|
|
31
|
+
| `--comment-type` | no | Filter by comment type (comment, question, chat) |
|
|
32
|
+
| `--search` | no | Search comments by content |
|
|
33
|
+
| `--order` | no | Sort order for results |
|
|
34
|
+
| `--include-reactions` | no | Include reactions on each comment |
|
|
35
|
+
| `--include-replies` | no | Include reply-to comments |
|
|
36
|
+
| `--promoted` | no | Filter to promoted comments only |
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# List all comments in the workspace
|
|
40
|
+
twentythree comment list --json
|
|
41
|
+
|
|
42
|
+
# List only questions on a specific webinar
|
|
43
|
+
twentythree comment list --object-id <webinar-id> --object-type live --comment-type question --json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### comment add
|
|
47
|
+
|
|
48
|
+
**Auth scope:** write **Side effects:** creates **Output:** none
|
|
49
|
+
|
|
50
|
+
Flags:
|
|
51
|
+
|
|
52
|
+
| Flag | Required | Description |
|
|
53
|
+
|------|----------|-------------|
|
|
54
|
+
| `--object-id` | yes | Object ID to comment on |
|
|
55
|
+
| `--object-type` | yes | Object type (photo, album, live) |
|
|
56
|
+
| `--content` | no | Comment text content |
|
|
57
|
+
| `--name` | no | Author name for the comment |
|
|
58
|
+
| `--email` | no | Author email for the comment |
|
|
59
|
+
| `--url` | no | URL associated with the comment |
|
|
60
|
+
| `--comment-type` | no | Comment type (comment, question, chat) |
|
|
61
|
+
| `--reply-to` | no | Comment ID to reply to |
|
|
62
|
+
| `--comment-time` | no | Timestamp for the comment |
|
|
63
|
+
| `--object-token` | no | Object token for the target object |
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Add a comment to a video
|
|
67
|
+
twentythree comment add --object-id <video-id> --object-type photo --content "Great video!" --json
|
|
68
|
+
|
|
69
|
+
# Add a question to a webinar chat
|
|
70
|
+
twentythree comment add --object-id <webinar-id> --object-type live --content "What is next?" --comment-type question --json
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### comment update
|
|
74
|
+
|
|
75
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
76
|
+
|
|
77
|
+
Flags:
|
|
78
|
+
|
|
79
|
+
| Flag | Required | Description |
|
|
80
|
+
|------|----------|-------------|
|
|
81
|
+
| `--object-id` | yes | Object ID the comment belongs to |
|
|
82
|
+
| `--status` | no | Comment status (answered, dismissed, or empty to clear) |
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Mark a question as answered
|
|
86
|
+
twentythree comment update <comment-id> --object-id <webinar-id> --status answered --json
|
|
87
|
+
|
|
88
|
+
# Dismiss an inappropriate comment
|
|
89
|
+
twentythree comment update <comment-id> --object-id <video-id> --status dismissed --json
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### comment delete
|
|
93
|
+
|
|
94
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
95
|
+
|
|
96
|
+
Takes `<comment-id>` as positional argument. No additional flags.
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Delete a comment
|
|
100
|
+
twentythree comment delete <comment-id> --json
|
|
101
|
+
|
|
102
|
+
# Delete a question from a webinar
|
|
103
|
+
twentythree comment delete <comment-id> --json
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### comment promote
|
|
107
|
+
|
|
108
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
109
|
+
|
|
110
|
+
Takes `<comment-id>` as positional argument. Toggles promoted status if `--promoted` is omitted.
|
|
111
|
+
|
|
112
|
+
Flags:
|
|
113
|
+
|
|
114
|
+
| Flag | Required | Description |
|
|
115
|
+
|------|----------|-------------|
|
|
116
|
+
| `--promoted` | no | Set promoted status explicitly (omit to toggle) |
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Promote a comment (toggle on)
|
|
120
|
+
twentythree comment promote <comment-id> --json
|
|
121
|
+
|
|
122
|
+
# Explicitly set promoted status to true
|
|
123
|
+
twentythree comment promote <comment-id> --promoted --json
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### comment clone
|
|
127
|
+
|
|
128
|
+
**Auth scope:** write **Side effects:** creates **Output:** none
|
|
129
|
+
|
|
130
|
+
Takes `<comment-id>` as positional argument. Clones the comment, optionally changing its type.
|
|
131
|
+
|
|
132
|
+
Flags:
|
|
133
|
+
|
|
134
|
+
| Flag | Required | Description |
|
|
135
|
+
|------|----------|-------------|
|
|
136
|
+
| `--clone-type` | no | Type for the cloned comment (chat, question, comment) |
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Clone a comment as-is
|
|
140
|
+
twentythree comment clone <comment-id> --json
|
|
141
|
+
|
|
142
|
+
# Clone a comment and set it as a question type
|
|
143
|
+
twentythree comment clone <comment-id> --clone-type question --json
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### comment set-order
|
|
147
|
+
|
|
148
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
149
|
+
|
|
150
|
+
Flags:
|
|
151
|
+
|
|
152
|
+
| Flag | Required | Description |
|
|
153
|
+
|------|----------|-------------|
|
|
154
|
+
| `--object-id` | yes | Object ID whose comments are being reordered |
|
|
155
|
+
| `--order` | yes | Comma-separated list of comment IDs in desired display order |
|
|
156
|
+
| `--comment-type` | no | Comment type to reorder (default: question) |
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
# Reorder questions on a webinar
|
|
160
|
+
twentythree comment set-order --object-id <webinar-id> --order "<id1>,<id2>,<id3>" --json
|
|
161
|
+
|
|
162
|
+
# Reorder only chat-type comments
|
|
163
|
+
twentythree comment set-order --object-id <webinar-id> --order "<id1>,<id2>" --comment-type chat --json
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Subtopic: comment reaction
|
|
167
|
+
|
|
168
|
+
### comment reaction add
|
|
169
|
+
|
|
170
|
+
**Auth scope:** write **Side effects:** creates **Output:** none
|
|
171
|
+
|
|
172
|
+
Takes `<comment-id>` as positional argument.
|
|
173
|
+
|
|
174
|
+
Flags:
|
|
175
|
+
|
|
176
|
+
| Flag | Required | Description |
|
|
177
|
+
|------|----------|-------------|
|
|
178
|
+
| `--reaction` | yes | Reaction emoji to add |
|
|
179
|
+
| `--object-id` | yes | Object ID the comment belongs to |
|
|
180
|
+
| `--object-token` | yes | Object token for the target object |
|
|
181
|
+
| `--object-type` | no | Object type (live, photo, album) |
|
|
182
|
+
| `--uuid` | no | UUID identifier |
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# Add a thumbs-up reaction to a comment
|
|
186
|
+
twentythree comment reaction add <comment-id> --object-id <webinar-id> --object-token <token> --reaction "👍" --json
|
|
187
|
+
|
|
188
|
+
# Add a heart reaction to a video comment
|
|
189
|
+
twentythree comment reaction add <comment-id> --object-id <video-id> --object-token <token> --reaction "❤️" --object-type photo --json
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Common Patterns
|
|
193
|
+
|
|
194
|
+
### Moderate webinar Q&A session
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# List all questions from a webinar
|
|
198
|
+
twentythree comment list --object-id <webinar-id> --object-type live --comment-type question --json
|
|
199
|
+
|
|
200
|
+
# Promote an important question for visibility
|
|
201
|
+
twentythree comment promote <question-id> --json
|
|
202
|
+
|
|
203
|
+
# Mark a question as answered after responding
|
|
204
|
+
twentythree comment update <question-id> --object-id <webinar-id> --status answered --json
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Reorder promoted questions for display
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# Step 1: List promoted questions to get their IDs
|
|
211
|
+
twentythree comment list --object-id <webinar-id> --object-type live --comment-type question --promoted --json
|
|
212
|
+
|
|
213
|
+
# Step 2: Set the display order using captured IDs
|
|
214
|
+
twentythree comment set-order --object-id <webinar-id> --order "<id1>,<id2>,<id3>" --comment-type question --json
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## Terminology Notes
|
|
218
|
+
|
|
219
|
+
The `--object-type` flag uses the legacy API object names:
|
|
220
|
+
- pass `photo` for a video
|
|
221
|
+
- pass `album` for a category
|
|
222
|
+
- pass `live` for a webinar
|
|
223
|
+
|
|
224
|
+
This is the only place in the `comment` topic where terminology diverges from CLI naming.
|
|
225
|
+
The `api_endpoint` field in `--agent` output also uses these legacy names (e.g. `GET /comment/list`).
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openupload
|
|
3
|
+
description: Third-party upload tokens — allow anonymous users to upload files using a pre-issued token.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Open Upload Commands
|
|
7
|
+
|
|
8
|
+
> Issue tokens that let third parties upload files without full API credentials.
|
|
9
|
+
> The chunked upload engine handles large files automatically — never construct multipart requests directly.
|
|
10
|
+
> Always use `--json` in agentic contexts for structured output.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
Auth scope required: read (list), write (upload-file, update-file).
|
|
15
|
+
`upload-file` and `update-file` additionally require `--token-upload-id` and `--token` values
|
|
16
|
+
provided by the workspace admin who issued the token.
|
|
17
|
+
Run `twentythree auth credentials` if not already configured.
|
|
18
|
+
Verify: `twentythree auth status --json`
|
|
19
|
+
|
|
20
|
+
> For any flag not listed here, run `twentythree openupload <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
21
|
+
|
|
22
|
+
## Commands
|
|
23
|
+
|
|
24
|
+
### openupload list
|
|
25
|
+
|
|
26
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Name, Token, Public)
|
|
27
|
+
|
|
28
|
+
Flags:
|
|
29
|
+
|
|
30
|
+
| Flag | Required | Description |
|
|
31
|
+
|------|----------|-------------|
|
|
32
|
+
| `--token-upload-id` | no | Filter by open upload token upload ID |
|
|
33
|
+
| `--token` | no | Filter by open upload token value |
|
|
34
|
+
| `--app` | no | Filter by app open uploads (boolean) |
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# List all open upload tokens in the workspace
|
|
38
|
+
twentythree openupload list --json
|
|
39
|
+
|
|
40
|
+
# Filter to a specific token upload
|
|
41
|
+
twentythree openupload list --token-upload-id 123 --json
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### openupload upload-file
|
|
45
|
+
|
|
46
|
+
**Auth scope:** write **Side effects:** creates **Output:** key-value
|
|
47
|
+
|
|
48
|
+
> **Memory rule:** Always use chunked upload for file uploads. This command handles chunking
|
|
49
|
+
> automatically — never construct multipart requests directly.
|
|
50
|
+
|
|
51
|
+
The returned `upload-key` identifies the uploaded file and is required for subsequent metadata
|
|
52
|
+
updates via `openupload update-file`.
|
|
53
|
+
|
|
54
|
+
Flags:
|
|
55
|
+
|
|
56
|
+
| Flag | Required | Description |
|
|
57
|
+
|------|----------|-------------|
|
|
58
|
+
| `--file-path` | yes | Path to the file to upload |
|
|
59
|
+
| `--token-upload-id` | yes | Open upload token upload ID (provided by workspace admin) |
|
|
60
|
+
| `--token` | yes | Open upload token (provided by workspace admin) |
|
|
61
|
+
| `--chunk-size` | no | Chunk size in bytes (default: 5242880) |
|
|
62
|
+
| `--concurrency` | no | Parallel chunk uploads (default: 5) |
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Upload a video file using a token
|
|
66
|
+
twentythree openupload upload-file --file-path ./video.mp4 \
|
|
67
|
+
--token-upload-id <id> --token <tok> --json
|
|
68
|
+
|
|
69
|
+
# Upload with custom chunk size for a slow connection
|
|
70
|
+
twentythree openupload upload-file --file-path ./recording.mp4 \
|
|
71
|
+
--token-upload-id <id> --token <tok> --chunk-size 2097152 --json
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### openupload update-file
|
|
75
|
+
|
|
76
|
+
**Auth scope:** write **Side effects:** updates **Output:** key-value
|
|
77
|
+
|
|
78
|
+
Updates metadata for an already-uploaded file. Requires the `--upload-key` returned by `upload-file`.
|
|
79
|
+
|
|
80
|
+
Flags:
|
|
81
|
+
|
|
82
|
+
| Flag | Required | Description |
|
|
83
|
+
|------|----------|-------------|
|
|
84
|
+
| `--token-upload-id` | yes | Open upload token upload ID |
|
|
85
|
+
| `--token` | yes | Open upload token |
|
|
86
|
+
| `--upload-key` | yes | Upload key identifying the uploaded file |
|
|
87
|
+
| `--title` | no | New title for the uploaded file |
|
|
88
|
+
| `--description` | no | New description for the uploaded file |
|
|
89
|
+
| `--tags` | no | Tags for the uploaded file (space-separated) |
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Set title and description after upload
|
|
93
|
+
twentythree openupload update-file \
|
|
94
|
+
--token-upload-id <id> --token <tok> --upload-key <key> \
|
|
95
|
+
--title "Product Demo" --description "Q2 launch demo" --json
|
|
96
|
+
|
|
97
|
+
# Set tags on the uploaded file
|
|
98
|
+
twentythree openupload update-file \
|
|
99
|
+
--token-upload-id <id> --token <tok> --upload-key <key> \
|
|
100
|
+
--tags "demo product q2" --json
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Common Patterns
|
|
104
|
+
|
|
105
|
+
### Full third-party upload workflow
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# Step 1: Workspace admin shares token-upload-id and token out-of-band with the third party.
|
|
109
|
+
# The third party runs:
|
|
110
|
+
|
|
111
|
+
# Step 2: Upload the file (chunking is automatic)
|
|
112
|
+
twentythree openupload upload-file \
|
|
113
|
+
--file-path ./presentation.mp4 \
|
|
114
|
+
--token-upload-id <token-upload-id> \
|
|
115
|
+
--token <token> \
|
|
116
|
+
--json
|
|
117
|
+
# => Returns { upload_key: "<key>", ... }
|
|
118
|
+
# Capture: upload_key for the next step
|
|
119
|
+
|
|
120
|
+
# Step 3: Set metadata on the uploaded file
|
|
121
|
+
twentythree openupload update-file \
|
|
122
|
+
--token-upload-id <token-upload-id> \
|
|
123
|
+
--token <token> \
|
|
124
|
+
--upload-key <key> \
|
|
125
|
+
--title "Partner Submission" \
|
|
126
|
+
--tags "partner external" \
|
|
127
|
+
--json
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Verify uploaded files as workspace admin
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# List all open uploads to review received files
|
|
134
|
+
twentythree openupload list --json
|
|
135
|
+
|
|
136
|
+
# Filter to a specific token upload ID
|
|
137
|
+
twentythree openupload list --token-upload-id <token-upload-id> --json
|
|
138
|
+
```
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: player
|
|
3
|
+
description: List and configure TwentyThree embed players, generate embed HTML, and discover available styles.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Player Commands
|
|
7
|
+
|
|
8
|
+
> List and update embed players, generate embed code for videos/webinars/categories, and
|
|
9
|
+
> discover available player styles and embed versions.
|
|
10
|
+
> Always use `--json` in agentic contexts for structured output.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
Auth scope required: anonymous (embed), read (list, embed-versions, styles), write (update, delete).
|
|
15
|
+
Run `twentythree auth credentials` if not already configured.
|
|
16
|
+
Verify: `twentythree auth status --json`
|
|
17
|
+
|
|
18
|
+
> For any flag not listed here, run `twentythree player <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
19
|
+
|
|
20
|
+
## Commands
|
|
21
|
+
|
|
22
|
+
### player list
|
|
23
|
+
|
|
24
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Name, Default)
|
|
25
|
+
|
|
26
|
+
Flags:
|
|
27
|
+
|
|
28
|
+
| Flag | Required | Description |
|
|
29
|
+
|------|----------|-------------|
|
|
30
|
+
| `--source` | no | Analytics source tag to filter by |
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# List all players in the workspace
|
|
34
|
+
twentythree player list --json
|
|
35
|
+
|
|
36
|
+
# List players tagged with a specific analytics source
|
|
37
|
+
twentythree player list --source embed --json
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### player update
|
|
41
|
+
|
|
42
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
43
|
+
|
|
44
|
+
Takes `<player-id>` as positional argument.
|
|
45
|
+
|
|
46
|
+
Flags:
|
|
47
|
+
|
|
48
|
+
| Flag | Required | Description |
|
|
49
|
+
|------|----------|-------------|
|
|
50
|
+
| `--name` | no | New name for the player |
|
|
51
|
+
| `--description` | no | New description for the player |
|
|
52
|
+
| `--data` | no | JSON-encoded player properties to merge into the request body |
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Rename a player
|
|
56
|
+
twentythree player update 42 --name "Brand Player v2" --json
|
|
57
|
+
|
|
58
|
+
# Update a player with custom data properties
|
|
59
|
+
twentythree player update 42 --name "Campaign Player" --description "Q2 campaign" --json
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### player delete
|
|
63
|
+
|
|
64
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
65
|
+
|
|
66
|
+
Takes `<player-id>` as positional argument. No flags.
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Delete a player by ID
|
|
70
|
+
twentythree player delete 42 --json
|
|
71
|
+
|
|
72
|
+
# List players first to confirm the ID before deletion
|
|
73
|
+
twentythree player list --json
|
|
74
|
+
twentythree player delete 42 --json
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### player embed
|
|
78
|
+
|
|
79
|
+
**Auth scope:** anonymous **Side effects:** none **Output:** key-value (HTML embed code)
|
|
80
|
+
|
|
81
|
+
Generates embed HTML for a video, webinar, or category. Because this command returns HTML,
|
|
82
|
+
redirecting to a file is more practical than `--json` for most uses.
|
|
83
|
+
|
|
84
|
+
**Exception:** `player embed` outputs HTML. Use redirect (`> embed.html`) to save output to a file.
|
|
85
|
+
Use `--json` only when capturing the raw embed code string in a structured response.
|
|
86
|
+
|
|
87
|
+
Flags:
|
|
88
|
+
|
|
89
|
+
| Flag | Required | Description |
|
|
90
|
+
|------|----------|-------------|
|
|
91
|
+
| `--video-id` | no | Video ID to embed (maps to photo_id in API) |
|
|
92
|
+
| `--webinar-id` | no | Webinar ID to embed (maps to live_id in API) |
|
|
93
|
+
| `--category-id` | no | Category ID to embed (maps to album_id in API) |
|
|
94
|
+
| `--player-id` | no | Player ID to use (default: workspace default player) |
|
|
95
|
+
| `--url` | no | Workspace URL to resolve to an embed code |
|
|
96
|
+
| `--width` | no | Desired embed width in pixels |
|
|
97
|
+
| `--height` | no | Desired embed height in pixels |
|
|
98
|
+
| `--responsive` | no | Return a responsive embed code |
|
|
99
|
+
| `--autoplay` | no | Enable auto-play in the embed code |
|
|
100
|
+
| `--iframe` | no | Return an iframe-based embed code |
|
|
101
|
+
| `--start` | no | Start position in seconds |
|
|
102
|
+
| `--include-unpublished` | no | Include unpublished content in player parameters |
|
|
103
|
+
| `--token` | no | Video token for private or token-protected videos |
|
|
104
|
+
| `--source` | no | Analytics source tag |
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Generate embed HTML and save to file (most common usage)
|
|
108
|
+
twentythree player embed --video-id 123 --responsive > embed.html
|
|
109
|
+
|
|
110
|
+
# Generate embed code as structured JSON for programmatic use
|
|
111
|
+
twentythree player embed --video-id 123 --responsive --autoplay --json
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### player embed-versions
|
|
115
|
+
|
|
116
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Type, Key, Label)
|
|
117
|
+
|
|
118
|
+
Lists available embed versions for a specific object. Requires both `--object-type` and `--object-id`.
|
|
119
|
+
|
|
120
|
+
Flags:
|
|
121
|
+
|
|
122
|
+
| Flag | Required | Description |
|
|
123
|
+
|------|----------|-------------|
|
|
124
|
+
| `--object-type` | yes | Object type: `photo`, `live`, `album`, or `site` |
|
|
125
|
+
| `--object-id` | yes | Object ID |
|
|
126
|
+
| `--source` | no | Embed source parameter (e.g. `embed`, `share`) |
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
# List embed versions for a video (use API legacy name 'photo')
|
|
130
|
+
twentythree player embed-versions --object-type photo --object-id 123 --json
|
|
131
|
+
|
|
132
|
+
# List embed versions for a webinar (use API legacy name 'live')
|
|
133
|
+
twentythree player embed-versions --object-type live --object-id 456 --json
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### player styles
|
|
137
|
+
|
|
138
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Style, Name, Icon)
|
|
139
|
+
|
|
140
|
+
Lists available player visual styles. No required flags.
|
|
141
|
+
|
|
142
|
+
Flags:
|
|
143
|
+
|
|
144
|
+
| Flag | Required | Description |
|
|
145
|
+
|------|----------|-------------|
|
|
146
|
+
| `--fields` | no | Comma-separated list of fields to return |
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# Discover all available player styles
|
|
150
|
+
twentythree player styles --json
|
|
151
|
+
|
|
152
|
+
# Request specific fields only
|
|
153
|
+
twentythree player styles --fields style,name --json
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Common Patterns
|
|
157
|
+
|
|
158
|
+
### Generate responsive embed code for a video
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Discover players to pick one, or use the workspace default
|
|
162
|
+
twentythree player list --json
|
|
163
|
+
|
|
164
|
+
# Generate a responsive, autoplay embed
|
|
165
|
+
twentythree player embed --video-id <id> --responsive --autoplay --json
|
|
166
|
+
|
|
167
|
+
# Save to file for use in HTML templates
|
|
168
|
+
twentythree player embed --video-id <id> --responsive > embed.html
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Discover available styles before updating a player
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# Step 1: List current players
|
|
175
|
+
twentythree player list --json
|
|
176
|
+
|
|
177
|
+
# Step 2: Check available visual styles
|
|
178
|
+
twentythree player styles --json
|
|
179
|
+
|
|
180
|
+
# Step 3: Update the player with a chosen style via --data
|
|
181
|
+
twentythree player update <player-id> --name "Styled Player" --data '{"style":"minimal"}' --json
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Generate webinar embed for a live event
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# Generate an iframe embed for a webinar (use API name 'live')
|
|
188
|
+
twentythree player embed --webinar-id <webinar-id> --iframe --responsive --json
|
|
189
|
+
|
|
190
|
+
# List embed versions for the webinar
|
|
191
|
+
twentythree player embed-versions --object-type live --object-id <webinar-id> --json
|
|
192
|
+
```
|