# Download and Process Video with yt-dlp — Renderio

> Download publicly accessible videos with yt-dlp and optionally process them with FFmpeg. Use this to fetch videos from supported platforms and transform them, for example extract audio, resize, trim, or convert formats. Provide input URLs…

- Key: `renderio-download-and-process-video-with-ytdlp`
- Type: Action (Write)
- Version: 0.0.2
- App: Renderio (`renderio`) — https://pipedream.com/apps/renderio.md
- This page (HTML): https://pipedream.com/apps/renderio/actions/download-and-process-video-with-ytdlp
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/renderio/actions/download-and-process-video-with-ytdlp/download-and-process-video-with-ytdlp.mjs

## Description

Download publicly accessible videos with yt-dlp and optionally process them with FFmpeg. Use this to fetch videos from supported platforms and transform them, for example extract audio, resize, trim, or convert formats. Provide input URLs as a dictionary with `in_` prefixed keys; when processing with FFmpeg, provide output aliases with `out_` prefixes. [See the documentation](https://renderio.dev/docs/api-reference/commands/run-ytdlp-command)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `inputUrls` | `object` | Yes | Dictionary mapping input aliases to publicly accessible video URLs supported by yt-dlp. Keys must start with in_. Example: { "in_video": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }. |
| `ffmpegCommand` | `string` | No | Optional FFmpeg command to run after downloading. Use {{alias}} placeholders matching input URL keys and output file keys. Example: -i {{in_video}} -vn -acodec libmp3lame -ab 192k {{out_audio}}. |
| `outputFiles` | `object` | No | Dictionary mapping output aliases to desired output file names. Required when FFmpeg Command is set. Keys must start with out_. Example: { "out_audio": "audio.mp3" }. |
| `metadata` | `object` | No | Optional key-value metadata to attach to the command or preset execution. Example: { "job_id": "abc123" }. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "renderio",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "renderio-download-and-process-video-with-ytdlp",
  arguments: {
    inputUrls: "Input Video URLs",
    ffmpegCommand: "FFmpeg Command",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "renderio-download-and-process-video-with-ytdlp",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    renderio: { authProvisionId: "apn_xxxxxxx" },
    inputUrls: "Input Video URLs",
    ffmpegCommand: "FFmpeg Command",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "renderio-download-and-process-video-with-ytdlp",
    "configured_props": {
      "renderio": { "authProvisionId": "apn_xxxxxxx" },
      "inputUrls": "Input Video URLs",
      "ffmpegCommand": "FFmpeg Command"
    }
  }'
```

---

- App: https://pipedream.com/apps/renderio.md · All apps: https://pipedream.com/apps
