xiaohongshu
xiaohongshu
hf-papers-to-video
Transform Hugging Face Daily Papers into professional video summaries with AI-generated narration, synchronized visuals, and smooth animations. Fully automated pipeline from paper extraction to final video export.
Full skill instructions
Transform Hugging Face Daily Papers into professional, shareable video summaries with synchronized narration and smooth animations.
┌─────────────────────────────────────────────────────────────┐
│ HF PAPERS VIDEO PIPELINE │
├─────────────────────────────────────────────────────────────┤
│ Extract → Script → TTS → Render → Export │
│ (PDF) (JSON) (MP3) (MP4) (Compressed) │
└─────────────────────────────────────────────────────────────┘
# macOS
brew install ffmpeg node python3
# Node.js packages
npm install -g @remotion/cli remotion
# Python packages
pip install PyMuPDF Pillow beautifulsoup4 requests
# Doubao/Volcano TTS (required for narration)
export VOLCANO_TTS_APPID="your_app_id"
export VOLCANO_TTS_ACCESS_TOKEN="your_access_token"
export VOLCANO_TTS_SECRET_KEY="your_secret_key"
cd skills/hf-papers-to-video
python scripts/extract_papers.py --date 2026-02-01 --limit 10
python scripts/filter_images.py --min-width 150 --min-height 100
python scripts/generate_script.py --style news-briefing
python scripts/generate_tts.py --voice zh_male_jieshuoxiaoming_moon_bigtts
npm run render
ffmpeg -i output/final.mp4 -b:v 600k -b:a 80k output/video.mp4
hf-papers-to-video/
├── scripts/
│ ├── extract_papers.py # PDF download & text extraction
│ ├── filter_images.py # Smart image filtering
│ ├── generate_script.py # Script generation
│ ├── generate_tts.py # TTS audio generation
│ └── render.sh # Render pipeline
├── src/
│ ├── components/
│ │ ├── ImageCard.tsx # Animated image component
│ │ ├── Typography.tsx # Text components
│ │ └── Animations.tsx # Animation utilities
│ ├── scenes/
│ │ └── SceneTemplate.tsx # Scene renderer
│ └── index.tsx # Composition registry
├── scenes.json # Scene configuration
├── audio-durations.json # Audio sync data
└── output/ # Generated videos
{
"id": "intro",
"variant": "hero",
"layout": {
"imageLayout": "background",
"imageAnimation": "zoom"
},
"title": "AI Research Daily",
"subtitle": "Latest breakthroughs in ML"
}
{
"id": "paper-01",
"variant": "content-rich",
"layout": {
"imageLayout": "side-right",
"imageStyle": "card",
"imageAnimation": "float"
},
"title": "Paper Title",
"paragraphs": ["Key insight..."],
"bulletPoints": ["Point 1", "Point 2"],
"stat": { "value": "175%", "label": "Improvement" }
}
| Animation | Description | Use Case |
|---|---|---|
zoom | Slow scale 1.0→1.1 | Background images |
float | Smooth sine wave ±8px | Side panel images |
fade | Opacity 0→1 | Inline images |
slide | Horizontal entrance | Transitions |
The skill uses multi-stage filtering to remove irrelevant images:
def is_likely_figure(img):
# Size filtering
if width < 150 or height < 100: return False # Icons
if width > 2000 or height > 1500: return False # Anomalies
# Content analysis
content_ratio = non_blank_pixels / total_pixels
if content_ratio < 0.05: return False # Blank images
# Color diversity (filter monochrome headers)
color_ratio = unique_colors / total_pixels
if color_ratio < 0.05: return False
return True
| Voice | Type | Use Case |
|---|---|---|
zh_male_jieshuoxiaoming_moon_bigtts | News anchor | Professional briefings |
zh_female_cancan_mars_bigtts | Cheerful | Casual content |
en_male_mars_bigtts | English male | International audiences |
Duration is dynamically calculated:
const FPS = 30;
const audioDuration = getAudioDuration(scene.id); // seconds
const frames = Math.ceil(audioDuration * FPS);
Cause: Using extrapolateRight: 'repeat' for float animation
Fix: Use sine wave instead:
const floatY = Math.sin((frame % 120) / 120 * Math.PI * 2) * 8;
Cause: Layout transform + animation transform string concatenation Fix: Separate concerns:
// Layout transform (static)
<div style={{ transform: 'translateY(-50%)' }}>
{/* Animation transform (dynamic) */}
<Img style={{ transform: animTransform }} />
</div>
Solution: Two-pass compression
# Pass 1: Moderate compression
ffmpeg -i input.mp4 -b:v 1.5M output.mp4 # ~20MB
# Pass 2: Aggressive compression
ffmpeg -i output.mp4 -b:v 600k -b:a 80k final.mp4 # ~15MB
Cause: Missing Volcano Engine permissions Fix:
| Step | Duration | Output Size |
|---|---|---|
| Paper extraction | ~2 min | ~50MB (PDFs) |
| Image filtering | ~30 sec | ~25 images |
| TTS generation | ~3 min | ~5MB (audio) |
| Video rendering | ~15 min | ~60MB |
| Compression | ~15 sec | ~15MB |
Total pipeline time: ~20 minutes for 10 papers
Edit scenes.json:
{
"layout": {
"imageLayout": "side-left",
"imageStyle": "polaroid",
"accentColor": "#3b82f6"
}
}
Edit ImageCard.tsx:
// Slower animation (240 frames = 8 seconds)
const floatProgress = (frame % 240) / 240;
// Larger amplitude (±15px)
const floatY = Math.sin(floatProgress * Math.PI * 2) * 15;
Adjust scene count in generate_script.py:
MAX_PAPERS = 5 # Shorter video
SCENE_DURATION = 15 # Seconds per scene
# 1. Extract papers
python extract_papers.py
# 2. Generate thumbnail with AI
python /skills/nano-banana-pro/scripts/generate.py \
--prompt "AI research visualization, futuristic, clean"
# 3. Include in video
# 1. Get trending AI topics
python /skills/x-trends/scripts/trends.py --query "AI papers"
# 2. Filter papers by trending keywords
python extract_papers.py --filter-trending
MIT - Free for personal and commercial use.
xiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience