Files
AutoGPT/docs/integrations/multimedia.md
Nicholas Tindle c1a1767034 feat(docs): Add block documentation auto-generation system (#11707)
- Add generate_block_docs.py script that introspects block code to
generate markdown
- Support manual content preservation via <!-- MANUAL: --> markers
- Add migrate_block_docs.py to preserve existing manual content from git
HEAD
- Add CI workflow (docs-block-sync.yml) to fail if docs drift from code
- Add Claude PR review workflow (docs-claude-review.yml) for doc changes
- Add manual LLM enhancement workflow (docs-enhance.yml)
- Add GitBook configuration (.gitbook.yaml, SUMMARY.md)
- Fix non-deterministic category ordering (categories is a set)
- Add comprehensive test suite (32 tests)
- Generate docs for 444 blocks with 66 preserved manual sections

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

<!-- Clearly explain the need for these changes: -->

### Changes 🏗️

<!-- Concisely describe all of the changes made in this pull request:
-->

### Checklist 📋

#### For code changes:
- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
  <!-- Put your test plan here: -->
  - [x] Extensively test code generation for the docs pages



<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Introduces an automated documentation pipeline for blocks and
integrates it into CI.
> 
> - Adds `scripts/generate_block_docs.py` (+ tests) to introspect blocks
and generate `docs/integrations/**`, preserving `<!-- MANUAL: -->`
sections
> - New CI workflows: **docs-block-sync** (fails if docs drift),
**docs-claude-review** (AI review for block/docs PRs), and
**docs-enhance** (optional LLM improvements)
> - Updates existing Claude workflows to use `CLAUDE_CODE_OAUTH_TOKEN`
instead of `ANTHROPIC_API_KEY`
> - Improves numerous block descriptions/typos and links across backend
blocks to standardize docs output
> - Commits initial generated docs including
`docs/integrations/README.md` and many provider/category pages
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
631e53e0f6. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 07:03:19 +00:00

4.3 KiB

Multimedia

Blocks for processing and manipulating video and audio files.

Add Audio To Video

What it is

Block to attach an audio file to a video file using moviepy.

How it works

This block combines a video file with an audio file using the moviepy library. The audio track is attached to the video, optionally with volume adjustment via the volume parameter (1.0 = original volume).

Input files can be URLs, data URIs, or local paths. The output can be returned as either a file path or base64 data URI.

Inputs

Input Description Type Required
video_in Video input (URL, data URI, or local path). str (file) Yes
audio_in Audio input (URL, data URI, or local path). str (file) Yes
volume Volume scale for the newly attached audio track (1.0 = original). float No
output_return_type Return the final output as a relative path or base64 data URI. "file_path" | "data_uri" No

Outputs

Output Description Type
error Error message if the operation failed str
video_out Final video (with attached audio), as a path or data URI. str (file)

Possible use case

Add Voiceover: Combine generated voiceover audio with video content for narrated videos.

Background Music: Add music tracks to silent videos or replace existing audio.

Audio Replacement: Swap the audio track of a video for localization or accessibility.


Loop Video

What it is

Block to loop a video to a given duration or number of repeats.

How it works

This block extends a video by repeating it to reach a target duration or number of loops. Set duration to specify the total length in seconds, or use n_loops to repeat the video a specific number of times.

The looped video is seamlessly concatenated and can be output as a file path or base64 data URI.

Inputs

Input Description Type Required
video_in The input video (can be a URL, data URI, or local path). str (file) Yes
duration Target duration (in seconds) to loop the video to. If omitted, defaults to no looping. float No
n_loops Number of times to repeat the video. If omitted, defaults to 1 (no repeat). int No
output_return_type How to return the output video. Either a relative path or base64 data URI. "file_path" | "data_uri" No

Outputs

Output Description Type
error Error message if the operation failed str
video_out Looped video returned either as a relative path or a data URI. str

Possible use case

Background Videos: Loop short clips to match the duration of longer audio or content.

GIF-Like Content: Create seamlessly looping video content for social media.

Filler Content: Extend short video clips to meet minimum duration requirements.


Media Duration

What it is

Block to get the duration of a media file.

How it works

This block analyzes a media file and returns its duration in seconds. Set is_video to true for video files or false for audio files to ensure proper parsing.

The input can be a URL, data URI, or local file path. The duration is returned as a float for precise timing calculations.

Inputs

Input Description Type Required
media_in Media input (URL, data URI, or local path). str (file) Yes
is_video Whether the media is a video (True) or audio (False). bool No

Outputs

Output Description Type
error Error message if the operation failed str
duration Duration of the media file (in seconds). float

Possible use case

Video Processing Prep: Get video duration before deciding how to loop, trim, or synchronize it.

Audio Matching: Determine audio length to generate matching-length video content.

Content Validation: Verify that uploaded media meets duration requirements.