Skip to main content

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 ffmpeg or 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 = False for this reason.
  • Size cap: YouTubeDownload refuses any request whose expected filesize exceeds 500 MB unless you pass force=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 under Path.home() or Path.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)

Source distribution for concinno-skills-video 0.1.0
File Size Uploaded
concinno_skills_video-0.1.0.tar.gz 42.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for concinno-skills-video 0.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page