Skip to main content

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 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

concinno_skills_video-0.1.0.tar.gz (42.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

concinno_skills_video-0.1.0-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

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

Hashes for concinno_skills_video-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ea51b3807e233ef72ef7f8f5e723aaa26dc19cf791442386398e1bc93ec72031
MD5 9f0cf5f10c1021e57275b7799821f956
BLAKE2b-256 e0577565d1be5acd5d880c1de50a5c36760464ed4c3e3f31ea2730d628e4158f

See more details on using hashes here.

File details

Details for the file concinno_skills_video-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for concinno_skills_video-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7fda29c2c289defea773d874f97890313b0e3093db3b7eb2987b97cdd4c0d00b
MD5 a0dc6f1e091af90c416cc0a40e25e3f6
BLAKE2b-256 82fafdfb2866da69514aaa92e41cd0288c14ec7b2998739d83ae5f3d701143d3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page