迁移可入库打包资源到 packaging

This commit is contained in:
cat-shark
2026-06-20 18:36:55 +08:00
parent 028d407a78
commit e3d4fd1aa1
41 changed files with 9810 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

@@ -0,0 +1,721 @@
{
"version": "1.2",
"timestamp": "2026-01-10T04:12:13.221Z",
"ipAgentSettings": {
"textModelKey": "builtInDoubao|doubao-seed-2-0-mini-260215",
"voiceModelKey": "",
"voicePromptId": 7,
"asrMode": "online",
"asrModelKey": "",
"voiceMode": "online",
"videoDigitalHumanModelKey": "__CLOUD__",
"scriptPrompt": "你是一个视频口播专家,擅长根据用户给的主题和关键词生成高质量的口播稿件。\n请根据以下要求生成口播稿件:\n\n1. 主题:{title}\n2. 字数:大约{count}字\n\n请确保稿件内容连贯、有吸引力,并且符合口播的风格。\n请直接输出生成的口播稿件,无需任何额外说明文字。\n\n可用变量:{title}、{count}",
"titleTagPrompt": "是短视频标题与标签助手。请基于提供的口播文案,生成一个标题和3-4个标签,输出的语言要完全是我们文案的语言格式\n- 标题不超过15个字,简洁有吸引力,不加引号,不含表情或图标字符。\n- 标签为2-6个字的中文短词,不含#、空格和表情;以主题词为主,避免冗长句。\n- 然后从文案里筛选出优秀的的词汇,必须是文案里包含的一字不差的,按照以下分类\n * 重点词/成语词:文案中的核心词汇、成语、重要概念。\n * 描述词:文案中用于描述事物特征、状态的优秀词汇。\n * 行动词:文案中表示动作、行为的优秀词汇。\n * 情感词:文案中表达情感、情绪的优秀词汇。\n\n-- 直接输出纯JSON格式,如果没有合适的词,[]格式里面可以留空,不要生凑,不要一个字的词,不要使用markdown代码块(不要用),不要附加任何说明文字。\n\n- 输出格式为:\n{\n \"title\": \"...\",\n \"tags\": [\"...\", \"...\", \"...\", \"...\"],\n \"keywords\": {\n \"重点词/成语词\": [\"...\", \"...\"],\n \"描述词\": [\"...\"],\n \"行动词\": [\"...\"],\n \"情感词\": [\"...\",]\n }\n}\n\n\n文案:<content>{{content}}</content>",
"topicRewritePrompt": "参考以下标题,帮我生成5个新的标题。\n\n参考标题:\n{{content}}\n\n要求:\n1. 保持相似的主题和风格\n2. 标题简洁有力,吸引眼球\n3. 不要添加表情符号和#标签\n4. 每个标题独立成行\n\n请直接输出5个新标题,不要编号和额外说明。\n可用变量:{{content}}",
"rewritePrompt": "# 你是一位文案改写助手,不增加表情或特殊符号,输出{{count}}字。\n原文:\n{{content}}\n\n\n ## 写作限制和特征\n -禁止输出的词:“原文”“作者”“文章”等词,攻击性强、侮辱性强的词(滚吧、找爸爸去、废物)、骂人的词(傻子、垃圾、蠢蛋),ai常用词(如“这波操作”、“666”)\n -用词口语化,句式有短句、情绪浓烈,\n -不要输出前言和介绍,也不能直白的指责。\n -写作的内容不要引用提示词的要求。\n\n ## 写作要求\n 1、第一段直接照抄原文的第一句话作为文章开头,一个字也不能改,必须控制30个字以内,绝对禁止照抄的第一句话超过30个字,超过30个字在不影响句子连贯的情况下截停。\n\n 2、后面的内容要具体叙述具体行为,每一个具体动作都不能跳过,可以直接使用原文句子,但是不能完全一致,从原文案的内容里面,用不同的角度切入叙述,确保内容完整,可以使用同义字进行替换,重组结构。\n\n 3、最后一段可以直接使用原文的最后一段,如果有身份信息的内容,就不要写出来,**例如:我是某某,后续内容主页观看。**",
"subtitleHighlightWords": "",
"bgmDirectory": "",
"enableSentimentAnalysis": false,
"sentimentModelKey": "zhipu|glm-4-flash",
"sentimentTemplate": "auto",
"sentimentEffectIntensity": 70,
"enableSentimentAnimation": true,
"sentimentColors": {
"positive": "#00FF00",
"negative": "#FF0000",
"neutral": "#FFFFFF",
"emphasis": "#FFFF00"
},
"minSubtitleDuration": 2,
"normalSubtitleX": 50,
"normalSubtitleY": 15,
"effectSubtitleX": 50,
"effectSubtitleY": 50,
"disableSmartLayout": false,
"keywordGroupPositions": [
{
"groupName": "行动词",
"effectX": 15
},
{
"groupName": "情感词",
"effectX": 50,
"effectY": 53
},
{
"groupName": "描述词",
"effectX": 46,
"effectY": 63
},
{
"groupName": "重点词/成语词",
"effectX": 50,
"effectY": 89
},
{
"groupName": "12"
}
],
"avoidanceConfig": {
"safeDistance": 20,
"preferDirection": "right"
},
"silenceThreshold": -40,
"silenceDuration": 1,
"minPauseDuration": 0.15,
"videoDigitalHumanMode": "local"
},
"prompts": {
"scriptPrompt": "你是一个视频口播专家,擅长根据用户给的主题和关键词生成高质量的口播稿件。\n请根据以下要求生成口播稿件:\n\n1. 主题:{title}\n2. 字数:大约{count}字\n\n请确保稿件内容连贯、有吸引力,并且符合口播的风格。\n请直接输出生成的口播稿件,无需任何额外说明文字。\n\n可用变量:{title}、{count}",
"titleTagPrompt": "是短视频标题与标签助手。请基于提供的口播文案,生成一个标题和3-4个标签,输出的语言要完全是我们文案的语言格式\n- 标题不超过15个字,简洁有吸引力,不加引号,不含表情或图标字符。\n- 标签为2-6个字的中文短词,不含#、空格和表情;以主题词为主,避免冗长句。\n- 然后从文案里筛选出优秀的的词汇,必须是文案里包含的一字不差的,按照以下分类\n * 重点词/成语词:文案中的核心词汇、成语、重要概念。\n * 描述词:文案中用于描述事物特征、状态的优秀词汇。\n * 行动词:文案中表示动作、行为的优秀词汇。\n * 情感词:文案中表达情感、情绪的优秀词汇。\n\n-- 直接输出纯JSON格式,如果没有合适的词,[]格式里面可以留空,不要生凑,不要一个字的词,不要使用markdown代码块(不要用),不要附加任何说明文字。\n\n- 输出格式为:\n{\n \"title\": \"...\",\n \"tags\": [\"...\", \"...\", \"...\", \"...\"],\n \"keywords\": {\n \"重点词/成语词\": [\"...\", \"...\"],\n \"描述词\": [\"...\"],\n \"行动词\": [\"...\"],\n \"情感词\": [\"...\",]\n }\n}\n\n\n文案:<content>{{content}}</content>",
"topicRewritePrompt": "参考以下标题,帮我生成5个新的标题。\n\n参考标题:\n{{content}}\n\n要求:\n1. 保持相似的主题和风格\n2. 标题简洁有力,吸引眼球\n3. 不要添加表情符号和#标签\n4. 每个标题独立成行\n\n请直接输出5个新标题,不要编号和额外说明。\n可用变量:{{content}}",
"rewritePrompt": "# 你是一位文案改写助手,不增加表情或特殊符号,输出{{count}}字。\n原文:\n{{content}}\n\n\n ## 写作限制和特征\n -禁止输出的词:“原文”“作者”“文章”等词,攻击性强、侮辱性强的词(滚吧、找爸爸去、废物)、骂人的词(傻子、垃圾、蠢蛋),ai常用词(如“这波操作”、“666”)\n -用词口语化,句式有短句、情绪浓烈,\n -不要输出前言和介绍,也不能直白的指责。\n -写作的内容不要引用提示词的要求。\n\n ## 写作要求\n 1、第一段直接照抄原文的第一句话作为文章开头,一个字也不能改,必须控制30个字以内,绝对禁止照抄的第一句话超过30个字,超过30个字在不影响句子连贯的情况下截停。\n\n 2、后面的内容要具体叙述具体行为,每一个具体动作都不能跳过,可以直接使用原文句子,但是不能完全一致,从原文案的内容里面,用不同的角度切入叙述,确保内容完整,可以使用同义字进行替换,重组结构。\n\n 3、最后一段可以直接使用原文的最后一段,如果有身份信息的内容,就不要写出来,**例如:我是某某,后续内容主页观看。**",
"voicePromptId": 7,
"audioVoicePromptId": 7,
"audioLanguage": "中文"
},
"videoMixCutSettings": {
"enabled": true,
"mode": "fixed",
"fixedModeConfig": {
"enabled": true,
"opening": {
"enabled": false,
"timeRange": {
"durationMin": 2,
"durationMax": 5
},
"materialFolderPath": "",
"selectionMode": "random",
"displayMode": "fullscreen",
"pipPosition": "top-right",
"pipSizePercent": 30,
"pipScaleMode": "fit",
"originalVideoMinimized": {
"enabled": false,
"shape": "square",
"position": "bottom-right",
"sizePercent": 25
}
},
"middle": {
"enabled": false,
"timeRange": {
"durationMin": 2,
"durationMax": 5
},
"materialFolderPath": "",
"selectionMode": "random",
"displayMode": "fullscreen",
"pipPosition": "bottom-left",
"pipSizePercent": 40,
"pipScaleMode": "fit",
"originalVideoMinimized": {
"enabled": false,
"shape": "square",
"position": "bottom-right",
"sizePercent": 25
}
},
"ending": {
"enabled": false,
"timeRange": {
"durationMin": 2,
"durationMax": 5
},
"materialFolderPath": "",
"selectionMode": "random",
"displayMode": "fullscreen",
"pipPosition": "bottom-right",
"pipSizePercent": 30,
"pipScaleMode": "fit",
"originalVideoMinimized": {
"enabled": false,
"shape": "square",
"position": "bottom-right",
"sizePercent": 25
}
}
},
"keywordModeConfig": {
"enabled": false,
"groups": [
{
"groupId": "group_action",
"groupName": "行动词",
"materialFolderPath": "",
"durationMin": 2,
"durationMax": 5,
"selectionMode": "random",
"displayMode": "fullscreen",
"pipPosition": "bottom-right",
"pipSizePercent": 30,
"pipScaleMode": "fit",
"enabled": false,
"originalVideoMinimized": {
"enabled": false,
"shape": "square",
"position": "bottom-right",
"sizePercent": 25
}
},
{
"groupId": "group_emotion",
"groupName": "情感词",
"materialFolderPath": "",
"durationMin": 2,
"durationMax": 5,
"selectionMode": "random",
"displayMode": "fullscreen",
"pipPosition": "bottom-right",
"pipSizePercent": 30,
"pipScaleMode": "fit",
"enabled": false,
"originalVideoMinimized": {
"enabled": false,
"shape": "square",
"position": "bottom-right",
"sizePercent": 25
}
},
{
"groupId": "group_description",
"groupName": "描述词",
"materialFolderPath": "",
"durationMin": 2,
"durationMax": 5,
"selectionMode": "random",
"displayMode": "fullscreen",
"pipPosition": "bottom-right",
"pipSizePercent": 30,
"pipScaleMode": "fit",
"enabled": false,
"originalVideoMinimized": {
"enabled": false,
"shape": "square",
"position": "bottom-right",
"sizePercent": 25
}
},
{
"groupId": "group_keyemphasis",
"groupName": "重点词/成语词",
"materialFolderPath": "",
"durationMin": 2,
"durationMax": 5,
"selectionMode": "random",
"displayMode": "fullscreen",
"pipPosition": "bottom-right",
"pipSizePercent": 30,
"pipScaleMode": "fit",
"enabled": false,
"originalVideoMinimized": {
"enabled": false,
"shape": "square",
"position": "bottom-right",
"sizePercent": 25
}
},
{
"groupId": "group_12",
"groupName": "12",
"materialFolderPath": "",
"durationMin": 2,
"durationMax": 5,
"selectionMode": "random",
"displayMode": "fullscreen",
"pipPosition": "bottom-right",
"pipSizePercent": 30,
"pipScaleMode": "fit",
"enabled": false,
"originalVideoMinimized": {
"enabled": false,
"shape": "square",
"position": "bottom-right",
"sizePercent": 25
}
}
]
}
},
"subtitleTemplates": [
{
"id": "template_system_11",
"name": "11",
"description": "自定义字幕模板 - 黑底白字,支持关键词特效",
"createdAt": 1767950393391,
"config": {
"subtitleStyleId": "system-subtitle-11",
"subtitleStyle": {
"id": "custom",
"name": "自定义样式",
"description": "完全自定义的字幕样式",
"preview": "示例文字",
"fontName": "Noto Serif CJK",
"fontSize": 48,
"fontColor": "#FFFFFF",
"outlineColor": "#000000",
"outlineWidth": 3,
"shadowOffset": 2,
"shadowColor": "#000000",
"shadowBlur": 4,
"backgroundColor": "transparent",
"backgroundOpacity": 0,
"position": "bottom",
"alignment": "center",
"fontSource": "bundled"
},
"subtitleFontSizeScale": 100,
"subtitlePosition": "bottom",
"enableKeywordEffects": true,
"keywordGroups": [
{
"name": "12",
"description": "模板分组12",
"color": "#FF6B6B",
"effectId": "none",
"keywords": [],
"styleOverride": {},
"effectConfig": {}
},
{
"name": "重点词/成语词",
"description": "视频中的重点词汇和成语",
"color": "#EF0707EC",
"effectId": "fly-in",
"soundEffectId": "chain-pull",
"keywords": [],
"styleOverride": {
"fontName": "字玩哥特黑白无常 免费 超黑",
"fontSize": 80,
"fontColor": "#EF0707EC",
"outlineColor": "#000000",
"outlineWidth": 10
},
"effectConfig": {
"duration": 1.5
}
},
{
"name": "描述词",
"description": "描述性的形容词和副词",
"color": "#FFFFFF",
"effectId": "intense-flash",
"soundEffectId": "pop-1",
"keywords": [],
"styleOverride": {
"fontName": "USMCCyuanjiantecu",
"fontSize": 64,
"fontColor": "#FFFFFF",
"outlineColor": "#000000",
"outlineWidth": 1
},
"effectConfig": {
"duration": 2
}
},
{
"name": "情感词",
"description": "表达情感的词汇",
"color": "#FEFEFE",
"effectId": "danmaku",
"soundEffectId": "cash-register",
"keywords": [],
"styleOverride": {
"fontName": "心朵儿体",
"fontSize": 68,
"fontColor": "#FEFEFE",
"outlineColor": "#000000",
"outlineWidth": 0
},
"effectConfig": {
"duration": 3
}
},
{
"name": "行动词",
"description": "需要强调的行动动词",
"color": "#6CC4F6",
"effectId": "ARC_TEXT",
"soundEffectId": "knife-scrape",
"keywords": [],
"styleOverride": {
"fontName": "USMCCyuanjiantecu",
"fontSize": 200,
"fontColor": "#6CC4F6",
"outlineColor": "#000000",
"outlineWidth": 3
},
"effectConfig": {
"duration": 2
}
}
],
"screenWidth": 1920,
"screenHeight": 1080,
"fontSize": 48,
"fontFamily": "Arial, sans-serif",
"keywordGroupsStyles": [
{
"groupName": "行动词",
"styleOverride": {
"fontColor": "#FFFFFF",
"outlineColor": "#000000",
"outlineWidth": 3,
"fontSize": 68,
"fontName": "Noto Serif CJK"
},
"effectId": "intense-flash",
"effectDuration": 2,
"color": "#FFFFFF",
"soundEffectId": "magic-sfx",
"soundEffectConfig": {
"volume": 0.7,
"pitch": 1,
"fadeIn": 0,
"fadeOut": 50,
"triggerTime": "start"
}
},
{
"groupName": "情感词",
"styleOverride": {
"fontColor": "#1D69DE",
"outlineColor": "#000000",
"outlineWidth": 0,
"fontSize": 192,
"fontName": "Noto Serif CJK"
},
"effectId": "ARC_TEXT",
"effectDuration": 2,
"color": "#1D69DE",
"soundEffectId": "swoosh",
"soundEffectConfig": {
"volume": 0.7,
"pitch": 1,
"fadeIn": 0,
"fadeOut": 50,
"triggerTime": "start"
}
},
{
"groupName": "描述词",
"styleOverride": {
"fontColor": "#9ACAF9",
"outlineColor": "#000000",
"outlineWidth": 1,
"fontSize": 48,
"fontName": "Noto Serif CJK"
},
"effectId": "danmaku",
"effectDuration": 2,
"color": "#9ACAF9",
"soundEffectId": "cash-register",
"soundEffectConfig": {
"volume": 0.7,
"pitch": 1,
"fadeIn": 0,
"fadeOut": 50,
"triggerTime": "start"
}
},
{
"groupName": "重点词/成语词",
"styleOverride": {
"fontColor": "#EF0707EC",
"outlineColor": "#000000",
"outlineWidth": 10,
"fontSize": 104,
"fontName": "Noto Serif CJK"
},
"effectId": "fly-in",
"effectDuration": 2,
"color": "#EF0707EC",
"soundEffectId": "blow-impact",
"soundEffectConfig": {
"volume": 0.7,
"pitch": 1,
"fadeIn": 0,
"fadeOut": 50,
"triggerTime": "start"
}
},
{
"groupName": "12",
"styleOverride": null,
"effectId": null,
"effectDuration": null,
"color": null,
"soundEffectId": null,
"soundEffectConfig": null
}
]
},
"isSystem": true
}
],
"frontendState": {
"selectedSubtitleTemplate": "template_system_11",
"keywordGroups": [
{
"id": "group_action",
"name": "行动词",
"description": "用于表达行动和进度",
"keywords": [
{
"keyword": "重仓",
"enabled": true
},
{
"keyword": "预判",
"enabled": true
},
{
"keyword": "认准",
"enabled": true
},
{
"keyword": "聚焦",
"enabled": true
},
{
"keyword": "兑现",
"enabled": true
},
{
"keyword": "离场",
"enabled": true
}
],
"color": "#FFFFFF",
"effectId": "intense-flash",
"styleOverride": {
"fontColor": "#FFFFFF",
"outlineColor": "#000000",
"outlineWidth": 3,
"fontSize": 68,
"fontName": "Noto Serif CJK"
},
"effectConfig": {
"duration": 2
},
"styleConfig": {
"fontSize": 64,
"fontColor": "#FFFFFF",
"outlineColor": "#000000",
"outlineWidth": 2
},
"createdAt": 1767519506523,
"updatedAt": 1768017351366,
"sound_effect_id": "magic-sfx",
"sound_effect_config": "{\"volume\":0.7,\"pitch\":1,\"fadeIn\":0,\"fadeOut\":50,\"triggerTime\":\"start\"}",
"stickerId": null,
"effectDuration": 2,
"soundEffectId": "magic-sfx",
"soundEffectConfig": {
"volume": 0.7,
"pitch": 1,
"fadeIn": 0,
"fadeOut": 50,
"triggerTime": "start"
}
},
{
"id": "group_emotion",
"name": "情感词",
"description": "用于表达情感",
"keywords": [
{
"keyword": "慌了",
"enabled": true
},
{
"keyword": "狂揽",
"enabled": true
},
{
"keyword": "不舒服",
"enabled": true
}
],
"color": "#1D69DE",
"effectId": "ARC_TEXT",
"styleOverride": {
"fontColor": "#1D69DE",
"outlineColor": "#000000",
"outlineWidth": 0,
"fontSize": 192,
"fontName": "Noto Serif CJK"
},
"effectConfig": {
"duration": 3
},
"styleConfig": {
"fontSize": 64,
"fontColor": "#FFFFFF",
"outlineColor": "#000000",
"outlineWidth": 2
},
"createdAt": 1767519506517,
"updatedAt": 1768017351438,
"sound_effect_id": "swoosh",
"sound_effect_config": "{\"volume\":0.7,\"pitch\":1,\"fadeIn\":0,\"fadeOut\":50,\"triggerTime\":\"start\"}",
"stickerId": null,
"effectDuration": 2,
"soundEffectId": "swoosh",
"soundEffectConfig": {
"volume": 0.7,
"pitch": 1,
"fadeIn": 0,
"fadeOut": 50,
"triggerTime": "start"
}
},
{
"id": "group_description",
"name": "描述词",
"description": "用于描述场景和事物",
"keywords": [
{
"keyword": "果断",
"enabled": true
},
{
"keyword": "极致",
"enabled": true
},
{
"keyword": "无敌",
"enabled": true
}
],
"color": "#9ACAF9",
"effectId": "danmaku",
"styleOverride": {
"fontColor": "#9ACAF9",
"outlineColor": "#000000",
"outlineWidth": 1,
"fontSize": 48,
"fontName": "Noto Serif CJK"
},
"effectConfig": {
"duration": 2
},
"styleConfig": {
"fontSize": 64,
"fontColor": "#FFFFFF",
"outlineColor": "#000000",
"outlineWidth": 2
},
"createdAt": 1767519506509,
"updatedAt": 1768017351477,
"sound_effect_id": "cash-register",
"sound_effect_config": "{\"volume\":0.7,\"pitch\":1,\"fadeIn\":0,\"fadeOut\":50,\"triggerTime\":\"start\"}",
"stickerId": null,
"effectDuration": 2,
"soundEffectId": "cash-register",
"soundEffectConfig": {
"volume": 0.7,
"pitch": 1,
"fadeIn": 0,
"fadeOut": 50,
"triggerTime": "start"
}
},
{
"id": "group_keyemphasis",
"name": "重点词/成语词",
"description": "用于强调关键词汇和成语",
"keywords": [
{
"keyword": "核心优势",
"enabled": true
},
{
"keyword": "护城河",
"enabled": true
},
{
"keyword": "投资逻辑",
"enabled": true
},
{
"keyword": "价值标的",
"enabled": true
}
],
"color": "#EF0707EC",
"effectId": "fly-in",
"styleOverride": {
"fontColor": "#EF0707EC",
"outlineColor": "#000000",
"outlineWidth": 10,
"fontSize": 104,
"fontName": "Noto Serif CJK"
},
"effectConfig": {
"duration": 1.5
},
"styleConfig": {
"fontSize": 64,
"fontColor": "#FFFFFF",
"outlineColor": "#000000",
"outlineWidth": 2
},
"createdAt": 1767519506503,
"updatedAt": 1768017351515,
"sound_effect_id": "blow-impact",
"sound_effect_config": "{\"volume\":0.7,\"pitch\":1,\"fadeIn\":0,\"fadeOut\":50,\"triggerTime\":\"start\"}",
"stickerId": null,
"effectDuration": 2,
"soundEffectId": "blow-impact",
"soundEffectConfig": {
"volume": 0.7,
"pitch": 1,
"fadeIn": 0,
"fadeOut": 50,
"triggerTime": "start"
}
},
{
"id": "group_12",
"name": "12",
"description": "模板分组12",
"keywords": [],
"color": null,
"effectId": null,
"effectConfig": {},
"styleConfig": {
"fontSize": 64,
"fontColor": "#FFFFFF",
"outlineColor": "#000000",
"outlineWidth": 2
},
"createdAt": 1767519506497,
"updatedAt": 1768017351556,
"sound_effect_id": null,
"sound_effect_config": null,
"stickerId": null,
"effectDuration": null
}
],
"enableKeywordEffects": true,
"enableSmartSubtitle": true,
"enableSilenceRemoval": false,
"subtitleFontSizeScale": 100,
"subtitlePosition": "bottom",
"enableBGM": true,
"bgmVolume": 30,
"videoTemplateId": 7,
"enableTopTitle": false,
"topTitleStyle": {
"fontSize": 48,
"fontColor": "#FFD700",
"backgroundColor": "#000000",
"backgroundOpacity": 0.7,
"paddingHorizontal": 20,
"paddingVertical": 10,
"borderRadius": 10
}
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,28 @@
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<!--
Minimal fontconfig configuration for FFmpeg
This file prevents "Cannot load default config file" errors
and allows drawtext filter to work with fontfile parameter
-->
<fontconfig>
<!-- Font directories - use prefix="cwd" to avoid ambiguous path warning -->
<dir prefix="cwd">.</dir>
<!-- Disable font matching since we use explicit fontfile paths -->
<match target="pattern">
<edit name="family" mode="append" binding="weak">
<string>sans-serif</string>
</edit>
</match>
<!-- Cache configuration - resolved from XDG_CACHE_HOME at runtime -->
<cachedir prefix="xdg">fontconfig-cache</cachedir>
<!-- Minimal config to satisfy fontconfig initialization -->
<config>
<rescan>
<int>0</int>
</rescan>
</config>
</fontconfig>
@@ -0,0 +1,66 @@
{
"templates": [
{
"name": "简约风格",
"description": "简洁大方的黑色半透明背景,适合各类视频",
"config": {
"style": "default",
"fontSize": 80,
"fontColor": [255, 255, 255],
"fontName": "NotoSerifCJK-VF", "fontPath": "",
"position": "top",
"maxWidth": 1920
}
},
{
"name": "描边风格",
"description": "白色文字配黑色描边,清晰醒目",
"config": {
"style": "outline",
"fontSize": 90,
"fontColor": [255, 255, 255],
"outlineColor": [0, 0, 0],
"fontName": "NotoSerifCJK-VF", "fontPath": "",
"position": "top",
"maxWidth": 1920
}
},
{
"name": "模糊背景",
"description": "背景模糊效果,突出标题文字",
"config": {
"style": "blur_bg",
"fontSize": 85,
"fontColor": [255, 255, 255],
"fontName": "NotoSerifCJK-VF", "fontPath": "",
"position": "center",
"maxWidth": 1920
}
},
{
"name": "渐变遮罩",
"description": "优雅的渐变半透明遮罩效果",
"config": {
"style": "gradient",
"fontSize": 75,
"fontColor": [255, 255, 255],
"fontName": "NotoSerifCJK-VF", "fontPath": "",
"position": "top",
"maxWidth": 1920
}
},
{
"name": "分栏设计",
"description": "左侧标题配右侧装饰,设计感十足",
"config": {
"style": "split",
"fontSize": 70,
"fontColor": [255, 255, 255],
"fontName": "NotoSerifCJK-VF", "fontPath": "",
"position": "top",
"accentText": "✨",
"maxWidth": 1920
}
}
]
}
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 944 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 800 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

@@ -0,0 +1,94 @@
{
"config": {
"prompts": {
"scriptPrompt": "你是一个视频口播专家,擅长根据用户给的主题和关键词生成高质量的口播稿件。\n请根据以下要求生成口播稿件:\n\n1. 主题:{title}\n2. 字数:大约{count}字\n\n请确保稿件内容连贯、有吸引力,并且符合口播的风格。\n请直接输出生成的口播稿件,无需任何额外说明文字。\n不要带任何表情和符号。\n禁止输出的词:\"原文\"\"作者\"\"文章\"等词,攻击性强、侮辱性强的词(滚吧、找爸爸去、废物)、骂人的词(傻子、垃圾、蠢蛋),ai常用词(如\"这波操作\"、\"666\"),极限词、违反法律的词汇\n\n可用变量:{title}、{count}",
"titleTagPrompt": "是短视频标题与标签助手。请基于提供的口播文案,生成一个标题和3-4个标签,输出的语言要完全是我们文案的语言格式\n- 标题不超过15个字,简洁有吸引力,不加引号,不含表情或图标字符。\n- 标签为2-6个字的中文短词,不含#、空格和表情;以主题词为主,避免冗长句。\n- 然后从文案里筛选出优秀的的词汇,必须是文案里包含的一字不差的,按照以下分类\n * 重点词/成语词:文案中的核心词汇、成语、重要概念。\n * 描述词:文案中用于描述事物特征、状态的优秀词汇。\n * 行动词:文案中表示动作、行为的优秀词汇。\n * 情感词:文案中表达情感、情绪的优秀词汇。\n\n-- 直接输出纯JSON格式,如果没有合适的词,[]格式里面可以留空,不要生凑,不要一个字的词,不要使用markdown代码块(不要用),不要附加任何说明文字。\n\n- 输出格式为:\n{\n \"title\": \"...\",\n \"tags\": [\"...\", \"...\", \"...\", \"...\"],\n \"keywords\": {\n \"重点词/成语词\": [\"...\", \"...\"],\n \"描述词\": [\"...\"],\n \"行动词\": [\"...\"],\n \"情感词\": [\"...\",]\n }\n}\n\n\n文案:<content>{{content}}</content>\n可用变量:{{content}}",
"topicRewritePrompt": "参考以下标题,帮我生成5个新的标题。\n\n参考标题:\n{{content}}\n\n要求:\n1. 保持相似的主题和风格\n2. 标题简洁有力,吸引眼球\n3. 不要添加表情符号和#标签\n4. 每个标题独立成行\n\n请直接输出5个新标题,不要编号和额外说明。\n可用变量:{{content}}",
"rewritePrompt": "你是一位文案改写助手,不增加表情或特殊符号,输出{{count}}字。\n原文:\n{{content}}\n\n\n ## 写作限制和特征\n -禁止输出的词:\"原文\"\"作者\"\"文章\"等词,攻击性强、侮辱性强的词(滚吧、找爸爸去、废物)、骂人的词(傻子、垃圾、蠢蛋),ai常用词(如\"这波操作\"、\"666\"),极限词、违反法律的词汇\n\n -用词口语化,句式有短句、情绪浓烈,\n -不要输出前言和介绍,也不能直白的指责。\n -写作的内容不要引用提示词的要求。\n\n ## 写作要求\n 1、第一段直接照抄原文的第一句话作为文章开头,一个字也不能改,必须控制30个字以内,绝对禁止照抄的第一句话超过30个字,超过30个字在不影响句子连贯的情况下截停。\n\n 2、后面的内容要具体叙述具体行为,每一个具体动作都不能跳过,可以直接使用原文句子,但是不能完全一致,从原文案的内容里面,用不同的角度切入叙述,确保内容完整,可以使用同义字进行替换,重组结构。\n\n 3、最后一段可以直接使用原文的最后一段,如果有身份信息的内容,就不要写出来,**例如:我是某某,后续内容主页观看。**\n可用变量:{{content}}、{{count}}"
},
"videoMixCutSettings": {
"enabled": false,
"mode": "fixed",
"fixedModeConfig": {
"enabled": false,
"opening": {
"enabled": false,
"timeRange": {
"durationMin": 2,
"durationMax": 5
},
"materialFolderPath": "",
"selectionMode": "random",
"displayMode": "fullscreen",
"pipPosition": "top-right",
"pipSizePercent": 30,
"pipScaleMode": "fit",
"originalVideoMinimized": {
"enabled": false,
"shape": "square",
"position": "bottom-right",
"sizePercent": 25
}
},
"middle": {
"enabled": false,
"timeRange": {
"durationMin": 2,
"durationMax": 5
},
"materialFolderPath": "",
"selectionMode": "random",
"displayMode": "fullscreen",
"pipPosition": "bottom-left",
"pipSizePercent": 40,
"pipScaleMode": "fit",
"originalVideoMinimized": {
"enabled": false,
"shape": "square",
"position": "bottom-right",
"sizePercent": 25
}
},
"ending": {
"enabled": false,
"timeRange": {
"durationMin": 2,
"durationMax": 5
},
"materialFolderPath": "",
"selectionMode": "random",
"displayMode": "fullscreen",
"pipPosition": "bottom-right",
"pipSizePercent": 30,
"pipScaleMode": "fit",
"originalVideoMinimized": {
"enabled": false,
"shape": "square",
"position": "bottom-right",
"sizePercent": 25
}
}
},
"keywordModeConfig": {
"enabled": false,
"groups": []
}
},
"subtitleSettings": {
"defaultFont": "1.程荣光刻楷",
"defaultFontSize": 48,
"defaultPosition": "bottom",
"enableKeywordEffects": true
},
"modelSettings": {
"defaultModel": "gpt-4",
"temperature": 0.7,
"maxTokens": 2000
},
"otherSettings": {
"darkMode": "auto",
"guideWatched": false,
"updaterCheckAtLaunch": "yes"
}
}
}
+11
View File
@@ -0,0 +1,11 @@
document.addEventListener("DOMContentLoaded", function () {
document.addEventListener(
"click",
function (e) {
e.preventDefault();
e.stopPropagation();
return false;
},
true
);
});
@@ -0,0 +1,77 @@
{
"manifestVersion": 1,
"generatedAt": "2026-06-20T06:40:16.667Z",
"appVersion": "9.9.8",
"bundles": {
"playwright": {
"version": "b2c0ba43945b43d5",
"archive": "playwright-b2c0ba43945b43d5.zip",
"url": "https://xiazaigengxin-1417293730.cos.ap-guangzhou.myqcloud.com/updates/playwright-b2c0ba43945b43d5.zip",
"sha256": "5febfa8992005fedba49d6448d04ea7e1dfdfe4d1a64e12dacc9439bcb6fd3df",
"size": 342061468,
"required": true,
"extractTo": "resources-bundles/playwright",
"source": "packaging/vendor/playwright"
},
"python-runtime": {
"version": "43b1bc61b300f429",
"archive": "python-runtime-43b1bc61b300f429.zip",
"url": "https://xiazaigengxin-1417293730.cos.ap-guangzhou.myqcloud.com/updates/python-runtime-43b1bc61b300f429.zip",
"sha256": "4d6a0872953d779f4b18a5b45279437c11c21ef057512cf82602b0aa307391fb",
"size": 242930983,
"required": true,
"extractTo": "resources-bundles/python-runtime",
"source": "packaging/vendor/python-runtime"
},
"ffmpeg": {
"version": "b3ee3c78959a363a",
"archive": "ffmpeg-b3ee3c78959a363a.zip",
"url": "https://xiazaigengxin-1417293730.cos.ap-guangzhou.myqcloud.com/updates/ffmpeg-b3ee3c78959a363a.zip",
"sha256": "5648084968b1e4228a8b00cd48fb74e5c4daef09a3b3620e5ba9b1081cf6e051",
"size": 148417067,
"required": true,
"extractTo": "resources-bundles/ffmpeg",
"source": "packaging/vendor/ffmpeg"
},
"models": {
"version": "2ba4d03d6459eace",
"archive": "models-2ba4d03d6459eace.zip",
"url": "https://xiazaigengxin-1417293730.cos.ap-guangzhou.myqcloud.com/updates/models-2ba4d03d6459eace.zip",
"sha256": "02b9e0f71a7822143c2f4122ce8cdd39f23569705bb0032717655230896e7a3d",
"size": 164653874,
"required": true,
"extractTo": "resources-bundles/models",
"source": "packaging/vendor/models"
},
"fonts": {
"version": "03a3d7c54491326b",
"archive": "fonts-03a3d7c54491326b.zip",
"url": "https://xiazaigengxin-1417293730.cos.ap-guangzhou.myqcloud.com/updates/fonts-03a3d7c54491326b.zip",
"sha256": "7520ae93e5b1b7ddb63157ca98e6e6ae0dd8b7f5cd94999a24aee99a7f99dfa3",
"size": 241090999,
"required": false,
"extractTo": "resources-bundles/fonts",
"source": "packaging/vendor/fonts"
},
"ziti": {
"version": "431cd09bfeb5140f",
"archive": "ziti-431cd09bfeb5140f.zip",
"url": "https://xiazaigengxin-1417293730.cos.ap-guangzhou.myqcloud.com/updates/ziti-431cd09bfeb5140f.zip",
"sha256": "b6bb315b308d96c8621965342f01dfc74b1e61be513ca543d2d53fccd80bbc8a",
"size": 199724902,
"required": true,
"extractTo": "resources-bundles/ziti",
"source": "packaging/vendor/ziti"
},
"bgm": {
"version": "39c0cca46011e3fd",
"archive": "bgm-39c0cca46011e3fd.zip",
"url": "https://xiazaigengxin-1417293730.cos.ap-guangzhou.myqcloud.com/updates/bgm-39c0cca46011e3fd.zip",
"sha256": "7902156de9b99908901e4ad50d19bfeba9dd2bea15e6fc87be8e2f0a7972e836",
"size": 83505038,
"required": false,
"extractTo": "resources-bundles/bgm",
"source": "packaging/vendor/bgm"
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

@@ -0,0 +1,99 @@
# 音色预缓存目录
此目录用于存放系统默认音色的预缓存文件,在应用打包时包含这些文件可以让用户首次使用时无需等待音色生成。
## 目录用途
- **开发环境**: 用于测试预缓存功能
- **生产环境**: 打包时将此目录包含在应用中,首次启动时会自动复制到用户数据目录
## 如何生成预缓存文件
### 方式一:使用应用自动生成(推荐)
1. 启动应用(开发模式或打包后的应用)
2. 确保已配置 DashScope / 千问 API Key(在模型设置中)
3. 打开音色管理对话框,逐个试听所有默认音色
4. 试听后的音色会自动保存到用户数据目录的 `voice-preview-cache/` 文件夹
5. 找到用户数据目录:
- **Windows**: `C:\Users\<用户名>\AppData\Roaming\zhenqianba-v2\voice-preview-cache`
- **macOS**: `~/Library/Application Support/zhenqianba-v2/voice-preview-cache`
- **Linux**: `~/.config/zhenqianba-v2/voice-preview-cache`
6. 将生成的 `.wav` 文件复制到此目录(`packaging/resources/voice-preview-cache/`
### 方式二:手动触发预缓存
在应用的开发者控制台中执行:
```javascript
await window.$mapi.aliyun.cosyvoice.preCacheSystemVoices('<DashScope API Key>', true);
```
然后从用户数据目录复制生成的文件到此目录。
## 预缓存文件列表
当前系统音色应以 `sys_*.wav` 形式存放,例如:
- `sys_Cherry.wav`
- `sys_Serena.wav`
- `sys_Ethan.wav`
- `sys_Chelsie.wav`
- `sys_Momo.wav`
- `sys_Vivian.wav`
- `sys_Moon.wav`
- `sys_Maia.wav`
- `sys_Kai.wav`
- `sys_Nofish.wav`
- `sys_Bella.wav`
- `sys_Jennifer.wav`
- `sys_Ryan.wav`
- `sys_Katerina.wav`
- `sys_Aiden.wav`
- `sys_Jada.wav`
- `sys_Dylan.wav`
- `sys_Li.wav`
- `sys_Marcus.wav`
- `sys_Roy.wav`
- `sys_Peter.wav`
- `sys_Sunny.wav`
- `sys_Eric.wav`
- `sys_Rocky.wav`
- `sys_Kiki.wav`
- `sys_Bodega.wav`
- `sys_Sonrisa.wav`
- `sys_Alek.wav`
- `sys_Dolce.wav`
- `sys_Sohee.wav`
- `sys_Ono_Anna.wav`
- `sys_Lenn.wav`
- `sys_Emilien.wav`
- `sys_Andre.wav`
## 打包配置
确保在 `electron-builder.json5` 中包含此目录:
```json5
{
"extraResources": [
{
"from": "packaging/resources/voice-preview-cache",
"to": "voice-preview-cache"
}
]
}
```
## 工作原理
1. **首次启动**: 应用检测到用户数据目录没有预缓存文件
2. **资源复制**: 从应用资源目录 (`resources/voice-preview-cache/`) 复制到用户数据目录
3. **即时可用**: 用户试听时直接使用本地缓存,无需等待 API 生成
4. **自动补全**: 如果某些音色未包含在打包中,用户试听时会自动生成并保存
## 注意事项
- 当前试听缓存已改为 `.wav` 文件
- 用户后续试听新音色时,仍会自动保存到本地缓存
- 此功能不影响用户自定义音色的使用