KinoPipe
KinoPipe: FFmpeg-редактирование видео для AI-агентов через MCP
Что умеет
- Обрезать, сжимать и конвертировать видео в разные форматы
- Превращать горизонтальное видео в вертикальный формат под Reels и Shorts
- Определять сцены, тишину и метаданные видео
- Создавать аудиограммы, бумеранги и GIF из видео
- Извлекать или удалять аудиодорожку
Какие данные видит
Ассистент отправляет и получает медиафайлы пользователя по подписанным ссылкам, авторизация через OAuth 2.1.
Нужен ли аккаунт
Не нужен: сервер работает без входа
KinoPipe отдаёт агентам обработку видео без вызова shell-команд: обрезка, изменение размера, сжатие, конвертация, субтитры, водяные знаки, GIF, детекция сцен и тишины. Задачи выполняются асинхронно, ассистент получает подписанную ссылку на результат через get_job.
Как подключить
Как подключить KinoPipe к Claude
Адрес сервера, который нужно вставить в настройках Claude:
https://kinopipe--nicolas-coutureau.run.tools
- Откройте Claude (сайт claude.ai или приложение для компьютера).
- Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
- Нажмите Добавить пользовательский коннектор (Add custom connector).
- Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
- В чате нажмите + → Коннекторы и включите новый коннектор.
Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.
Авторизация
После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.
Как подключить KinoPipe к ChatGPT
Адрес сервера, который нужно вставить в настройках ChatGPT:
https://kinopipe--nicolas-coutureau.run.tools
- Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
- Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
- Откройте Настройки → Коннекторы и нажмите Создать (Create).
- Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
- В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
- В новом чате откройте + → Приложения/Коннекторы и включите коннектор.
Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.
Авторизация
При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.
Как подключить KinoPipe к Cursor
Адрес сервера, который нужно вставить в настройках Cursor:
https://kinopipe--nicolas-coutureau.run.tools
Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.
Вручную:
- В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
- Вставьте JSON, скопированный ниже, в открывшийся файл
~/.cursor/mcp.json(для одного проекта:.cursor/mcp.jsonв корне проекта). - Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.
Авторизация
Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.
Список инструментов сервера (39)
Технические названия из tools/list. Нужны только разработчикам.
| get_video_metadata | Read the duration, dimensions, rotation-corrected display size, frame rate, codecs and audio tracks of a media URL before choosing an edit. The finished job returns the metadata in result.input and as a downloadable JSON file. Runs no encode. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| convert_video_to_vertical | Turn a landscape video into a 9:16 vertical MP4 by padding it over a blurred (or black) background — the standard TikTok, Reels and Shorts look, with no cropping. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| change_video_speed | Speed a video up or slow it down between 0.25x and 4x with pitch-corrected audio. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| detect_scenes | List the timestamps where the picture cuts to a new scene, as JSON in result.analysis — use them to choose trim, split or clip boundaries before editing. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| detect_silence | List silent passages (start, end, duration) as JSON in result.analysis without editing anything — for chaptering, cut planning or deciding whether remove-silence is worth running. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| analyze_audio | Measure mean and peak volume, integrated loudness (LUFS), loudness range and true peak, as JSON in result.analysis — decide whether and how to normalize before editing. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| auto_orient_video | Fix a video that displays sideways or upside down: the rotation stored in metadata is baked into the pixels and the result plays upright everywhere. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| strip_video_metadata | Remove GPS location, device model, creation time and encoder tags from a video without re-encoding — a fast stream copy that rewrites only the container. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| create_audiogram | Turn audio into a shareable MP4 with an animated waveform — over a background image you supply or a solid dark canvas. The classic podcast and music share format. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| add_progress_bar | Overlay a thin animated progress bar that fills over the video duration — the TikTok-style retention cue. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| create_boomerang | Play a short clip forward then in reverse as one seamless loop-ready MP4. Sources up to 30 seconds. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| generate_audio_waveform | Draw the waveform of an audio file (or a video soundtrack) as a single image — transparent PNG by default, with configurable size and color. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| normalize_audio | Normalize loudness to platform targets: streaming (-14 LUFS, YouTube and Spotify), podcast (-16) or broadcast (-23). The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| remove_silence_from_audio | Strip silent passages from a video or audio source and return a tightened MP3 or WAV. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| compress_video | Compress a source video into a smaller web-ready MP4 while preserving useful visual quality. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| optimize_video_for_web | Create a browser-compatible fast-start MP4 for web delivery. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| convert_video_to_mp4 | Convert a supported source video such as MOV or WebM into a compatible H.264 MP4. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| resize_video | Resize and reframe a video for vertical, square or landscape delivery without stretching it. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| crop_video | Crop a video to a social aspect ratio with a predictable focal position. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| trim_video | Cut a precise time range from a source video and return a playable MP4. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| create_social_video_clip | Trim and reframe one source into a vertical, square or landscape social clip in a single job. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| extract_audio | Extract the primary audio track from a video as MP3 or uncompressed WAV. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| remove_audio_from_video | Remove every audio stream and return a silent MP4. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| generate_video_thumbnail | Extract a deterministic JPEG or WebP poster frame at an exact timestamp. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| convert_video_to_gif | Create a short palette-optimized animated GIF from a selected video range. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| add_subtitles_to_video | Burn a public SRT or WebVTT caption file into a durable MP4. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| add_music_to_video | Mix background music with the source soundtrack or replace it, looping music to the video duration. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| merge_videos | Normalize and join two to six public video clips into one playback-ready MP4 in the supplied order, with optional crossfade transitions between clips. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| merge_audio | Join two to six audio files (or the audio tracks of videos) into one normalized MP3 or WAV in the supplied order — voiceover chunks, podcast segments, TTS parts. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| format_video_for_platform | Produce a platform-ready 9:16 MP4 for Instagram Reels, TikTok or YouTube Shorts: 1080x1920, H.264 High@4.1, capped bitrate, constant 30 fps — crop to fill or pad over a blurred background. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| generate_video_filmstrip | Render one image strip of evenly spaced frames from a video — a filmstrip for timelines, previews, scene review or LLM vision input. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| image_to_video | Turn a still image (PNG, JPEG, WebP) into an MP4 of a chosen duration and aspect ratio — for slideshows, video references or platforms that only accept video. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| add_watermark_to_video | Overlay a public logo image with controlled position, width and opacity. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| create_picture_in_picture_video | Overlay a public facecam or secondary video over the main video. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| split_video | Split a source into equally sized, independently playable MP4 segments and return every output. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| split_video_by_scenes | Detect scene changes and cut the video at every real cut, returning one MP4 segment per scene. Use detect_scenes instead when you only need the timestamps. The edit is asynchronous; call get_job with the returned jobId to retrieve the download URL. |
| create_video_job | Queue a custom KinoPipe recipe containing bounded trim, resize, crop, thumbnail, subtitles, audio, composition or split operations. Prefer a focused tool when one matches the requested edit. |
| get_job | Read the current state of a KinoPipe video job. Poll until succeeded or failed. A succeeded job contains temporary downloadable output URLs. |
| create_upload | Create a signed upload slot so a LOCAL media file can be used as an input_url. byte_size must be the exact file size in bytes (macOS: stat -f%z file; Linux: stat -c%s file). Upload by running the returned command (or an equivalent multipart POST sending every field before the file), then pass media_url as the input_url of any editing tool within 24 hours. |