video-archive

star 0

Archive published videos with all assets (script, audio, project, export). Use after publishing to social media to move completed work from active folders to historical archive.

xiroicat By xiroicat schedule Updated 2/7/2026

name: video-archive description: Archive published videos with all assets (script, audio, project, export). Use after publishing to social media to move completed work from active folders to historical archive.

Video Archive

Archive published videos with complete asset bundles for historical reference.

When to Use

  • After confirming a video is published to social media
  • When cleaning up content/drafts/ and projects/ folders
  • To create a permanent record with publish URLs

Archive Structure

archive/{project-slug}/
├── production_script.md   ← Full production doc (story, scenes, timing, assets, music)
├── tts.txt                ← TTS input for all voiceovers (emotion tags, pauses)
├── audio/                 ← TTS audio files (flat)
│   ├── 001.mp3
│   ├── 002.mp3
│   └── ...
├── project.json           ← Video editor timeline only
├── assets/                ← Project-specific assets
│   └── generated/         ← AI-generated images/videos
├── exports/               ← OPTIONAL: kept only if needed
│   └── final.mp4
└── metadata.json          ← Status, dates, publish URLs

production_script.md

The complete production document containing:

  • Story structure (hook, stakes, resolution)
  • Scene breakdown with timing
  • Visual assignments (which asset for which scene)
  • Asset sources (recorded, AI-generated, playwright, stock)
  • Music track, cuts, and volume levels
  • Effects and transitions
  • Pacing notes and rationale
  • Brand compliance checklist
  • Publish URLs

tts.txt

Fish Audio input file with:

  • Emotion tags at sentence starts
  • # PAUSE: Xs comments for timing gaps
  • One line per audio segment

production_script.md Format

# Title of Video

**Duration:** 45s | **Style:** Fast-cuts | **Status:** Published

---

## Story

### Hook (0:00–0:03)
> "I forgot to design the most important moment in my app."

**Visual:** Text overlay, bold center, dark background
**Pacing:** Quick hit, 2s hold

### Stakes (0:03–0:15)
> "I'm building a quote delivery app..."

**Visual:**
- 0:03–0:06 — Phone notification (B-roll, recorded)
- 0:06–0:09 — App screenshot (playwright)

...

---

## Scene Breakdown

| Time | Voiceover | Visual | Asset | Source | Duration |
|------|-----------|--------|-------|--------|----------|
| 0:00 | "I forgot..." | Text overlay | — | AI text | 2s |
| 0:02 | — | Phone notif | phone.mp4 | Recorded | 3s |

---

## Audio

### Voiceover
- **Segments:** 12 files
- **Total:** 38s speech + 7s pauses

### Music
- **Track:** calm-piano.mp3
- **Source:** Artlist
- **Cuts:** fade-in 0:00, beat-sync 0:15, fade-out 0:42

---

## Assets

| Asset | Type | Source | License |
|-------|------|--------|---------|
| phone.mp4 | B-roll | Recorded | Own |
| xiroi.png | Screenshot | playwright | Own |
| bg.png | Background | AI (Grok) | Generated |

---

## Effects & Pacing

- Avg cut: 3.2s
- Pattern interrupts: 8
- Style: Fast hook, slow resolution

---

## Brand Compliance

- [x] Colors: #F7F5F0, #121212
- [x] Fonts: Playfair (quotes), Noto Serif (text)
- [x] Red accent: <5%

metadata.json Format

{
  "slug": "2026-01-21_forgot_to_design_notification_tap_flow",
  "title": "I forgot to design the notification tap flow",
  "status": "published",
  "dates": {
    "scriptCreated": "2026-01-21T10:00:00Z",
    "ttsGenerated": "2026-01-21T14:00:00Z",
    "projectCreated": "2026-01-21T15:00:00Z",
    "exported": "2026-01-25T10:00:00Z",
    "published": "2026-01-25T12:00:00Z",
    "archived": "2026-01-25T13:00:00Z"
  },
  "publish": {
    "platforms": ["tiktok", "instagram"],
    "urls": {
      "tiktok": "https://www.tiktok.com/@username/video/123456",
      "instagram": "https://www.instagram.com/reel/ABC123/"
    }
  },
  "stats": {
    "duration": 45,
    "audioSegments": 12,
    "clips": 24
  },
  "tags": ["building-in-public", "app-development", "ux-design"]
}

Archive Workflow

1. Confirm Publication

Before archiving, verify:

  • Video is exported (projects/{slug}/exports/*.mp4 exists)
  • Video is published to at least one platform
  • Collect publish URLs from user

2. Gather Assets

Collect from active folders:

Source Destination Required
content/drafts/{slug}.md Generate archive/{slug}/production_script.md Yes
content/drafts/{slug}.txt archive/{slug}/tts.txt Yes
content/drafts/{slug}.mp3 archive/{slug}/audio/full.mp3 If exists
content/drafts/{slug}_segments/ archive/{slug}/audio/segments/ Yes
projects/{slug}/project.json archive/{slug}/project.json Yes
projects/{slug}/assets/generated/ archive/{slug}/assets/generated/ If exists
projects/{slug}/exports/ archive/{slug}/exports/ Optional

Note: production_script.md is generated by combining:

  • Original script (content/drafts/{slug}.md)
  • Project timeline analysis (projects/{slug}/project.json)
  • Asset inventory
  • Music and effects data

3. Create Metadata

Generate metadata.json with:

  • Dates from file timestamps
  • Publish URLs from user input
  • Stats calculated from project.json

4. Clean Up Active Folders

After successful archive:

  • Remove from content/drafts/ (script, TTS, audio files)
  • Remove from projects/ (project folder)
  • Keep content/drafts/.gitkeep intact

MCP Tools

Tool Purpose
video_archive Archive a published project
video_list_archived List all archived projects
video_get_archived Get archived project details

video_archive

{
  slug: string,              // Project slug (e.g., "2026-01-21_forgot_to_design...")
  publishUrls: {             // Required: at least one platform
    tiktok?: string,
    instagram?: string,
    youtube?: string,
    twitter?: string
  },
  tags?: string[],           // Optional: content tags for search
  cleanup?: boolean          // Default: true — remove from active folders
}

video_list_archived

{}
// Returns: [{ slug, title, publishedAt, platforms, duration }]

Example Usage

Archive After Publishing

User: "I just published the notification tap flow video to TikTok and Instagram"

AI: Let me archive that project.

1. Collect publish URLs:
   - TikTok: https://www.tiktok.com/@xiroi/video/123
   - Instagram: https://www.instagram.com/reel/ABC/

2. Call video_archive:
   {
     slug: "2026-01-21_forgot_to_design_notification_tap_flow",
     publishUrls: {
       tiktok: "https://www.tiktok.com/@xiroi/video/123",
       instagram: "https://www.instagram.com/reel/ABC/"
     },
     tags: ["ux-design", "building-in-public"]
   }

3. Confirm:
   - Archived to: archive/2026-01-21_forgot_to_design_notification_tap_flow/
   - Cleaned up: content/drafts/ and projects/

List Archived Videos

User: "What videos have we published?"

AI: Let me check the archive.

[Calls video_list_archived]

Published videos:
| Date | Title | Platforms | Duration |
|------|-------|-----------|----------|
| 2026-01-25 | I forgot to design... | TikTok, Instagram | 45s |
| 2026-01-18 | Small details polish | TikTok | 30s |

Retrieval for Reference

Archived projects can be referenced for:

  • Reusing successful scripts as templates
  • Checking past project.json structures
  • Finding publish URLs for analytics
  • Building a content calendar history
User: "Show me the script from the notification tap video"

AI: [Reads archive/2026-01-21_.../script.md]

Related Skills

  • video-workflow — Full production pipeline
  • video-studio — MCP tools for editing
  • create-social-media-content — Script writing

Status Values

Status Meaning
script_draft Script in progress
tts_pending Waiting for voiceover
tts_complete Audio ready
editing Video editing in progress
exported Video rendered, not published
published Posted to social media
archived Moved to archive/ folder
Install via CLI
npx skills add https://github.com/xiroicat/content-studio --skill video-archive
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator