arch-video-cut

$npx mdskill add aAAaqwq/AGI-Super-Team/arch-video-cut

Edit architecture videos with auto-merging, subtitles, and music.

  • Merges clips, adds speech-to-text subtitles, and mixes background music.
  • Depends on ffmpeg-full for subtitles and faster-whisper for transcription.
  • Uses a self-learning system to remember and apply user editing preferences.
  • Delivers dual-format outputs: landscape and portrait video files.

SKILL.md

.github/skills/arch-video-cutView on GitHub ↗
---
name: arch-video-cut
description: Automatic architecture video editing workflow with self-learning preferences
---

# 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

```bash
cd ~/.openclaw/workspace/skills/arch-video-cut
python3 scripts/full_workflow.py
```

### Prerequisites

1. **Install dependencies:**
```bash
brew install ffmpeg-full  # Required for libass subtitle support
pip3 install faster-whisper  # Optional: for speech transcription
```

2. **Prepare materials:**
- Audio file: `~/Desktop/新录音 XX.m4a` (narration voiceover)
- Video folder: `data/m1/` (architecture video clips to merge)

3. **Configure preferences (optional):**
```bash
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`:

```json
{
  "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:

```python
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:**
```bash
python3 scripts/manage_preferences.py show
```

---

## Examples

### Example 1: Quick Edit
```bash
# 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
```bash
# 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
```bash
# Modify preference
python3 scripts/manage_preferences.py set
# Input: target duration 30 seconds

# Edit
python3 scripts/full_workflow.py
```

---

## Troubleshooting

### ❌ ffmpeg-full not found
```bash
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
```bash
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._ 🧠

More from aAAaqwq/AGI-Super-Team

SkillDescription
a-fund-monitor监控 A 股基金实时估值与盘后净值,自动判断交易日并生成提醒或分析。
add-leadAdd company/person/relationship to CRM
ads-agentAI-агент для управления Facebook рекламой. Вызывай для анализа, оптимизации, создания кампаний и отчётов.
afrexai-compliance-auditRun internal compliance audits against major governance and security
afrexai-personal-financeComplete personal finance system — budgeting, debt payoff, investing, tax optimization, net worth tracking, and financial independence planning. Use when managing money, building wealth, paying off debt, planning retirement, or optimizing taxes. Zero dependencies.
after-salesUse when managing post-purchase experience, building customer loyalty, or increasing repeat purchases
agent-contactsAI agent contacts — add, list, remove MCP contacts. Use when someone gives an agent URL, or when you need to view/remove contacts.
agent-model-switcher批量查看和切换子 agent 的模型配置,用于统一调整多 agent 的 provider/model 设置。
agent-patternsFormat SPAWN REQUEST messages to launch parallel agents, generate structured agent status reports, and define communication protocols within the sprint system. Use when the user needs to coordinate multiple agents, format spawn requests, produce agent reports, or establish inter-agent communication patterns.
agent-task-confirmUse when confirming whether a dispatched agent task was actually received, activated, and progressing after sessions_send or other task handoff actions.