Skip to content

Commit 27651eb

Browse files
authored
Merge pull request #65 from muxinc/add-robots-api
feat: add Mux Robots API commands
2 parents be5d6a9 + 68a7750 commit 27651eb

24 files changed

+1530
-280
lines changed

README.md

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ A command-line interface for interacting with the Mux API, designed to provide a
1919
- [Transcription Vocabularies](#transcription-vocabularies)
2020
- [Delivery Usage](#delivery-usage)
2121
- [DRM Configurations](#drm-configurations)
22+
- [Robots](#robots)
2223
- [Mux Data](#mux-data)
2324
- [Authentication & Environment Management](#authentication--environment-management)
2425
- [Configuration](#configuration)
@@ -821,6 +822,115 @@ mux drm-configurations get <drm-configuration-id>
821822

822823
</details>
823824

825+
<details>
826+
<summary><h3>Robots</h3></summary>
827+
828+
Run AI-powered workflows on your video assets using [Mux Robots](https://docs.mux.com/guides/robots). Requires accepting the Robots terms of service in the [Mux Dashboard](https://dashboard.mux.com) and a token with `robots:read` and `robots:write` permissions.
829+
830+
#### Job Management
831+
832+
```bash
833+
# List all jobs (with optional filters)
834+
mux robots list [--workflow summarize] [--status completed] [--asset-id <id>]
835+
836+
# Get full details about a specific job
837+
mux robots get <job-id> --workflow <type>
838+
839+
# Cancel a running job
840+
mux robots cancel <job-id>
841+
```
842+
843+
**List options:** `--workflow`, `--status`, `--asset-id`, `--limit`, `--page`, `--compact`
844+
845+
#### `mux robots summarize <asset-id>`
846+
847+
Generate a title, description, and tags for a video.
848+
849+
**Options:**
850+
- `--tone <tone>` - `neutral`, `playful`, or `professional`
851+
- `--language-code <code>` - BCP 47 code of the caption track to analyze
852+
- `--output-language-code <code>` - BCP 47 code for the generated output
853+
- `--title-length <n>` - Maximum title length in words
854+
- `--description-length <n>` - Maximum description length in words
855+
- `--tag-count <n>` - Maximum number of tags (default: 10)
856+
- `--passthrough <string>` - Arbitrary metadata (max 255 chars)
857+
858+
```bash
859+
mux robots summarize abc123 --tone playful
860+
```
861+
862+
#### `mux robots moderate <asset-id>`
863+
864+
Analyze video content for policy violations.
865+
866+
**Options:**
867+
- `--language-code <code>` - BCP 47 code for transcript analysis (audio-only assets)
868+
- `--sampling-interval <seconds>` - Interval between sampled thumbnails (min 5)
869+
- `--max-samples <n>` - Maximum number of thumbnails to sample
870+
- `--threshold-sexual <n>` - Score threshold (0.0-1.0) for sexual content (default: 0.7)
871+
- `--threshold-violence <n>` - Score threshold (0.0-1.0) for violent content (default: 0.8)
872+
- `--passthrough <string>` - Arbitrary metadata (max 255 chars)
873+
874+
```bash
875+
mux robots moderate abc123 --threshold-sexual 0.5 --threshold-violence 0.9
876+
```
877+
878+
#### `mux robots generate-chapters <asset-id>`
879+
880+
Automatically generate chapters for a video.
881+
882+
**Options:**
883+
- `--language-code <code>` - BCP 47 code of the caption track to analyze
884+
- `--output-language-code <code>` - BCP 47 code for output chapter titles
885+
- `--passthrough <string>` - Arbitrary metadata (max 255 chars)
886+
887+
```bash
888+
mux robots generate-chapters abc123
889+
```
890+
891+
#### `mux robots ask-questions <asset-id>`
892+
893+
Ask questions about a video and get answers.
894+
895+
**Options:**
896+
- `--question <question>` - Question to ask (required, repeatable)
897+
- `--language-code <code>` - BCP 47 code of the caption track to analyze
898+
- `--passthrough <string>` - Arbitrary metadata (max 255 chars)
899+
900+
```bash
901+
mux robots ask-questions abc123 --question "What is this video about?" --question "Are there children?"
902+
```
903+
904+
#### `mux robots find-key-moments <asset-id>`
905+
906+
Find key moments and highlights in a video.
907+
908+
**Options:**
909+
- `--max-moments <n>` - Maximum number of key moments to extract (default: 5)
910+
- `--target-duration-min-ms <ms>` - Preferred minimum highlight duration in milliseconds (must be paired with max)
911+
- `--target-duration-max-ms <ms>` - Preferred maximum highlight duration in milliseconds (must be paired with min)
912+
- `--passthrough <string>` - Arbitrary metadata (max 255 chars)
913+
914+
```bash
915+
mux robots find-key-moments abc123 --max-moments 3 --target-duration-min-ms 15000 --target-duration-max-ms 45000
916+
```
917+
918+
#### `mux robots translate-captions <asset-id>`
919+
920+
Translate captions on a video to another language.
921+
922+
**Options:**
923+
- `--track-id <id>` - Source caption track ID to translate (required)
924+
- `--to-language-code <code>` - BCP 47 code for translated output (required)
925+
- `--no-upload` - Do not upload the translated VTT to Mux
926+
- `--passthrough <string>` - Arbitrary metadata (max 255 chars)
927+
928+
```bash
929+
mux robots translate-captions abc123 --track-id track456 --to-language-code es
930+
```
931+
932+
</details>
933+
824934
<details>
825935
<summary><h3>Mux Data</h3></summary>
826936

@@ -1043,6 +1153,7 @@ src/
10431153
│ ├── transcription-vocabularies/ # Transcription vocabulary management
10441154
│ ├── delivery-usage/ # Delivery usage reports
10451155
│ ├── drm-configurations/ # DRM configuration management
1156+
│ ├── robots/ # Mux Robots AI workflows
10461157
│ ├── signing-keys/ # Signing key management
10471158
│ ├── video-views/ # Mux Data: video view analytics
10481159
│ ├── metrics/ # Mux Data: metric analytics

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
"@cliffy/ansi": "jsr:1.0.0-rc.8",
5353
"@cliffy/command": "jsr:1.0.0-rc.8",
5454
"@cliffy/prompt": "npm:@jsr/cliffy__prompt@1.0.0-rc.8",
55-
"@mux/mux-node": "^12.8.1",
55+
"@mux/mux-node": "^14.0.0",
5656
"@opentui/core": "^0.1.50",
5757
"@opentui/react": "^0.1.50",
5858
"@std/path": "npm:@jsr/std__path@^1.1.3",

0 commit comments

Comments
 (0)