Available Operations
Watermark
Teaser Creation
Compression
Crop & Resize
Watermarking Content
How Watermarking Works
- Images: ImageMagick composite overlay (PNG with alpha transparency)
- Videos: FFmpeg
-filter_complex overlay(renders watermark into every frame) - Position: Bottom-right corner by default (configurable in future updates)
- Opacity: 70% by default (semi-transparent)
Applying a Watermark
Navigate to Media Library
/app/media to see your scraped content grid.Hover Over Media Item
- Crop (blue)
- Compress (violet)
- Watermark (green)
- Download (gray)
Click Watermark Button
- A
media_jobsrecord is created: - Job is enqueued to BullMQ
media-jobsqueue media-workerpicks it up and processes it using ImageMagick or FFmpeg
Monitor Progress
- Queued (gray) → Processing (spinning blue) → Complete (green)
- Images: ~100ms (near-instant)
- Videos: ~30s for a 2-minute 1080p clip (depends on length and resolution)
Download Watermarked File
- Hover over the same media item
- Click the Download button (bottom-right in the action strip)
- Browser downloads the watermarked version
Watermark Configuration
Currently, watermark settings are server-side defaults. To customize:- Go to
/admin(Directus admin panel) - Navigate to Settings → Project Settings → Files
- Upload your watermark logo (PNG with transparency recommended)
- Update
server/utils/mediaWorker/watermark.jswith your logo path and preferences
Creating Video Teasers
Teasers are 15-30 second clips extracted from full-length videos — perfect for platform previews, social media promo, or free content samples.Teaser Generation Rules
- Input: Any video in your
scraped_mediacollection - Output: 15-30s MP4 (H.264 + AAC), max 1280x720 resolution
- Logic:
- Videos < 30s → entire video is the teaser (no cutting)
- Videos 30s–2min → first 30s
- Videos > 2min → middle 30s (to avoid intros/outros)
Creating a Teaser
Open Media Library
/app/media.Filter to Videos
Select a Video
- Find the most recent video
- Queue a
create_teaserjob - Return the job ID
Wait for Processing
- Job type:
create_teaser - Status: Processing (with progress bar if available)
Download Teaser
- The teaser is saved as a new
scraped_mediarecord withmedia_type: 'teaser' - Appears in your Media Library with a Teaser badge
- Hover and click Download to save locally
Teaser Limits by Plan
Compressing Media
Compression reduces file size for faster uploads and platform delivery without visible quality loss.Compression Settings
- Images: JPEG quality 85, progressive encoding (via ImageMagick)
- Videos: H.264 CRF 23, AAC 128kbps audio (via FFmpeg)
- Target: 30-50% size reduction while maintaining visual fidelity
Compressing Files
Select Media Item
/app/media, hover over an image or video.Click Compress Button
Monitor Job
- Operation:
compress - Progress: displays percentage (if available)
- ETA: ~5-10s for images, ~20-40s for videos
Download Compressed Version
- Original: 12.4 MB
- Compressed: 5.8 MB (53% reduction)
Cropping & Resizing
Adjust aspect ratios to match platform requirements (Instagram 1:1, TikTok 9:16, YouTube 16:9, etc.).Supported Aspect Ratios
- 1:1 (Square) — Instagram feed, profile pics
- 4:5 (Portrait) — Instagram feed
- 9:16 (Vertical) — TikTok, Instagram Stories, Reels
- 16:9 (Landscape) — YouTube, Twitter, Reddit
Cropping a File
Open Media Library
/app/media.Click Crop Button
Select Aspect Ratio
- 1:1 Square
- 4:5 Portrait
- 9:16 Vertical
- 16:9 Landscape
- Custom (enter width × height)
Adjust Crop Area (Optional)
Download Cropped File
Batch Processing
Process multiple files at once to save time.Batch Watermark Example
Select Multiple Items
/app/media, hold Shift and click multiple thumbnails to select them (checkbox appears in top-left of each).Click Batch Actions
- Watermark All (green)
- Compress All (violet)
- Download All (gray zip icon)
Click 'Watermark All'
media_jobs record per selected item, all with operation: 'apply_watermark'.All jobs are enqueued to BullMQ in parallel.Monitor Job Queue
Job Status Tracking
All media operations createmedia_jobs records in Directus. You can monitor them in:
Dashboard Job Panel
At the bottom of/app/media, you’ll see:
- Active Jobs: Currently processing
- Queued Jobs: Waiting in BullMQ
- Recent Jobs: Last 10 completed (with success/failure status)
Directus Admin Panel
- Go to
/admin - Navigate to Content → Media Jobs
- View all jobs with:
- Operation type
- Status (queued, processing, complete, failed)
- Error messages (if failed)
- Job parameters (JSON)
Job Lifecycle
Error Handling
Job stuck in 'processing' for 10+ minutes
Job stuck in 'processing' for 10+ minutes
- Go to
/admin→ Media Jobs - Find the stuck job and note the ID
- SSH into your server:
pm2 restart media-worker - Manually re-queue the job via the dashboard or AI chat
Watermark job failed: 'Logo file not found'
Watermark job failed: 'Logo file not found'
server/utils/mediaWorker/watermark.js.Fix:- Upload a watermark logo to Directus Files
- Update
WATERMARK_PATHinwatermark.js - Restart the media worker:
pm2 restart media-worker
