YouTube + video workflow agent skills for Concinno — yt-dlp (Unlicense), youtube-transcript-api (MIT), moviepy (MIT). Requires system ffmpeg.
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file concinno_skills_video-0.1.0.tar.gz.
File metadata
- Download URL: concinno_skills_video-0.1.0.tar.gz
- Upload date:
- Size: 42.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea51b3807e233ef72ef7f8f5e723aaa26dc19cf791442386398e1bc93ec72031
|
|
| MD5 |
9f0cf5f10c1021e57275b7799821f956
|
|
| BLAKE2b-256 |
e0577565d1be5acd5d880c1de50a5c36760464ed4c3e3f31ea2730d628e4158f
|
File details
Details for the file concinno_skills_video-0.1.0-py3-none-any.whl.
File metadata
- Download URL: concinno_skills_video-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fda29c2c289defea773d874f97890313b0e3093db3b7eb2987b97cdd4c0d00b
|
|
| MD5 |
a0dc6f1e091af90c416cc0a40e25e3f6
|
|
| BLAKE2b-256 |
82fafdfb2866da69514aaa92e41cd0288c14ec7b2998739d83ae5f3d701143d3
|