arch-video-cut
Automatic Architecture Video Editing Workflow with Self-Learning Preferences
Description
Automatically complete the full architecture video editing workflow: multi-video merging, speech-to-text subtitles, background music mixing, and dual output (landscape + portrait). Built-in self-learning system remembers your editing preferences.
Core Features:
- π¬ Auto merge multiple videos + duration compression
- ποΈ Speech transcription or custom subtitles
- π΅ Smart background music generation + mixing
- π± Dual output: landscape (16:9) + portrait (3:4)
- π§ Self-evolving preference system
Usage
Quick Start
cd ~/.openclaw/workspace/skills/arch-video-cut
python3 scripts/full_workflow.py
Prerequisites
- Install dependencies:
brew install ffmpeg-full # Required for libass subtitle support
pip3 install faster-whisper # Optional: for speech transcription
- Prepare materials:
- Audio file:
~/Desktop/ζ°ε½ι³ XX.m4a(narration voiceover) - Video folder:
data/m1/(architecture video clips to merge)
- Configure preferences (optional):
python3 scripts/manage_preferences.py set
Commands
| Command | Description |
|------|------|
| python3 scripts/full_workflow.py | Execute full editing workflow |
| python3 scripts/manage_preferences.py show | View current preferences |
| python3 scripts/manage_preferences.py set | Interactive preference editor |
| python3 scripts/manage_preferences.py reset | Reset to defaults |
Configuration
Preferences
Edit config/user_preferences.json or run manage_preferences.py set:
{
"video": {
"target_duration": 20.0, // Target duration in seconds
"vertical_format": "3:4", // Portrait aspect ratio
"vertical_resolution": "1080x1440"
},
"subtitles": {
"horizontal_font_size": 14, // Landscape font size (px)
"vertical_font_size": 10, // Portrait font size (px)
"font_name": "STHeiti", // Font family
"auto_wrap": true, // Auto word wrap
"margin_v": 30 // Bottom margin (px)
},
"audio": {
"background_music_volume": 0.15, // BGM volume (0-1)
"fade_in_duration": 2, // Fade-in duration (sec)
"fade_out_duration": 2 // Fade-out duration (sec)
}
}
Custom Subtitles
Edit the subtitles_text array in transcribe_audio() function:
subtitles_text = [
"These six renovation projects were transformed from abandoned schools",
"Historic buildings, red brick houses, tile-roof homes, single-story factories, and rural self-built houses",
"Through minimalist design approaches and low-cost renovation strategies",
"Giving old buildings new life",
"While balancing contemporary aesthetics and market demands",
]
Output
Output location: data/ folder
| File | Description |
|------|------|
| edited_video_final_with_subtitles.mp4 | Landscape version (16:9) |
| edited_video_final_with_subtitles_3x4.mp4 | Portrait version (3:4) |
Example output:
β
All done!
π Output: data/edited_video_final_with_subtitles.mp4
π Size: 16.0MB
π¬ Duration: 20.04 seconds
Workflow
1. Merge videos β Compress to target duration
2. Generate subtitles β Allocate timeline based on audio duration
3. Generate BGM β Piano chords + fade in/out
4. Mix audio β Voiceover + background music
5. Burn subtitles β Landscape + Portrait versions
Total processing time: ~2-3 minutes (depends on video count and duration)
Self-Learning
Built-in preference learning system automatically records your editing habits:
- π Saves configuration after each edit
- π Keeps last 20 adjustment records
- π Auto-applies preferences on next run
- ποΈ Modify anytime via
manage_preferences.py
View learning history:
python3 scripts/manage_preferences.py show
Examples
Example 1: Quick Edit
# Place 5 video clips in data/m1/
# Place voiceover audio at ~/Desktop/ζ°ε½ι³ 74.m4a
cd ~/.openclaw/workspace/skills/arch-video-cut
python3 scripts/full_workflow.py
Example 2: Adjust Font Size
# Interactive modification
python3 scripts/manage_preferences.py set
# Input: horizontal font size 18px
# Re-edit with new font automatically applied
python3 scripts/full_workflow.py
Example 3: Create 30-Second Version
# Modify preference
python3 scripts/manage_preferences.py set
# Input: target duration 30 seconds
# Edit
python3 scripts/full_workflow.py
Troubleshooting
β ffmpeg-full not found
brew install ffmpeg-full # Required for libass subtitle support
β Subtitles not showing
Check if ffmpeg-full is installed (system ffmpeg doesn't support libass)
β Transcription failed
pip3 install faster-whisper
# Or skip transcription and edit subtitle text directly in script
β Wrong video aspect ratio
Modify vertical_format in config/user_preferences.json
Files
arch-video-cut/
βββ SKILL.md # This file
βββ SELF_LEARNING_GUIDE.md # Self-learning detailed guide
βββ README.md # Quick start guide
βββ config/
β βββ user_preferences.json # User preferences
βββ scripts/
β βββ full_workflow.py # Main editing script
β βββ preference_learner.py # Preference learner
β βββ manage_preferences.py # Preference manager
βββ data/
βββ m1/ # Input video folder
βββ temp_edit/ # Temporary files
βββ *.mp4 # Output videos
Version
v1.0.0 - 2026-03-18
- β Multi-video merge + duration compression
- β Custom subtitle text
- β Background music generation + mixing
- β Landscape + Portrait dual output
- β Self-evolving preference system
Author
WildUrban Architect - Linwangming
Website: http://www.ual-studio.com/
Make tools adapt to you, not you to tools. π§