使用 CLI 管理 Tella - 视频、剪辑、播放列表、webhook。当用户提及 'tella'、'tella.tv'、'tella 视频'、'屏幕录制'、'视频转录' 等关键词时使用。
Use the tella-cli skill when you need to:
linkScope, password, allowed embed domains, search-engine indexingvideo.created, export.ready, transcript.ready, etc.) and recover delivery messagesIf tella-cli is not found, install and build it:
bash
bun --version || curl -fsSL https://bun.sh/install | bash
npx api2cli bundle tella
npx api2cli link tella
api2cli link adds ~/.local/bin to PATH automatically. The CLI is available in the next command.
Always use --json when calling commands programmatically.
--json for agent-driven calls so downstream steps can parse the result<resource> --help or <resource> <action> --help when unsure of flags rather than guessingdelete, remove-*), read first with get/ list to confirm the target<videoId> and <clipId> as positional args (in that order)0-1 of the canvas*-ms flags) unless the docs say otherwisebash
tella-cli auth set "tella_pk_xxx..." # API key from https://www.tella.tv/settings/api-keys
tella-cli auth test # Verify the key works
tella-cli auth show # Show masked token
tella-cli auth remove # Delete stored token
Token is stored at ~/.config/tokens/tella-cli.txt (chmod 600).
ActionDescriptionKey FlagslistList videos in the workspace--cursor, --limit, --playlist-id, --fields``get <id>Get a single video's metadata-update <id>Update title, description, sharing, playback--name, --description, --link-scope, --password, --allowed-embed-domains, --custom-thumbnail-url, --default-playback-rate, --captions-default-enabled, --comments-enabled, --comment-emails-enabled, --downloads-enabled, --raw-downloads-enabled, --publish-date-enabled, --search-engine-indexing-enabled, --transcripts-enabled, --view-count-enabled``delete <id>Delete a video-duplicate <id>Duplicate, optionally trimmed--name, --trim-start-ms, --trim-end-ms``export <id>Start an export job--resolution (1080p/4k), --fps (30/60), --speed, --granularity (video/clips/raw), --subtitles``thumbnail <id>Get thumbnail/animated preview--format (jpg/png/webp/gif/mp4), --inpoint-ms, --duration-ms, --width, --height, --download, --response json``add-collaborator <id>Add a workspace member--email (required), --role editor|viewer (required)
Most clip commands take <videoId> <clipId> as positional args.
ActionDescriptionKey Flagslist <videoId>List clips for a video--fields``get <videoId> <clipId>Get a single clip-update <videoId> <clipId>Rename or reorder--name, --order``delete <videoId> <clipId>Delete a clip-duplicate <videoId> <clipId>Duplicate the clip--name, --order``cut <videoId> <clipId>Cut a time range out--from-ms (req), --to-ms (req)reorder <videoId> <clipId>Move to new position--order (req)remove-fillers <videoId> <clipId>Auto-remove filler words-silences <videoId> <clipId>List silent ranges--min-duration-ms``transcript-cut <videoId> <clipId>Edited transcript (post-cuts)-transcript-uncut <videoId> <clipId>Original transcript-thumbnail <videoId> <clipId>Clip thumbnail/preview--format, --inpoint-ms, --duration-ms, --width, --height, --download, --response``list-sources <videoId> <clipId>List recording sources--fields``source-thumbnail <videoId> <clipId> <sourceId>Source thumbnailsame as clip thumbnail``source-waveform <videoId> <clipId> <sourceId>Audio waveform JSON-list-blurs <videoId> <clipId>List blur masks-add-blur <videoId> <clipId>Add a blur mask--start-time-ms, --duration-ms, --point-x, --point-y, --dim-width, --dim-height (all required)update-blur <videoId> <clipId> <maskId>Update a blurany of the mask flags aboveremove-blur <videoId> <clipId> <maskId>Remove a blur-list-highlights <videoId> <clipId>List highlight masks-add-highlight <videoId> <clipId>Add a highlightsame mask flags as add-blur``update-highlight <videoId> <clipId> <maskId>Update a highlightmask flagsremove-highlight <videoId> <clipId> <maskId>Remove a highlight-list-layouts <videoId> <clipId>List layouts-add-layout <videoId> <clipId>Add a layout (JSON shape)--layout (JSON, req), --start-time-ms, --duration-ms, --transition-style``update-layout <videoId> <clipId> <layoutId>Update a layout--layout, time flags, --transition-style``remove-layout <videoId> <clipId> <layoutId>Remove a layout-list-zooms <videoId> <clipId>List zooms-add-zoom <videoId> <clipId>Add a zoom--type manualZoom|trackingZoom (req), --start-time-ms (req), --duration-ms (req), --scale, --focus-x, --focus-y``update-zoom <videoId> <clipId> <zoomId>Update a zoomsame as add-zoom``remove-zoom <videoId> <clipId> <zoomId>Remove a zoom-
Mask coordinates ( --point-*, --dim-*, --focus-*) are normalized 0-1 of the canvas.
ActionDescriptionKey FlagslistList all playlists--visibility (personal/org), --cursor, --limit, --fields``get <id>Get playlist details-createCreate a new playlist--name (req), --description, --emoji, --link-scope, --password, --visibility, --search-engine-indexing-enabled``update <id>Update a playlist--name, --description, --link-scope, --password, --search-engine-indexing-enabled``delete <id>Delete a playlist-add-video <id>Add a video to it--video-id (req)remove-video <id> <videoId>Remove a video from it-
ActionDescriptionKey Flagscreate-endpointSubscribe to events--url (req), --filter-types (req, comma-separated, e.g. video.created,export.ready)delete-endpoint <id>Delete an endpoint-get-secret <id>Get the signing secret-list-messagesRecent delivery messages--event-types, --limit, --fields``get-message <id>Get a specific message-
Available event types include: video.created, video.viewed, view.milestone, transcript.ready, export.ready, playlist.created, playlist.video_added.
--json returns a standardized envelope:
json
{ "ok": true, "data": { ... }, "meta": { "total": 42 } }
On error: { "ok": false, "error": { "message": "...", "status": 401 } }
bash
tella-cli --help # List all resources and global flags
tella-cli videos --help # List actions on videos
tella-cli videos list --help # Show flags for videos list
tella-cli clips add-zoom --help # Show flags for add-zoom
All commands support: --json, --format <text|json|csv|yaml>, --verbose, --no-color, --no-header
Exit codes: 0 = success, 1 = API error, 2 = usage error