persona.yaml options
这一页还没有中文版,下面是英文原文。
Everything that is taste rather than technique lives in one file. Copy the example and edit it:
cp persona.example.yaml persona.local.yaml # in the skill folder; git-ignoredThe Mac app keeps the same settings under Settings; the skill reads persona.local.yaml. Any key you leave out keeps the default shown here.
Creator persona: every taste/brand/platform default the workflows read. Copy to persona.local.yaml (gitignored) and edit; it overrides these keys.
Sections
Section titled “Sections”| Section | What it sets | Keys |
|---|---|---|
creator |
Your name and handle (covers, end cards) and the language you speak in your videos. | name, handle, language |
platforms |
Default platform and per-platform overrides deep-merged over the built-in profiles. | default, xiaohongshu, youtube |
speed |
Playback rates used when you just say “speed it up” (hook, body, B-roll). | hook, body, fast_hook, fast_body, b_roll, cjk_max_intelligible |
audio |
Delivery loudness, narration and music levels, pause squeezing. | loudness_lufs, voice_lufs, music_lufs, pause_squeeze, pause_threshold |
export |
Frame rate, quality, audio bitrate, colour tags and the H.264 encoder. | fps, crf, audio_bitrate, colour |
style |
The design theme every overlay, card and caption uses. | theme |
brand |
Your ink and ground colours. | ink, ground |
fonts |
Your own font files per role (cjk, cjk-bold, cjk-serif, serif, mono…), including one face of a .ttc. | |
subtitles |
Caption line length, keyword highlight markup and ASR term fixes. | max_cjk_chars, max_en_chars, highlight_markup, term_fixes |
voice |
Voice rules for scripts and post copy. | persona, rules |
publish |
Default hashtags, named tag sets and the chapter line format. | tags, tag_sets, chapter_line |
intake |
How the planner treats materials (for example burned-in captions). | burned_captions |
cleanup |
Default cleanup profile, crossfade, extra fillers and words never to cut. | profile, crossfade, fillers_extra, never_cut |
formats |
recurring formats (python -m vstudio.formats list): first-pass defaults per kind of post. |
Full example, section by section
Section titled “Full example, section by section”creator
Section titled “creator”creator: name: "" # used on covers/end cards when set handle: "" language: zh # subtitle + caption language for the creator's own speechplatforms
Section titled “platforms”platforms: # Full per-platform profiles (canvas, UI safe zones, caption band/size, length, LUFS, encode, cover, # title/description limits) live in lib/vstudio/platform.py (sources: references/PLATFORMS.md). # Anything under platforms.<name> is deep-merged over those defaults; per-orientation overrides go # under platforms.<name>.orientations.<vertical|full|horizontal>. default: xiaohongshu # xiaohongshu | douyin | tiktok | youtube | youtube-shorts | bilibili xiaohongshu: post_shape: vertical # shape when only "小红书" is said (intake / plans): vertical = 3:4 (1080x1440), full = 9:16 title_max: 20 # 小红书 counts CJK = 1, latin/digit/space = 0.5 (vstudio.config.xhs_len) cover_aspect: "3:4" # vertical posts; horizontal posts show a 4:3 centre crop safe_zone: {top: 240, bottom: 1660, right_lower_keepout: 160} # legacy form, 1080x1920 ("full") canvas # orientations: # vertical: {caption: {band: [1060, 1260], size: [56, 76]}} # e.g. bigger captions on 3:4 youtube: title_max: 100 cover_aspect: "16:9" # douyin: # loudness: {lufs: -12, tp: -1.0} # a hotter short-form master, if you prefer # length: {sweet: [20, 45]}speed: # playback rates used when the creator just says "speed it up" hook: 1.3 body: 1.1 fast_hook: 1.6 fast_body: 1.3 b_roll: 1.1 # inserted footage (e.g. a highlights montage) cjk_max_intelligible: 1.4audio: loudness_lufs: -14 # delivery loudness (two-pass loudnorm) voice_lufs: -16 # narration stem before mixing music_lufs: -30 # bed level before carving under the voice pause_squeeze: 0.06 # 气口 target gap in seconds pause_threshold: 0.35 # gaps longer than this get squeezedexport
Section titled “export”export: fps: 30 crf: 18 # h264_encoder: libx264 # libx264 | h264_videotoolbox | h264_mf; env VSTUDIO_H264_ENCODER wins (lib/vstudio/h264.py) audio_bitrate: 192k colour: bt709style: theme: editorial # editorial | mono | soft | night | xhs-pop (classic = the old red look); see # references/STYLE_RULES.md. Tokens can be tinted here, e.g. accent: "#3E5C76" # Per client: client.yaml theme; per recipe: the project's theme param; per output: # the output-edit `theme` op ("换成更高级的配色").brand: # accent / highlight follow style.theme. Setting brand.accent / highlight WITHOUT a style.theme keeps the # old look (theme classic with these colours), e.g. accent: "#FF2442", highlight: "#FFD60A" ink: "#ECEEF2" ground: "#0B1020" # premium dark plate # panel_theme: notes-red # legacy notes panel (notes-red | notes-yellow | teal | navy); default = the theme's cardfonts: {} # override any role with your own file, e.g. cjk-bold: ~/Fonts/MyFont.ttfsubtitles
Section titled “subtitles”subtitles: max_cjk_chars: 18 max_en_chars: 90 highlight_markup: "【】" # 【term】 is emphasised the theme's way (marker band / accent), one per line term_fixes: {} # ASR corrections, e.g. {"cloud code": "Claude Code"}voice: # style rules for scripts and post copy (see workflows/preproduction) persona: "practitioner sharing what they figured out" rules: - no em-dashes - no parentheses in spoken lines - one 干货 reframe per piece - no generic CTApublish
Section titled “publish”publish: tags: [] # default hashtags appended to post copy (post_body use_persona_tags=True) tag_sets: {} # named alternatives picked per post with tag_set:, e.g. {art: [看展, 艺术]} # a post/spec can also set use_persona_tags: false to use only its own tags chapter_line: "时间线在下面,按需跳👇"intake
Section titled “intake”intake: # one sentence + materials -> plan (python -m vstudio.intake) burned_captions: band # a finished edit with burned-in captions, cut again: band = crop the old captions off, # picture in a band, new captions below; keep = leave the old captions, add nonecleanup
Section titled “cleanup”cleanup: # shared 气口 / filler / repeat tool (python -m vstudio.cleanup, references/CLEANUP.md) profile: standard # default profile: gentle | standard | tight (vlog / photo-story speech clips use gentle) crossfade: 0.02 # seconds (20 ms) equal-power crossfade at every join; keep within 0.01-0.03 fillers_extra: [] # your own 口头禅, treated like 那个 / 就是, e.g. [其实, 对不对] never_cut: [] # tokens never flagged as filler / repeat, e.g. [然后] # policy: true # answer low-risk confirm edits automatically (batch stages do by default); learned # # answers live in ~/.config/vstudio/cleanup_policy.json (or policy_file: <path>)formats
Section titled “formats”formats: {} # recurring formats (python -m vstudio.formats list): first-pass defaults per kind of post.