/install tella-cli
tella-cli
When To Use This Skill
Use the tella-cli skill when you need to:
- List, fetch, update, or delete videos in a Tella workspace
- Pull transcripts (cut or uncut) for a clip with word-level timestamps
- Generate video or clip thumbnails (jpg/png/webp/gif/mp4) at custom sizes/timestamps
- Trigger video exports at 1080p or 4k, 30/60fps, with optional burned-in subtitles
- Duplicate a video or clip, optionally trimmed
- Edit clips: cut time ranges, reorder, remove filler words, find silent ranges
- Add or update visual edits: blurs, highlights, layouts, zooms (manual or tracking)
- Manage playlists and add/remove videos from them
- Add workspace collaborators (editor or viewer) to a video
- Create webhook endpoints, fetch signing secrets, and inspect recent deliveries
Capabilities
- Read every video and playlist in the workspace, including metadata, view counts, and share links
- Push fine-grained edits to clips (cuts, reorders, blurs, highlights, layouts, zooms) without opening the Tella editor
- Pull transcripts for downstream search, summarization, or accessibility workflows
- Start exports and poll/list webhook deliveries to know when files are ready
- Manage sharing:
linkScope, password, allowed embed domains, search-engine indexing - Subscribe to events (
video.created,export.ready,transcript.ready, etc.) and recover delivery messages
Common Use Cases
- "List my last 20 Tella videos and dump them as JSON for a content audit"
- "Get the uncut transcript for clip X so I can generate chapter timestamps"
- "Export video Y at 4k 60fps with subtitles burned in"
- "Add a blur over the credentials shown between 4.2s and 7.8s on this clip"
- "Create a playlist 'Tutorials' and add these 5 videos to it"
- "Wire up a webhook so I get notified when an export is ready"
- "Remove filler words from this clip and then fetch the cleaned transcript"
Setup
If tella-cli is not found, install and build it:
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.
Working Rules
- Always use
--jsonfor agent-driven calls so downstream steps can parse the result - Run
\x3Cresource> --helpor\x3Cresource> \x3Caction> --helpwhen unsure of flags rather than guessing - For destructive actions (
delete,remove-*), read first withget/listto confirm the target - Most clip mutations require both
\x3CvideoId>and\x3CclipId>as positional args (in that order) - Coordinates for masks (blurs, highlights) and zoom focus points are normalized to
0-1of the canvas - Times are in milliseconds (
*-msflags) unless the docs say otherwise
Authentication
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).
Resources
videos
| Action | Description | Key Flags |
|---|---|---|
list |
List videos in the workspace | --cursor, --limit, --playlist-id, --fields |
get \x3Cid> |
Get a single video's metadata | - |
update \x3Cid> |
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 \x3Cid> |
Delete a video | - |
duplicate \x3Cid> |
Duplicate, optionally trimmed | --name, --trim-start-ms, --trim-end-ms |
export \x3Cid> |
Start an export job | --resolution (1080p/4k), --fps (30/60), --speed, --granularity (video/clips/raw), --subtitles |
thumbnail \x3Cid> |
Get thumbnail/animated preview | --format (jpg/png/webp/gif/mp4), --inpoint-ms, --duration-ms, --width, --height, --download, --response json |
add-collaborator \x3Cid> |
Add a workspace member | --email (required), --role editor|viewer (required) |
clips
Most clip commands take \x3CvideoId> \x3CclipId> as positional args.
| Action | Description | Key Flags |
|---|---|---|
list \x3CvideoId> |
List clips for a video | --fields |
get \x3CvideoId> \x3CclipId> |
Get a single clip | - |
update \x3CvideoId> \x3CclipId> |
Rename or reorder | --name, --order |
delete \x3CvideoId> \x3CclipId> |
Delete a clip | - |
duplicate \x3CvideoId> \x3CclipId> |
Duplicate the clip | --name, --order |
cut \x3CvideoId> \x3CclipId> |
Cut a time range out | --from-ms (req), --to-ms (req) |
reorder \x3CvideoId> \x3CclipId> |
Move to new position | --order (req) |
remove-fillers \x3CvideoId> \x3CclipId> |
Auto-remove filler words | - |
silences \x3CvideoId> \x3CclipId> |
List silent ranges | --min-duration-ms |
transcript-cut \x3CvideoId> \x3CclipId> |
Edited transcript (post-cuts) | - |
transcript-uncut \x3CvideoId> \x3CclipId> |
Original transcript | - |
thumbnail \x3CvideoId> \x3CclipId> |
Clip thumbnail/preview | --format, --inpoint-ms, --duration-ms, --width, --height, --download, --response |
list-sources \x3CvideoId> \x3CclipId> |
List recording sources | --fields |
source-thumbnail \x3CvideoId> \x3CclipId> \x3CsourceId> |
Source thumbnail | same as clip thumbnail |
source-waveform \x3CvideoId> \x3CclipId> \x3CsourceId> |
Audio waveform JSON | - |
list-blurs \x3CvideoId> \x3CclipId> |
List blur masks | - |
add-blur \x3CvideoId> \x3CclipId> |
Add a blur mask | --start-time-ms, --duration-ms, --point-x, --point-y, --dim-width, --dim-height (all required) |
update-blur \x3CvideoId> \x3CclipId> \x3CmaskId> |
Update a blur | any of the mask flags above |
remove-blur \x3CvideoId> \x3CclipId> \x3CmaskId> |
Remove a blur | - |
list-highlights \x3CvideoId> \x3CclipId> |
List highlight masks | - |
add-highlight \x3CvideoId> \x3CclipId> |
Add a highlight | same mask flags as add-blur |
update-highlight \x3CvideoId> \x3CclipId> \x3CmaskId> |
Update a highlight | mask flags |
remove-highlight \x3CvideoId> \x3CclipId> \x3CmaskId> |
Remove a highlight | - |
list-layouts \x3CvideoId> \x3CclipId> |
List layouts | - |
add-layout \x3CvideoId> \x3CclipId> |
Add a layout (JSON shape) | --layout (JSON, req), --start-time-ms, --duration-ms, --transition-style |
update-layout \x3CvideoId> \x3CclipId> \x3ClayoutId> |
Update a layout | --layout, time flags, --transition-style |
remove-layout \x3CvideoId> \x3CclipId> \x3ClayoutId> |
Remove a layout | - |
list-zooms \x3CvideoId> \x3CclipId> |
List zooms | - |
add-zoom \x3CvideoId> \x3CclipId> |
Add a zoom | --type manualZoom|trackingZoom (req), --start-time-ms (req), --duration-ms (req), --scale, --focus-x, --focus-y |
update-zoom \x3CvideoId> \x3CclipId> \x3CzoomId> |
Update a zoom | same as add-zoom |
remove-zoom \x3CvideoId> \x3CclipId> \x3CzoomId> |
Remove a zoom | - |
Mask coordinates (--point-*, --dim-*, --focus-*) are normalized 0-1 of the canvas.
playlists
| Action | Description | Key Flags |
|---|---|---|
list |
List all playlists | --visibility (personal/org), --cursor, --limit, --fields |
get \x3Cid> |
Get playlist details | - |
create |
Create a new playlist | --name (req), --description, --emoji, --link-scope, --password, --visibility, --search-engine-indexing-enabled |
update \x3Cid> |
Update a playlist | --name, --description, --link-scope, --password, --search-engine-indexing-enabled |
delete \x3Cid> |
Delete a playlist | - |
add-video \x3Cid> |
Add a video to it | --video-id (req) |
remove-video \x3Cid> \x3CvideoId> |
Remove a video from it | - |
webhooks
| Action | Description | Key Flags |
|---|---|---|
create-endpoint |
Subscribe to events | --url (req), --filter-types (req, comma-separated, e.g. video.created,export.ready) |
delete-endpoint \x3Cid> |
Delete an endpoint | - |
get-secret \x3Cid> |
Get the signing secret | - |
list-messages |
Recent delivery messages | --event-types, --limit, --fields |
get-message \x3Cid> |
Get a specific message | - |
Available event types include: video.created, video.viewed, view.milestone, transcript.ready, export.ready, playlist.created, playlist.video_added.
Output Format
--json returns a standardized envelope:
{ "ok": true, "data": { ... }, "meta": { "total": 42 } }
On error: { "ok": false, "error": { "message": "...", "status": 401 } }
Quick Reference
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
Global Flags
All commands support: --json, --format \x3Ctext|json|csv|yaml>, --verbose, --no-color, --no-header
Exit codes: 0 = success, 1 = API error, 2 = usage error
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install tella-cli - 安装完成后,直接呼叫该 Skill 的名称或使用
/tella-cli触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
tella-cli 是什么?
Manage Tella via CLI - videos, clips, playlists, webhooks. Use when user mentions 'tella', 'tella.tv', 'tella video', 'screen recording', 'video transcript',... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 54 次。
如何安装 tella-cli?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install tella-cli」即可一键安装,无需额外配置。
tella-cli 是免费的吗?
是的,tella-cli 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
tella-cli 支持哪些平台?
tella-cli 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 tella-cli?
由 Melvyn(@melvynx)开发并维护,当前版本 v0.1.0。