← back to Animate Museum Posts
tasks/prd-museum-art-bot.md
79 lines
# PRD: Museum Art Animation Bot
## Introduction
Automated bot that animates 50 famous public domain artworks with AI morphing effects (cats/dogs transform, butterflies emerge) and motion effects (waves crash, stars swirl), posts to X.com @goodquestionai every 20 minutes continuously with 1s branded intro/outro.
## Goals
- 50 famous paintings rotating indefinitely every 20 mins
- AI morphing (Kling/Minimax) with SVD motion fallback
- 1s intro + 1s outro GoodQuestion.AI branding
- Full admin dashboard (view, delete, reschedule, add, edit, pause/resume)
- PostgreSQL scheduling with video verification
- Verify animations are ACTUALLY morphing via video recording
## User Stories
### US-001: 50 Famous Paintings Library
Add array of 50 public domain paintings with title, artist, year, museum, imageUrl.
### US-002: AI Morphing Animation
Use Kling/Minimax with prompts: "pitbull morphs into cat", "butterflies emerge". Verify video shows actual transformation.
### US-003: Motion Animation Fallback
SVD with motion_bucket_id=255 when morphing fails. Verify visible motion.
### US-004: 1s Branded Intro/Outro
FFmpeg 1s intro "GoodQuestion.AI" + 1s outro "@goodquestionai"
### US-005: PostgreSQL Schema
scheduled_posts table with status, tweet_id, video_path, etc.
### US-006: Content Generator
Pre-generate all 50 videos, schedule every 20 mins rotating.
### US-007: Scheduled Poster
Check every minute, post when scheduled_time <= NOW()
### US-008: Dashboard View
Grid with thumbnails, status badges, hover preview at port 7890
### US-009: Dashboard Delete
Delete button with confirmation, removes DB + video file
### US-010: Dashboard Reschedule
Time picker to change scheduled_time
### US-011: Dashboard Add Posts
Form to add custom artwork URL
### US-012: Dashboard Edit
Edit title/artist/year/museum
### US-013: Dashboard Pause/Resume
Global + individual post pause
### US-014: Twitter Posting
twitter-api-v2 with media upload, hashtags, alt text
### US-015: Video Verification
Record/screenshot each video to verify morphing is working
## Functional Requirements
- FR-1: 50 paintings array in src/artworks.js
- FR-2: Morphing via Kling prompt-based animation
- FR-3: Fallback to SVD motion_bucket_id=255
- FR-4: 1s FFmpeg intro/outro
- FR-5: PostgreSQL scheduled_posts table
- FR-6: Content generator service
- FR-7: Poster service checks every minute
- FR-8: Express dashboard on port 7890
- FR-9: CRUD operations on dashboard
- FR-10: Continuous rotation, never stops
- FR-11: Video verification system
## Non-Goals
- No auth on dashboard
- No multi-platform
- No audio
- No analytics