feat(explainer): wire export_bundle into the publish stage

Make the new PUBLISH-tier tool usable rather than dead code: add export_bundle
to the animated-explainer publish stage's tools_available, and update the
explainer publish-director skill Step 5 to call export_bundle for packaging
(passing the prepared metadata) instead of hand-creating the export tree. The
documented export layout and the no-upload caveat are kept in sync with the
tool. Other pipelines' publish stages can adopt it the same way.
This commit is contained in:
0xDevNinja
2026-06-29 15:40:59 +05:30
parent 7b1eef49f2
commit 6dc01d4e67
2 changed files with 17 additions and 5 deletions

View File

@@ -254,7 +254,7 @@ stages:
- proposal_packet
produces:
- publish_log
tools_available: []
tools_available: [export_bundle]
checkpoint_required: true
human_approval_default: true
review_focus:

View File

@@ -85,22 +85,34 @@ Each chapter maps to a script section's `start_seconds`.
### Step 5: Package Export
Create the export directory structure:
Use the `export_bundle` tool (capability `publish`) to do the packaging
deterministically — pass it the final `video_path` (from `render_report`), the
`title`, and the metadata you prepared (`description`, `tags`, `hashtags`,
`chapters`, optional `subtitles_path` and `thumbnail_path`/`thumbnail_concept`).
It lays out the export directory, writes the metadata files, and returns a
schema-valid `publish_log` (`status: "exported"`) in `data["publish_log"]` that
you persist as the stage artifact.
It produces this structure:
```
exports/
<project_name>/
video/
output.mp4 # Final rendered video
output.mp4 # Final rendered video (subtitles.srt alongside if provided)
metadata/
metadata.json # All SEO metadata
chapters.txt # Chapter markers
description.txt # Ready-to-paste description
description.txt # Ready-to-paste description (+ chapters)
tags.txt # One tag per line
thumbnails/
concept.json # Thumbnail concept (or generated image)
concept.json # Thumbnail concept (or the copied thumbnail image)
```
`export_bundle` is a local, offline packager — it does not upload. A networked
publisher (e.g. a YouTube uploader) would be a separate `publish`-capability
provider.
### Step 6: Build Publish Log
```json