File size: 7,930 Bytes
06ba7ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
# OpenStoryline User Guide

---

## 0. Environment Setup

See the [README](https://github.com/FireRedTeam/FireRed-OpenStoryline/blob/main/README.md) section.

## 1. Basic Usage

### 1.1 Getting Started

You can start creating in two ways:

1. **You have your own media**

   * Click the file upload button on the left side of the chat box and select your images/videos.
   * Then type your editing goal in the input field, for example: *Use my footage to edit a family vlog with an upbeat rhythm.*

2. **You don’t have media**

   * Just describe the theme/mood.
   * For example: *Help me create a summer beach travel vlog—sunny, fresh, and cheerful.*

Automatic asset retrieval is powered by [Pexels](https://www.pexels.com/). Please enter your Pexels API key in the website sidebar.

**Disclaimer:** We only provide the tool. All assets downloaded or used via this tool (e.g., Pexels images) are fetched by the user through the API. We assume no responsibility for the content of videos generated by users, the legality of the assets, or any copyright/portrait-right disputes arising from the use of this tool. Please comply with Pexels’ license when using it: [https://www.pexels.com/zh-cn/license](https://www.pexels.com/zh-cn/license)
[https://www.pexels.com/terms-of-service](https://www.pexels.com/terms-of-service)

If you just want to explore it first, you can also use it like a normal chat model, for example:

* “Introduce yourself”

<img src="https://github.com/user-attachments/assets/a7c102a0-299d-4fcb-a890-0bcb165867d2" alt="demo" width="500">

### 1.2 Editing

OpenStoryline supports **intent intervention and partial redo at any stage**. After a step completes, you can simply describe what you want to change in one sentence. The agent will locate the step that needs to be rerun, without restarting from the beginning. For example:

* Remove the clip where the camera is filming the sky.
* Switch to a more upbeat background music.
* Change the subtitle color to better match the sunset theme.

<img src="https://github.com/user-attachments/assets/18c1ac82-873d-4ced-beb3-443d0fc9192c" alt="demo" width="500">

### 1.3 Style Imitation

With the style imitation Skill, you can reproduce almost any writing style to generate copy. For example:

* Generate copy in a Shakespearean style for me.
* Mimic the tone of my social media posts.

<img src="https://github.com/user-attachments/assets/67edcb95-a71d-447c-ac13-ae28d0bbd698" alt="demo" width="500">

### 1.4 Interrupting

At any moment while the agent is running, if its behavior is not as expected, you can:

* Click the **Stop** button on the right side of the input box to stop the model reply and tool calls, **or**
* Press **Enter** to send a new prompt—the system will automatically interrupt and follow your new instruction.

Interrupting does **not** clear the current progress. Existing replies and executed tool results will be kept, and you can continue from the current state.

### 1.5 Switching Languages

Click the language button in the top-right corner of the page to switch between Chinese and English:

* The sidebar and tool-call cards will switch display language accordingly.
* The prompt language used inside tools will also switch.
* Past chat history will **not** be automatically translated.

### 1.6 Saving

After you polish a satisfying video, you can ask the agent to **summarize the editing logic** (rhythm, color tone, transition habits, etc.) and save it as your personal **“Editing Skill.”**

Next time you edit similar content, simply ask the agent to use this Skill to reproduce the style.

<img src="https://github.com/user-attachments/assets/d99faca2-233c-49d0-829e-336b2b76a46d" alt="demo" width="500">

### 1.7 Mobile Usage

**Warning: The commands below will expose your service to your local network. Use only on trusted networks. Do NOT run these commands on public networks.**

If your media is on your phone and it’s inconvenient to transfer, you can use the following steps to use the editing agent on mobile.

1. Fill in the LLM/VLM/Pexels/TTS configuration in config.toml.
2. Change your web startup command to:

   ```bash
   # Reminder: --host 0.0.0.0 exposes the service to your LAN/public network. Use only on trusted networks.
   uvicorn agent_fastapi:app --host 0.0.0.0 --port 7860
   ```

3. Find your computer’s IP address:

   * **Windows:** run `ipconfig` in Command Prompt (cmd) and locate the IPv4 address
   * **Mac:** hold **Option** and click the Wi-Fi icon
   * **Linux:** run `ifconfig` in the terminal

4. Then open the following address in your phone browser:

   ```
   {your_computer_ip}:7860
   ```

---

## 2. Advanced Usage

Due to copyright and distribution constraints, open-source resources may not be sufficient for many users’ editing needs. Therefore, we provide methods to add and build private asset libraries.

---

### 2.1 Custom Music Library

Put your private music files into:

`./resource/bgms`

Then tag your music by writing metadata into:

`./resouce/bgms/meta.json`

Restart the MCP service to apply changes.

**Tag Dimensions**

* **scene:** Vlog, Travel, Relaxing, Emotion, Transition, Outdoor, Cafe, Evening, Scenery, Food, Date, Club
* **genre:** Pop, BGM, Electronic, R&B/Soul, Hip Hop/Rap, Rock, Jazz, Folk, Classical, Chinese Style
* **mood:** Dynamic, Chill, Happy, Sorrow, Romantic, Calm, Excited, Healing, Inspirational
* **lang:** bgm, en, zh, ko, ja

**How to Tag**

* **Manual tagging:** Copy the format of other items in `meta.json` and add tags accordingly. **Note:** the `description` field is required.
* **Auto tagging:** Use `qwen3-omni-flash` for automatic tagging (requires a Qwen model API key).

Qwen3-omni labeling script:

```bash
export QWEN_API_KEY="you_api_key"
python -m scripts.omni_bgm_label
```

Auto tags may not be fully accurate. If you need strong recommendations for specific scenarios, it’s recommended to manually review the results.

---

### 2.2 Custom Font Library

Put your private font files into:

`./resource/fonts`

Then tag the fonts by editing:

`./resource/fonts/font_info.json`

Restart the MCP service to apply changes.

**Tag Dimensions**

* **class:** Creative, Handwriting, Calligraphy, Basic
* **lang:** zh, en

**How to Tag**
Currently only manual tagging is supported—edit `./resource/fonts/font_info.json` directly.

---

### 2.3 Custom Copywriting Template Library

Put your private copywriting templates into:

`./resource/script_templates`

Then tag them by writing metadata into:

`./resource/fonts/meta.json`

Restart the MCP service to apply changes.

**Tag Dimensions**

* **tags:** Life, Food, Beauty, Entertainment, Travel, Tech, Business, Vehicle, Health, Family, Pets, Knowledge

**How to Tag**

* **Manual tagging:** Copy the format of other items in `meta.json` and add tags accordingly. **Note:** the `description` field is required.
* **Auto tagging:** Use DeepSeek for automatic tagging (requires the corresponding API key).

DeepSeek labeling script:

```bash
export DEEPSEEK_API_KEY="you_api_key"
python -m scripts.llm_script_template_label
```

Auto tags may not be fully accurate. If you need strong recommendations for specific scenarios, it’s recommended to manually review the results.

---

### 2.4 Custom Skill Library

The repository includes two built-in Skills: one for writing-style imitation and another for saving editing workflows. If you want more custom skills, you can add them as follows:

1. Create a new folder under `.storyline/skills`.
2. Inside that folder, create a file named `SKILL.md`.
3. The `SKILL.md` must start with:

   ```markdown
   ---
   name: yous_skill_folder_name
   description: your_skill_function_description
   ---
   ```

   The `name` must match the folder name.
4. Then write the detailed skill content (its role setting, which tools it should call, output format, etc.).
5. Restart the MCP service to apply changes.