---
name: cloudinary-public-link
description: Uploads a finished video from Claude's workspace to Cloudinary and returns a permanent public .mp4 link, so Buffer (or anything else) can post it. Use when an edited video needs a public link.
---

# Cloudinary public link

> Free skill from Clone Labs · clonelabs.in/guides/ai-video-autopilot/
> Needs **Allow network egress** turned on in Claude (Settings → Capabilities) and a free Cloudinary account with an unsigned upload preset.
> ✏️ Put your Cloudinary cloud name and upload preset in the settings table below.

## Job
The edited video only exists inside the Claude chat, and Buffer can only post a video from a public web link. Upload the finished video to Cloudinary and return its permanent public .mp4 link. Nothing else: no editing, no captions, no posting.

## Settings ✏️ (change these)
| Setting | Value |
|---|---|
| Cloud name | `[your-cloud-name]` (shown on your Cloudinary dashboard) |
| Unsigned upload preset | `[your-preset-name]` |
| Folder | `reel-autopilot` |

**If the settings above are still placeholders:** ask the user for their cloud name and the name of an **unsigned** upload preset, and tell them to paste both into this file. (To make one: Cloudinary → Settings → Upload presets → Add upload preset → Signing mode: Unsigned → folder `reel-autopilot` → Save.)

## Steps
1. Check the file: `final-<topic-slug>.mp4` exists in the workspace and `ffprobe` shows a video stream and a duration.
2. Upload it from the workspace:
   `curl -s -X POST "https://api.cloudinary.com/v1_1/<cloud name>/video/upload" -F "file=@final-<topic-slug>.mp4" -F "upload_preset=<preset>" -F "folder=reel-autopilot" -F "public_id=final-<topic-slug>"`
3. Take `secure_url` from the reply. It must start with `https://res.cloudinary.com/` and end in `.mp4`.
4. Reply in one line with the link. When run by the reel autopilot, pass it to the scheduling step.

## If something goes wrong
- **Connection or "network" errors:** tell the user to turn on **Allow network egress** in Settings → Capabilities, then try again.
- **"Upload preset must be whitelisted for unsigned uploads" or similar:** the preset is signed. Ask the user to make an **unsigned** one.
- **Free plan limit reached:** tell the user.
- **Still failing:** give the user the edited video file and say: "Upload this to Buffer yourself and paste in the caption."

## Rules
- Never delete anything in the user's Cloudinary account.
- Never put API keys or secrets in this file or in the chat. The unsigned preset needs no secret.
- One upload per video. If an upload fails, say why before trying again.
