视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
tweetscape-narrator【文档与办公】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.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Creates nature documentary-style videos about social media users' feeds, narrated in the style of David Attenborough.
cd Skills/tweetscape-narrator
bun run scripts/generate-video.ts --handle norvid-studies.bsky.social
This runs the full pipeline:
For better results, run each step manually with review:
# 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: 
# - 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>
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.
bun run scripts/narrate.ts --handle someone.bsky.social
Add --text-only to skip voice synthesis.
| 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 |
ELEVENLABS_API_KEY — For voice synthesis. Add in Settings > Developers.ANTHROPIC_API_KEY — For narration generation (already configured)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
relatedPostIndices in script.json control which posts appear during each scene