Grupos de Palavras de Legendas do CapCut
Use esta skill para reparar legendas do CapCut cujos arrays materials.texts[].words estão divididos por caractere chinês, fazendo com que modelos como 逐字显色粗体 绿 rolem/destaquem fragmentos em vez de palavras.
Esta skill edita o JSON de rascunho não documentado do CapCut Desktop. Sempre feche o CapCut, faça backup do rascunho e verifique na visualização do CapCut antes de exportar. Atualizações do CapCut podem alterar o esquema do rascunho.
Fluxo de Trabalho
- Identifique o diretório ativo do rascunho.
- Prefira o rascunho
.lockedse o CapCut tiver um projeto aberto. - Caso contrário, use o rascunho modificado mais recente em
~/Movies/CapCut/User Data/Projects/com.lveditor.draft.
- Prefira o rascunho
- Feche o CapCut antes de escrever arquivos de rascunho. O CapCut pode sobrescrever edições externas enquanto o editor estiver aberto.
- Inspecione as legendas alvo:
jq -r '.materials.texts[] | [(.content|fromjson.text), ((.words.text // [])|join("|"))] | @tsv' "$DRAFT/draft_info.json" - Execute
scripts/regroup-caption-words.jscontra o rascunho. - Reabra o CapCut e verifique visualmente pelo menos uma legenda no início, meio e fim.
Script
Use o script incluído para o patch real:
node scripts/regroup-caption-words.js \
--draft "$DRAFT" \
--fillers "呃,嗯,额" \
--backup
O script aplica patch em todas as cópias ativas do rascunho que encontrar:
draft_info.jsonraiztemplate-2.tmpraizTimelines/*/draft_info.jsonTimelines/*/template-2.tmp
Ele atualiza tanto materials.texts[].words quanto extra_info.subtitle_fragment_info_list[].subtitle_cache_info.
Mapa de Grupo Manual
Para melhor controle editorial, passe um mapa JSON do texto exato da legenda visível para os grupos desejados:
{
"你会担心AI就是呃夺走你的工作吗": ["你会", "担心", "AI", "就是", "夺走", "你的", "工作", "吗"],
"以及他的呃知识库比我们都要多": ["以及", "他的", "知识库", "比", "我们", "都要", "多"]
}
Em seguida, execute:
node scripts/regroup-caption-words.js \
--draft "$DRAFT" \
--groups-file groups.json \
--fillers "呃,嗯,额" \
--backup
O mapa pode usar o texto original antes da remoção de preenchimento. Cada lista de grupos deve concatenar ao texto da legenda limpo após a remoção de preenchimento.
Validação
Após o patch, verifique:
jq empty "$DRAFT/draft_info.json" "$DRAFT/template-2.tmp" "$DRAFT"/Timelines/*/draft_info.json "$DRAFT"/Timelines/*/template-2.tmp
rg '呃|嗯|额' "$DRAFT/draft_info.json" "$DRAFT/template-2.tmp" "$DRAFT"/Timelines/*/draft_info.json "$DRAFT"/Timelines/*/template-2.tmp
Valide também se os grupos de palavras unidos são iguais ao texto visível:
jq -r '.materials.texts[] | [(.content|fromjson.text), ((.words.text // [])|join("|"))] | @tsv' "$DRAFT/draft_info.json"
Notas
- Preserve a estrutura baseada em modelo. Não achate legendas em clipes por palavra ou caractere.
- A remoção de preenchimento altera o texto visível, mas não o tempo de vídeo/áudio.
- A segmentação automática usa
Intl.Segmenter("zh", { granularity: "word" }); revise os resultados quando as legendas forem importantes. - Um patch no renderizador do modelo, como
wordCountPerPageLimit(3)para2, apenas altera quantas entradas de metadados aparecem por página. Ele não corrige metadados de palavras no nível do caractere. - O CapCut pode regenerar ou reescrever metadados de legenda após edições manuais de legenda. Reexecute esta skill após grandes edições de legenda.