| name | tweetscape-narrator |
| description | David Attenborough-style nature documentary narration of social media feeds.
Fetches posts from Bluesky, analyzes the "digital ecosystem," generates narration,
synthesizes voice with ElevenLabs, and renders a documentary-style video with Remotion.
|
| compatibility | Created for Zo Computer |
| metadata | {"author":"rc2.zo.computer","category":"Community","display-name":"Tweetscape Narrator","emoji":"🎬"} |
Tweetscape Narrator
Creates nature documentary-style videos about social media users' feeds, narrated in the style of David Attenborough.
Quick Start (Full Video)
cd Skills/tweetscape-narrator
bun run scripts/generate-video.ts --handle norvid-studies.bsky.social
This runs the full pipeline:
- Ingest — Fetch posts, capture screenshots
- Script — Generate structured narration with scene markers
- Record — Synthesize voice with ElevenLabs (includes timestamps)
- Render — Create documentary video with Remotion
Interactive Workflow (Recommended)
For better results, run each step manually with review:
bun run scripts/ingest.ts --handle <handle> --count 30
bun run scripts/script-narration.ts --manifest <dir>/manifest.json
bun run scripts/record-audio.ts --script <dir>/script.json
bun run scripts/render-video.ts --project-dir <dir>
Storyboard Format
The storyboard.md should look like this:
# 🎬 The Digital Habitat of <name>
**Subject:** @handle
**Estimated Duration:** ~90 seconds
**Scenes:** 5
---
## Scene 1: INTRO
**Visual Direction:** Wide shot of profile

> *"Narration text for intro scene..."*
---
## Scene 2: <behavior_name>
**Visual Direction:** Close-up on posts

> *"Narration text for this scene..."*
**Featured Posts:**
1. *"Post text excerpt..."*
This lets you see exactly which screenshots will appear with which narration, and catch issues before audio/video generation.
Audio Only (Original Mode)
bun run scripts/narrate.ts --handle someone.bsky.social
Add --text-only to skip voice synthesis.
Options
| Flag | Description |
|---|
--handle, -h | Bluesky handle (required) |
--count, -c | Number of posts to fetch (default: 30) |
--skip-screenshots | Skip screenshot capture |
--audio-only | Stop after audio (skip video render) |
--output, -o | Output path for final video |
Requirements
ELEVENLABS_API_KEY — For voice synthesis. Add in Settings > Developers.
ANTHROPIC_API_KEY — For narration generation (already configured)
Output Structure
output/<handle>_<timestamp>/
├── manifest.json # Ingested posts + metadata
├── screenshots/ # Post screenshots
├── script.json # Structured narration
├── storyboard.md # Visual review document (create manually)
├── narration.mp3 # Voice audio
├── narration-timestamps.json # Word-level timing
└── video.mp4 # Final documentary video
Video Specs
- Resolution: 1920x1080 (16:9)
- Frame rate: 30fps
- Format: MP4 (H.264)
- Audio: AAC
Tips for Good Results
- Vary intro/conclusion phrasing — Check previous scripts to avoid repetitive openings like "In the vast digital ecosystem..."
- Review storyboard before audio — ElevenLabs costs money; catch script issues early
- Match screenshots to narration — The
relatedPostIndices in script.json control which posts appear during each scene
Future Ideas