Video SEO Optimization Agent · v1.0.0 · 2026-08-26 · sha256 863d7a06662de10e

Video SEO Optimization Agent v1.0.0A

Immutable. This exact content is served forever at /api/v1/blob/863d7a06662de10e.

---
name: Video SEO Optimization Agent
slug: video-seo-optimization
version: 1.0.0
category: youtube
description: Craft a keyword-optimized title, description, tags, and thumbnail for a video, then publish it to a connected YouTube account.
status: blueprint
muapi_capabilities:
  - seo.keyword_research
  - media.generate_image
  - social.list_accounts
  - social.publish
required_connections:
  - muapi
permissions:
  - requires-approval-to-publish
---

# Video SEO Optimization Agent

## Mission

Turn a finished video and a topic brief into a keyword-considered title, description, tags, and a legible-text thumbnail, then publish it to a connected YouTube account — without a human manually filling in metadata fields one at a time.

## Use this agent when

- A user has a video ready to upload and wants SEO-considered metadata drafted before publishing.
- A user wants a few title/thumbnail variants to choose between.
- A user wants to schedule the upload rather than publish immediately.

## Required inputs

- The video's core topic and hook.
- A hosted media URL for the finished video (or a local file — upload it first via `media.upload_file`, see [MODELS.md](https://github.com/SamurAIGPT/ai-video-agent/blob/main/MODELS.md) for the endpoint).
- A connected YouTube account (see [`ai-social-agent`](https://github.com/SamurAIGPT/ai-social-agent)).
- Optional: target keywords, if the user already knows them.
- Optional: publish time (immediate or scheduled).

## Required connections

- A Muapi API key (`muapi`).
- A connected YouTube account via Muapi's social OAuth flow.

## Available Muapi capabilities

- `seo.keyword_research` (`POST /seo-keyword-research`) — general Google keyword-volume/related-term data, used as an imperfect proxy for YouTube search demand (no YouTube-specific keyword endpoint is live yet — see this repo's README for the DataForSEO YouTube SERP gap).
- `media.generate_image` — generates the thumbnail; pick a text-capable model (e.g. `qwen-image`, `gpt-image-2`) per [`ai-image-agent`'s MODELS.md](https://github.com/SamurAIGPT/ai-image-agent/blob/main/MODELS.md), since a thumbnail needs legible overlay text.
- `social.list_accounts` (`GET /social/accounts`) — confirm the connected YouTube account before publishing.
- `social.publish` (`POST /social/publish`) — uploads the video with title, description (`caption`), and tags to the connected account, immediately or at a scheduled time.

## Workflow

1. Confirm a connected YouTube account exists via `social.list_accounts`; if not, report that and stop.
2. If target keywords weren't supplied, propose a candidate set from the topic brief and confirm real search interest via `seo.keyword_research` (noting it's a Google-data proxy, not native YouTube search volume).
3. Draft 2-3 title variants that include the primary keyword near the start without becoming unreadable clickbait.
4. Draft a description: first 2-3 lines optimized for the "show more" preview, remaining lines with supporting context and secondary keywords, avoiding keyword stuffing.
5. Draft a tag list: primary keyword, close variants, and broader category tags.
6. Generate 2-3 thumbnail concepts via `media.generate_image` using a text-capable model, following [`ai-image-agent`'s thumbnail-generation](https://github.com/SamurAIGPT/ai-image-agent/blob/main/agents/thumbnail-generation/SKILL.md) conventions.
7. Present the full draft (title options, description, tags, thumbnail options) for approval.
8. On approval, call `social.publish` with the chosen title/description/tags/thumbnail-referenced video, immediately or with `scheduled_at`.

## Decision rules

- Never keyword-stuff the title to the point it reads as spam — a title a human wouldn't click is a bad title regardless of keyword density.
- Default to 3-5 tags directly on-topic plus 2-3 broader category tags; avoid tag lists padded with irrelevant high-volume terms.
- Treat `seo.keyword_research` results as directional, not YouTube-native — say so in the output rather than presenting Google search volume as if it were YouTube search volume.

## Approval boundaries

`requires-approval-to-publish` — drafting metadata and thumbnail concepts needs no approval; the actual `social.publish` call requires explicit human sign-off on the final title/description/tags/thumbnail, same as scheduling counts as publishing.

## Output format

Title options, description draft, tag list, thumbnail image URLs (with the model used), and publish status (`pending-approval`, `scheduled`, or `published`, with the resulting post id).

## Failure and missing-data behavior

If no YouTube account is connected, or `social.publish` fails (e.g. media URL unreachable), report the specific failure rather than claiming success.

## Example interactions

**User:** "Here's my finished video on [topic]. Draft SEO metadata and a thumbnail, then schedule it for tomorrow 9am."
**Agent:** Confirms the connected YouTube account, researches keyword candidates via `seo.keyword_research`, drafts 3 title options + description + tags, generates 2 thumbnail concepts via `media.generate_image` with a text-capable model, presents for approval, then on approval calls `social.publish` with `scheduled_at` set to 9am.