concinno-skills-video
YouTube + video workflow agent skills for Concinno.
Status
MVP (0.1.0) — three tools covering the public-video workflow end-to-end:
| Tool | Library | Purpose |
|---|---|---|
YouTubeDownload |
yt-dlp (Unlicense) |
download video / extract audio / fetch metadata |
YouTubeTranscript |
youtube-transcript-api (MIT) |
fetch YouTube-provided captions (no STT) |
VideoEdit |
moviepy (MIT) |
subclip / concat / thumbnail |
Private / playlist / upload support is deliberately not in 0.1.0 —
those paths need OAuth and will land in a later minor release. The
_auth.py placeholder exists so 0.2.0 can add them without reshuffling
the package layout.
Install
pip install concinno-skills-video
You must also install ffmpeg — the package does not bundle it.
- macOS:
brew install ffmpeg - Debian / Ubuntu:
sudo apt install ffmpeg - Windows:
choco install ffmpegor download from https://ffmpeg.org/
Each tool checks shutil.which("ffmpeg") on first use and returns a
structured error if it's missing rather than crashing.
Legal & operational notes
- yt-dlp is Unlicense — you can embed it freely, but downloading YouTube content may still violate YouTube's Terms of Service and your local copyright law. This library does not grant you permission to download content you don't have rights to. DMCA takedowns, IP bans, and content-policy enforcement are entirely downstream of this code.
- youtube-transcript-api hits YouTube's public caption endpoints;
sustained bursty use can trigger IP throttling or short bans. The
tool is marked
is_concurrency_safe = Falsefor this reason. - Size cap:
YouTubeDownloadrefuses any request whose expected filesize exceeds 500 MB unless you passforce=True. This is a guardrail to prevent agent-triggered accidental bandwidth burn, not a security boundary. - Path containment: all file paths (
output_dir,input_path,output_path) must resolve underPath.home()orPath.cwd()— arbitrary absolute paths are rejected (Concinno BoundaryGuard rule).
Usage via Concinno ToolRegistry
When the consumer sets CONCINNO_LOAD_PLUGINS=1, the default registry
auto-mounts all three tools:
import os
os.environ["CONCINNO_LOAD_PLUGINS"] = "1"
from concinno.tools.registry import get_default_registry
reg = get_default_registry()
assert {"YouTubeDownload", "YouTubeTranscript", "VideoEdit"} <= set(reg.list_deferred())
tool = reg.get("YouTubeTranscript")
tool.call(action="get", video_id="dQw4w9WgXcQ", lang="en")
Direct Python usage
from concinno_skills_video import (
YouTubeDownload, YouTubeTranscript, VideoEdit,
)
# Metadata only (no download)
info = YouTubeDownload().call(
action="info",
url="https://youtu.be/dQw4w9WgXcQ",
)
# Audio extract
YouTubeDownload().call(
action="audio",
url="https://youtu.be/dQw4w9WgXcQ",
output_dir="~/Downloads",
)
# Transcript
segs = YouTubeTranscript().call(
action="get",
video_id="dQw4w9WgXcQ",
lang="en",
)
# Edit: cut a segment
VideoEdit().call(
action="subclip",
input_path="~/Downloads/input.mp4",
output_path="~/Downloads/cut.mp4",
start=10.0,
end=20.0,
)
# Edit: concat
VideoEdit().call(
action="concat",
input_paths=["~/Downloads/a.mp4", "~/Downloads/b.mp4"],
output_path="~/Downloads/merged.mp4",
)
# Edit: extract a frame as PNG/JPEG
VideoEdit().call(
action="thumbnail",
input_path="~/Downloads/input.mp4",
output_path="~/Downloads/thumb.png",
time=5.0,
)
All methods return either {"ok": True, ...} on success or
{"error": "..."} on failure — same shape as the other Concinno
built-in tools.
License
Apache-2.0. See LICENSE in the Concinno monorepo.
Metadata
Release files for concinno-skills-video 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| concinno_skills_video-0.1.0.tar.gz | 42.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| concinno_skills_video-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 56.9 kB
Release files / concinno_skills_video-0.1.0.tar.gz
| Download URL | concinno_skills_video-0.1.0.tar.gz |
|---|---|
| Size | 42.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ea51b3807e233ef72ef7f8f5e723aaa26dc19cf791442386398e1bc93ec72031
|
|
BLAKE2b-256 checksum How to use checksums |
e0577565d1be5acd5d880c1de50a5c36760464ed4c3e3f31ea2730d628e4158f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|
Release files / concinno_skills_video-0.1.0-py3-none-any.whl
| Download URL | concinno_skills_video-0.1.0-py3-none-any.whl |
|---|---|
| Size | 14.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7fda29c2c289defea773d874f97890313b0e3093db3b7eb2987b97cdd4c0d00b
|
|
BLAKE2b-256 checksum How to use checksums |
82fafdfb2866da69514aaa92e41cd0288c14ec7b2998739d83ae5f3d701143d3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|