Skip to content
Back to skills

Tweetscape Narrator

ASecurity

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.

  • 11 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 10, 2026
content-marketinggobashgitapi

Works with

  • api

Security analysis

A100/100

Pro scans all 17 files and shows the line behind each finding

Scanned September 10, 2026

npx -y skills add luokai0/ai-agent-skills-by-luo-kai --skill tweetscape-narrator --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tweetscape Narrator?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tweetscape Narrator
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/luokai0-tweetscape-narrator/badge)](https://www.skillsdirectory.com/skills/luokai0-tweetscape-narrator)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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)

```bash
cd Skills/tweetscape-narrator
bun run scripts/generate-video.ts --handle norvid-studies.bsky.social
```

This runs the full pipeline:
1. **Ingest** β€” Fetch posts, capture screenshots
2. **Script** β€” Generate structured narration with scene markers
3. **Record** β€” Synthesize voice with ElevenLabs (includes timestamps)
4. **Render** β€” Create documentary video with Remotion

## Interactive Workflow (Recommended)

For better results, run each step manually with review:

```bash
# 1. Ingest posts and screenshots
bun run scripts/ingest.ts --handle <handle> --count 30

# 2. Generate narration script
bun run scripts/script-narration.ts --manifest <dir>/manifest.json

# 3. ⭐ CREATE STORYBOARD FOR REVIEW (important!)
#    Write a storyboard.md file in the output directory with:
#    - Each scene's narration text as a blockquote
#    - Screenshots embedded as images using relative paths: ![](./screenshots/post_005.png)
#    - Scene metadata (visual direction, featured posts)
#    
#    This allows visual review of how narration aligns with screenshots
#    before spending time/money on audio synthesis.
#    
#    Review the storyboard.md, then revise script.json if needed
#    (especially intro/conclusion to avoid repetitive phrasing across videos)

# 4. Record audio with timestamps
bun run scripts/record-audio.ts --script <dir>/script.json

# 5. Render video
bun run scripts/render-video.ts --project-dir <dir>
```

### Storyboard Format

The storyboard.md should look like this:

```markdown
# 🎬 The Digital Habitat of <name>

**Subject:** @handle  
**Estimated Duration:** ~90 seconds  
**Scenes:** 5

---

## Scene 1: INTRO

**Visual Direction:** Wide shot of profile

![](./screenshots/profile.png)

> *"Narration text for intro scene..."*

---

## Scene 2: <behavior_name>

**Visual Direction:** Close-up on posts

![](./screenshots/post_005.png)

> *"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)

```bash
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

1. **Vary intro/conclusion phrasing** β€” Check previous scripts to avoid repetitive openings like "In the vast digital ecosystem..." 
2. **Review storyboard before audio** β€” ElevenLabs costs money; catch script issues early
3. **Match screenshots to narration** β€” The `relatedPostIndices` in script.json control which posts appear during each scene

## Future Ideas

- [ ] X/Twitter support
- [ ] Custom voice selection
- [ ] Topic-based narration (narrate a hashtag, not a user)
- [ ] Multi-user "ecosystem" view
- [ ] Background music layer
- [ ] Auto-generate storyboard.md from script.json

Files in this skill

  • DISPLAY.json239 B
  • SKILL.md4.4 KB
  • scripts/capture-screenshots.ts5 KB
  • scripts/generate-video.ts6.6 KB
  • scripts/ingest.ts6.7 KB
  • scripts/lib/versioning.ts3.2 KB
  • scripts/narrate.ts10.4 KB
  • scripts/package.json243 B
  • scripts/preview-storyboard.ts3.8 KB
  • scripts/record-audio.ts7.5 KB
  • scripts/render-video.ts9.4 KB
  • scripts/script-narration.ts8.3 KB
  • scripts/video/package.json432 B
  • scripts/video/remotion.config.ts435 B
  • scripts/video/src/TweetscapeDoc.tsx8.2 KB
  • scripts/video/src/index.tsx120 B
  • scripts/video/tsconfig.json347 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.