limixbot 0.2.7 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{ActivityPanel-CmDCy7eZ.js → ActivityPanel-DNJrm-It.js} +1 -1
- package/dist/assets/{App-Dbsatjme.js → App-0-mtr0MN.js} +9 -9
- package/dist/assets/{AppEventEditor-B4RQnsS3.js → AppEventEditor-cxtdNROG.js} +1 -1
- package/dist/assets/{BotSettingsDialog-DyScwvnb.js → BotSettingsDialog-Bke-uC9C.js} +1 -1
- package/dist/assets/{BrowserPanel-CFFNXZUh.js → BrowserPanel-DIWnLFx0.js} +1 -1
- package/dist/assets/{BrowserProfilesManager-H57RKPMu.js → BrowserProfilesManager-Byg78_T6.js} +1 -1
- package/dist/assets/{CloudAddDialog-Bj6_HHBS.js → CloudAddDialog-DbnC3LUp.js} +1 -1
- package/dist/assets/{ComputerFilesPane-CZ3bEdi-.js → ComputerFilesPane-D8NwEQh2.js} +1 -1
- package/dist/assets/{ComputerPanel-BQUsGs4_.js → ComputerPanel-BVjkZ-QX.js} +2 -2
- package/dist/assets/{DataPanel-BFafyj9T.js → DataPanel-jd0L0Ng-.js} +1 -1
- package/dist/assets/{DesktopViewer-DuoSRrPG.js → DesktopViewer-Bj7DyfxJ.js} +1 -1
- package/dist/assets/{FilesView-D2WrDHpg.js → FilesView-D2dpovi2.js} +1 -1
- package/dist/assets/{GrokMoveDialog-Ciq95MT4.js → GrokMoveDialog-Cu9vgUWd.js} +1 -1
- package/dist/assets/{InspectorPanel-DP9ekeeT.js → InspectorPanel-B6Ix1Q90.js} +1 -1
- package/dist/assets/{KeyboardShortcutsModal-BMt7r3Va.js → KeyboardShortcutsModal-BxLj1UAT.js} +1 -1
- package/dist/assets/{LiveDesktop-JYitfkP5.js → LiveDesktop-IhmS_70N.js} +1 -1
- package/dist/assets/{LocalVmWorkspace-ZIznHPod.js → LocalVmWorkspace-Cz_8PBvO.js} +1 -1
- package/dist/assets/{MacLocalControl-B2mYWfM_.js → MacLocalControl-BQx0dmBY.js} +1 -1
- package/dist/assets/{MarkdownFilePreview-C9o8GlmR.js → MarkdownFilePreview-BvcKRvLj.js} +1 -1
- package/dist/assets/{MenuMotion-BVlWdNZd.js → MenuMotion-Dg_hALEl.js} +1 -1
- package/dist/assets/{NewBotDialog-42cdLuX9.js → NewBotDialog-AG4lwjLs.js} +1 -1
- package/dist/assets/{PhoneAppDialog-2HsbrbDR.js → PhoneAppDialog-DnxYDUcZ.js} +1 -1
- package/dist/assets/PlacesRail-C-RypDbo.js +57 -0
- package/dist/assets/{PluginsPanel-gMX9siqC.js → PluginsPanel-DUMsui1-.js} +1 -1
- package/dist/assets/{ProIntroduction-DLeyaIp4.js → ProIntroduction-DrVULNMR.js} +1 -1
- package/dist/assets/{RemoteAgentSettingsPanel-CI4mV7e4.js → RemoteAgentSettingsPanel-C9bAP3v4.js} +1 -1
- package/dist/assets/{RoomPanel-QM7b4JcY.js → RoomPanel-DjGGiSTe.js} +1 -1
- package/dist/assets/{RoutinesPage-9oF95jVB.js → RoutinesPage-DI6CbJ-R.js} +1 -1
- package/dist/assets/{SettingsModal-D-qQozfZ.js → SettingsModal-2iNaR6ei.js} +1 -1
- package/dist/assets/{ShareTeamDialog-BSCDpGsw.js → ShareTeamDialog-D7jlR9HK.js} +1 -1
- package/dist/assets/{SignedInSites-CCJy494V.js → SignedInSites-zRGAI6no.js} +1 -1
- package/dist/assets/{TeamLibraryPanel-VGQUqTlV.js → TeamLibraryPanel-ssb1UDr5.js} +1 -1
- package/dist/assets/{TeamMapPage-rjPtLGmj.js → TeamMapPage-BS05D1gH.js} +1 -1
- package/dist/assets/{TriggersPage-0G0do_3b.js → TriggersPage-Bnny-m5i.js} +1 -1
- package/dist/assets/{VisibilitySection-Gh6OTOCE.js → VisibilitySection-DYoJ1GdM.js} +1 -1
- package/dist/assets/{WebhookTrigger-DpcmCVTL.js → WebhookTrigger-TRl3ZXbh.js} +1 -1
- package/dist/assets/{WorksOnGrid-L6LFTE2_.js → WorksOnGrid-KH_NgeB8.js} +1 -1
- package/dist/assets/{abnfDiagram-YUKMZFIV-CUWh2GsH.js → abnfDiagram-YUKMZFIV-BJa3HT_w.js} +1 -1
- package/dist/assets/{activity-LHXr5xxZ.js → activity-DpguW9va.js} +1 -1
- package/dist/assets/{architectureDiagram-47P4ROYG-DVX8QyiO.js → architectureDiagram-47P4ROYG-C5gEKdsw.js} +1 -1
- package/dist/assets/{blockDiagram-E7TT5TSB-CEURT8Q8.js → blockDiagram-E7TT5TSB-CT7xbCQZ.js} +1 -1
- package/dist/assets/{c4Diagram-CRA5TL53-Dxo3va1-.js → c4Diagram-CRA5TL53-DSFZqTvf.js} +1 -1
- package/dist/assets/{calendar-days-dgtKqWUC.js → calendar-days-ASlaivsQ.js} +1 -1
- package/dist/assets/channel-BqGEhKY0.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-Cwoh8ivv.js → chunk-2Q5K7J3B-OtLqmkVp.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-D3VEPh-j.js → chunk-5VM5RSS4-Rq3LG0x-.js} +1 -1
- package/dist/assets/{chunk-7TKQ45FW-DkXnciwj.js → chunk-7TKQ45FW-BvOFm5yO.js} +1 -1
- package/dist/assets/{chunk-AW2ZBBNX-CNUnktBg.js → chunk-AW2ZBBNX-Bp8ouRZs.js} +1 -1
- package/dist/assets/{chunk-FVRAUYC3-DDh_Qx3V.js → chunk-FVRAUYC3-htnnltbK.js} +2 -2
- package/dist/assets/{chunk-HTAEGDNF-Cl-K7zHu.js → chunk-HTAEGDNF-dT7z7xQV.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-BZMB3nUT.js → chunk-JWPE2WC7-BKhNCYBO.js} +1 -1
- package/dist/assets/{chunk-KQW6MTUR-CK00Y5Mf.js → chunk-KQW6MTUR-DeA1KhMw.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-D9bXnXn1.js → chunk-XXDRQBXY-DJCz3KwB.js} +1 -1
- package/dist/assets/{classDiagram-v2-K4WV4PDN-vMIXHAit.js → classDiagram-v2-K4WV4PDN-BxZQcXjn.js} +1 -1
- package/dist/assets/{coins-C6ydDjtx.js → coins-Kra8C23v.js} +1 -1
- package/dist/assets/{core-PBrJFfNa.js → core-D_ShnPPB.js} +1 -1
- package/dist/assets/{cose-bilkent-JH36ORCC-CKEtjhno.js → cose-bilkent-JH36ORCC-DPvzbWJ-.js} +1 -1
- package/dist/assets/{cynefin-EF2NZ3EQ-X7332_6L.js → cynefin-EF2NZ3EQ-BU7oS4Kz.js} +1 -1
- package/dist/assets/{cynefinDiagram-3GCD6N5R-C3ehmT22.js → cynefinDiagram-3GCD6N5R-BGBWfDSm.js} +1 -1
- package/dist/assets/{dagre-W4DXFKR2-8j_7yTJf.js → dagre-W4DXFKR2-IWCaUQIb.js} +1 -1
- package/dist/assets/{diagram-2UJZ2QOL-Dpan5gHO.js → diagram-2UJZ2QOL-Bhk3LC2M.js} +1 -1
- package/dist/assets/{diagram-OVF4WLC6-84oGxj_T.js → diagram-OVF4WLC6-CuabegT5.js} +1 -1
- package/dist/assets/{diagram-PFPMY2P6-CtkBChQX.js → diagram-PFPMY2P6-CoS7hKtb.js} +1 -1
- package/dist/assets/{diagram-UMYRVEAY-BtLD2TMp.js → diagram-UMYRVEAY-BQmo6hIx.js} +1 -1
- package/dist/assets/{diagram-YEKJPTXX-BSsG3sMr.js → diagram-YEKJPTXX-Dn-KHH-s.js} +1 -1
- package/dist/assets/{diagram-ZIFT7M5P-DzGdrnet.js → diagram-ZIFT7M5P-BCWmVp3z.js} +1 -1
- package/dist/assets/{ebnfDiagram-VR2GEFS7-BCgvwxBO.js → ebnfDiagram-VR2GEFS7-Bb086aqc.js} +1 -1
- package/dist/assets/{elk-IJKZMXRS-MrcuY098.js → elk-IJKZMXRS-C0AdhTr_.js} +1 -1
- package/dist/assets/{erDiagram-O2IAPWRE-CkiPC10P.js → erDiagram-O2IAPWRE-CGa-MwBB.js} +1 -1
- package/dist/assets/{file-up-YAGDCUmC.js → file-up-XN39lGyR.js} +1 -1
- package/dist/assets/{flowDiagram-OXPTDLAJ-Dy30n92Z.js → flowDiagram-OXPTDLAJ-BdLF4FEb.js} +1 -1
- package/dist/assets/{ganttDiagram-R7TSEDQI-7aj2jc8X.js → ganttDiagram-R7TSEDQI-iXPVrTqJ.js} +1 -1
- package/dist/assets/{gitGraphDiagram-XJZIOB7I-C90-6xd7.js → gitGraphDiagram-XJZIOB7I-DA55YE0F.js} +1 -1
- package/dist/assets/{import-name-DwHxnzLo.js → import-name-CNEv8Wx8.js} +1 -1
- package/dist/assets/{index-Dh9vBoyU.js → index-BDVsw1Qr.js} +1 -1
- package/dist/assets/{index-CEBe4ppp.js → index-CnQ2pCf7.js} +2 -2
- package/dist/assets/{index-J6AJ8PJY.js → index-CtBcDSNT.js} +1 -1
- package/dist/assets/{infoDiagram-5W2HQ5XZ-JsL4Ulqu.js → infoDiagram-5W2HQ5XZ-DwwOOuPK.js} +1 -1
- package/dist/assets/{ishikawaDiagram-K3B6WC7H-DGvScV7R.js → ishikawaDiagram-K3B6WC7H-uOns6fyB.js} +1 -1
- package/dist/assets/{journeyDiagram-COXZFDF6-DLSEKXoP.js → journeyDiagram-COXZFDF6-BNlo402b.js} +1 -1
- package/dist/assets/{kanban-definition-P3RFRI5V-CoxK_0bl.js → kanban-definition-P3RFRI5V-rApNRuxE.js} +1 -1
- package/dist/assets/{mcp-servers-Dy6saID9.js → mcp-servers-DiCs_cE-.js} +1 -1
- package/dist/assets/{mermaid.core-73koJZWB.js → mermaid.core-UoMXw4Pf.js} +4 -4
- package/dist/assets/{mindmap-definition-LZFPQGKD-CbTxcgIF.js → mindmap-definition-LZFPQGKD-DMx0e0Ua.js} +1 -1
- package/dist/assets/{minimize-DNbi21po.js → minimize-C6tWjaQW.js} +1 -1
- package/dist/assets/{monitor-EYAEQme8.js → monitor-CqHNmvSo.js} +1 -1
- package/dist/assets/{new-bot-C2jdhFdl.js → new-bot-CpjPfYn1.js} +1 -1
- package/dist/assets/{org-library-BayvlLSA.js → org-library-DkWIJaGU.js} +1 -1
- package/dist/assets/{package-format-BvNOAJ-8.js → package-format-DQ8Q_tWB.js} +1 -1
- package/dist/assets/{pegDiagram-BGZESJAR-vPF7wjW0.js → pegDiagram-BGZESJAR-BGjO4xhf.js} +1 -1
- package/dist/assets/{pieDiagram-CAPJLFHJ-CcXS-bXc.js → pieDiagram-CAPJLFHJ-CKDnQaP9.js} +1 -1
- package/dist/assets/{quadrantDiagram-GDMTTRAM-ue9nAF1U.js → quadrantDiagram-GDMTTRAM-2Yd2aagw.js} +1 -1
- package/dist/assets/{rail-BVFx-Ggi.js → rail-DzTUJt9y.js} +1 -1
- package/dist/assets/{railroadDiagram-SM67HX2B-BeQYm6nT.js → railroadDiagram-SM67HX2B-2p7uXTy-.js} +1 -1
- package/dist/assets/{remote-desktop-panel-Bgx8ebdG.js → remote-desktop-panel-CWP7wnfp.js} +1 -1
- package/dist/assets/{requirementDiagram-X7JNWC4A-DZouafhW.js → requirementDiagram-X7JNWC4A-B8Tb583R.js} +1 -1
- package/dist/assets/{sankeyDiagram-UM26HJRW-DHon18zu.js → sankeyDiagram-UM26HJRW-uH_0e9a7.js} +1 -1
- package/dist/assets/{sequenceDiagram-ZO4K6R2Y-atekCKa7.js → sequenceDiagram-ZO4K6R2Y-BL2NmEjq.js} +1 -1
- package/dist/assets/{sizeCapture-INFHLROL-Dt3J5cN4.js → sizeCapture-INFHLROL-CF5rj-Tn.js} +1 -1
- package/dist/assets/{stateDiagram-v2-TBUQTH76-Y6UtBULW.js → stateDiagram-v2-TBUQTH76-Bi8FVJmD.js} +1 -1
- package/dist/assets/{styles-CnQhCz_w.js → styles-3gApXdcp.js} +2 -2
- package/dist/assets/styles-D-yh7Z23.css +1 -0
- package/dist/assets/{swimlanes-N4OXWK64-BpUnlH-3.js → swimlanes-N4OXWK64-cI7SKAY4.js} +1 -1
- package/dist/assets/swimlanesDiagram-K3J5GTZL-D8raS3ll.js +8 -0
- package/dist/assets/{team-share-DkzY22CD.js → team-share-Dy8-U6dh.js} +1 -1
- package/dist/assets/{timeline-definition-YOQAKGHF-DhG3OlON.js → timeline-definition-YOQAKGHF-DgYVfZT2.js} +1 -1
- package/dist/assets/{usecaseDiagram-VIAY4XPW-DFUcbznD.js → usecaseDiagram-VIAY4XPW-DA-ohLD0.js} +1 -1
- package/dist/assets/{vennDiagram-BLWOH2XV-D49fiyRh.js → vennDiagram-BLWOH2XV-DvsWwQlH.js} +1 -1
- package/dist/assets/vi-KgT8L8Qj.js +15 -0
- package/dist/assets/{wardleyDiagram-YMQ3BMBF-DFVNNZPs.js → wardleyDiagram-YMQ3BMBF--20oJB2z.js} +1 -1
- package/dist/assets/{xychartDiagram-TAQBALBS-DiHMuK-U.js → xychartDiagram-TAQBALBS-C8j4OKSW.js} +1 -1
- package/dist/index.html +3 -3
- package/dist/rail.html +5 -5
- package/dist-server/index.js +87 -54
- package/dist-server/openmausbot.js +87 -54
- package/dist-server/package.json +1 -1
- package/dist-server/shared/mascot-bodies.js +23 -23
- package/package.json +1 -1
- package/skills/agent-reach/LICENSE +21 -0
- package/skills/agent-reach/SKILL.md +117 -0
- package/skills/agent-reach/manifest.json +41 -0
- package/skills/agent-reach/references/capabilities.md +31 -0
- package/skills/agent-reach/references/maintenance.md +13 -0
- package/skills/agent-reach/references/sessions.md +41 -0
- package/skills/rea-video/LICENSE +202 -0
- package/skills/rea-video/NOTICE +4 -0
- package/skills/rea-video/SKILL.md +124 -0
- package/skills/rea-video/manifest.json +32 -0
- package/skills/rea-video/references/audio.md +97 -0
- package/skills/rea-video/references/materials.md +34 -0
- package/skills/rea-video/references/memory.md +7 -0
- package/skills/rea-video/references/output-template.md +46 -0
- package/skills/rea-video/references/remake.md +41 -0
- package/skills/rea-video/references/review.md +42 -0
- package/skills/rea-video/references/setup.md +51 -0
- package/skills/rea-video/references/taxonomy.md +139 -0
- package/skills/ui-ux-pro-max/LICENSE +21 -0
- package/skills/ui-ux-pro-max/SKILL.md +221 -0
- package/skills/ui-ux-pro-max/data/app-interface.csv +33 -0
- package/skills/ui-ux-pro-max/data/catalog-summary.json +78 -0
- package/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/ui-ux-pro-max/data/colors.csv +193 -0
- package/skills/ui-ux-pro-max/data/data-provenance.json +1396 -0
- package/skills/ui-ux-pro-max/data/google-font-licenses.json +20185 -0
- package/skills/ui-ux-pro-max/data/google-fonts.csv +1935 -0
- package/skills/ui-ux-pro-max/data/icons.csv +106 -0
- package/skills/ui-ux-pro-max/data/landing.csv +35 -0
- package/skills/ui-ux-pro-max/data/motion.csv +18 -0
- package/skills/ui-ux-pro-max/data/phosphor-icons-upstream.json +32582 -0
- package/skills/ui-ux-pro-max/data/products.csv +193 -0
- package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/avalonia.csv +57 -0
- package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +60 -0
- package/skills/ui-ux-pro-max/data/stacks/javafx.csv +76 -0
- package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +62 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +84 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +68 -0
- package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/ui-ux-pro-max/data/stacks/react.csv +67 -0
- package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +69 -0
- package/skills/ui-ux-pro-max/data/stacks/svelte.csv +56 -0
- package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/uno.csv +60 -0
- package/skills/ui-ux-pro-max/data/stacks/uwp.csv +56 -0
- package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/ui-ux-pro-max/data/stacks/winui.csv +60 -0
- package/skills/ui-ux-pro-max/data/stacks/wpf.csv +57 -0
- package/skills/ui-ux-pro-max/data/styles.csv +90 -0
- package/skills/ui-ux-pro-max/data/typography.csv +75 -0
- package/skills/ui-ux-pro-max/data/ui-reasoning.csv +193 -0
- package/skills/ui-ux-pro-max/data/ux-guidelines.csv +121 -0
- package/skills/ui-ux-pro-max/manifest.json +34 -0
- package/skills/ui-ux-pro-max/references/pro-rules.md +117 -0
- package/skills/ui-ux-pro-max/references/quick-reference.md +257 -0
- package/skills/ui-ux-pro-max/scripts/core.py +1053 -0
- package/skills/ui-ux-pro-max/scripts/design_system.py +1668 -0
- package/skills/ui-ux-pro-max/scripts/reasoning_contract.py +123 -0
- package/skills/ui-ux-pro-max/scripts/search.py +201 -0
- package/skills/ui-ux-pro-max/scripts/validate_data.py +1095 -0
- package/dist/assets/PlacesRail-XEjyWavr.js +0 -57
- package/dist/assets/channel-B_-MyCfi.js +0 -1
- package/dist/assets/styles-D8FmJr6X.css +0 -1
- package/dist/assets/swimlanesDiagram-K3J5GTZL-CNvy2omc.js +0 -8
- package/dist/assets/vi-VlbIiohE.js +0 -6
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
|
178
|
+
|
|
179
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
180
|
+
|
|
181
|
+
To apply the Apache License to your work, attach the following
|
|
182
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
183
|
+
replaced with your own identifying information. (Don't include
|
|
184
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
185
|
+
comment syntax for the file format. We also recommend that a
|
|
186
|
+
file or class name and description of purpose be included on the
|
|
187
|
+
same "printed page" as the copyright notice for easier
|
|
188
|
+
identification within third-party archives.
|
|
189
|
+
|
|
190
|
+
Copyright 2026 JuneYaooo
|
|
191
|
+
|
|
192
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
|
+
you may not use this file except in compliance with the License.
|
|
194
|
+
You may obtain a copy of the License at
|
|
195
|
+
|
|
196
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
197
|
+
|
|
198
|
+
Unless required by applicable law or agreed to in writing, software
|
|
199
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
200
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
201
|
+
See the License for the specific language governing permissions and
|
|
202
|
+
limitations under the License.
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rea-video
|
|
3
|
+
description: 逆向拆解一条视频是怎么做出来的——逐镜头判断实拍 / 影视片段 / AI 生成 / 3D 渲染 / 2D 动画 / 定格动画 / 代码模板渲染 / 录屏截图 / 静态图推拉 / 静帧,以及实拍是否经过 AI 加工(换脸、对口型、风格化),标出后期叠加层(逐句字幕时间轴、花字、标题、贴纸 / GIF / 表情包、画中画)和用户真实素材,拆解人声、背景音乐、音效(卡在哪个画面事件上)与剪辑节奏,并给出可执行的复刻方案(可对接 capsule-cinema)。当用户给出参考视频、问"这条视频怎么做的 / 是不是 AI / 用了什么素材 / 怎么复刻"时使用。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **Limix Bot.** Python 3.12 and `uv` are bundled with Limix Bot and on PATH. If the command is missing, ask the
|
|
7
|
+
> person once, then install it with:
|
|
8
|
+
>
|
|
9
|
+
> ```
|
|
10
|
+
> uv tool install "rea-video[ocr] @ https://github.com/JuneYaooo/rea-video/archive/3669923645e3953632e7406a57fb883e0ba8a6e0.zip"
|
|
11
|
+
> ```
|
|
12
|
+
>
|
|
13
|
+
> Tools installed this way land in Limix Bot's own folder (no administrator rights needed) and are on PATH from the
|
|
14
|
+
> next command. `<root>` is the folder named by this skill's `root`.
|
|
15
|
+
> Source: https://github.com/JuneYaooo/rea-video/tree/3669923645e3953632e7406a57fb883e0ba8a6e0/skills/rea-video (Apache-2.0).
|
|
16
|
+
|
|
17
|
+
# rea-video:视频制作方式逆向拆解
|
|
18
|
+
|
|
19
|
+
你是视频制作的逆向工程师。用户给你一条视频,你要回答清楚:
|
|
20
|
+
|
|
21
|
+
1. **每个镜头的底层画面是怎么来的?**从 11 类里选:实拍 / 影视片段 / AI 视频 / 数字人 / 3D 渲染 / 2D 动画 / 定格动画 / 代码模板渲染 / 录屏截图 / 静态图推拉 / 静帧。2D 动画、定格动画和影视片段(剪进来的电影、电视剧、短剧画面)工具测不出,要你看图判断。实拍镜头再看有没有被 AI 加工过(换脸、对口型、风格化、换装、换背景),填在 `ai_edits` 里(对照 `references/taxonomy.md`)。
|
|
22
|
+
2. **上面叠了什么?(剪辑包装)**逐句字幕(时间轴、颜色、描边、关键词高亮、入场方式)、花字、标题、章节牌、跟着物体走的标签、表情包 / GIF / 贴纸 / 画中画、版式模板,以及哪些音效卡在文字弹出或贴纸出现上。
|
|
23
|
+
3. **哪些是用户真实素材?**分两类:画面里嵌入的真实像素(实拍、照片、截图、录屏、版式里播放的视频片段),复刻时必须拿到原文件;AI / 3D 画面里出现的商品、Logo、人物,是复刻时要准备的参考图(报告里的「复刻要准备的参考素材」),不是嵌入素材。
|
|
24
|
+
4. **声音怎么做的?**人声(TTS 还是真人)、BGM(风格 / BPM / 调性 / 段落)、音效(时间点、类型、对应哪个画面事件),以及切镜是否卡在节拍上。**重点是来源:AI 生成的还是现成的。**先看视频形式——AI 音乐 MV(整片是一首唱出来的歌)大概率是 AI 歌;普通视频配乐大概率是现成曲库,但 AI 工作流的视频 BGM 也常是 Suno 生成,必须标"待确认"并给确认方法。
|
|
25
|
+
5. **实拍的话,怎么拍、怎么打光、怎么调色、怎么剪?**景别、机位、自拍还是支架、正常速度还是慢动作/延时;主光方向/软硬/光比/色温、有无补光和轮廓光,布光方案(正面柔光、主光 + 补光、侧光、逆光、夜景环境光、低调、高调、彩色氛围光、产品静物、户外直射/阴天/逆光——户外要靠你在 `lighting.location` 里写明"户外");调色风格(自然、青橙、日系、胶片、黑白、暗调);跳切、推近切、插入素材的节奏。
|
|
26
|
+
6. **怎么复刻?**每镜给出路线和工具;实拍镜头给拍摄方案(布光 + 器材清单),不是只写"用 AI 近似",AI 类镜头可以交给 capsule-cinema 生成。
|
|
27
|
+
|
|
28
|
+
核心原则:**每个结论都要有证据,确定不了就如实写"待确认"并说明还缺什么。**宁可写"实拍还是 AI 待确认(倾向 AI 70%)",也不要编一个确定的答案。
|
|
29
|
+
|
|
30
|
+
## 0. 环境
|
|
31
|
+
|
|
32
|
+
先跑 `rea-video --help`。没装就按 `references/setup.md` 安装(需要 ffmpeg、Python ≥ 3.10)。
|
|
33
|
+
|
|
34
|
+
VLM(能看图的多模态模型)建议配,不强制,配置方法也在 `references/setup.md`。没配也照常跑,不要因此中止:
|
|
35
|
+
- 你自己能看图:你就是这次的"VLM",按下面的「看图复核并入」做。
|
|
36
|
+
- 你看不了图:遵守 `references/review.md` 的「看不了图时的规则」,回复末尾一句话建议配置 VLM。
|
|
37
|
+
|
|
38
|
+
**VLM 是否真的生效,以 `rea-video summary` 的 `VLM:` 一行为准**:`failed` / `not_configured` 等同没开,报告里如实写。
|
|
39
|
+
|
|
40
|
+
## 1. 标准流程
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# ⓪ 先看记住了什么:用户偏好(默认引擎、是否开 VLM、给你的偏好说明)和常见纠正类型
|
|
44
|
+
rea-video memory
|
|
45
|
+
# ① 拆解(产出 out/<名>/breakdown.json、report.html、report.md、storyboard.jpg、audio.png、shots/、stems/)
|
|
46
|
+
rea-video --env-file <你的 .env> decompose ref.mp4 -o out/ref --vlm --lang <zh|en> # --lang 按用户提问的语言选(见「交付给用户」);没有 VLM 配置就去掉 --env-file 和 --vlm;字幕/花字是日文就加 --ocr-lang ja
|
|
47
|
+
# ② 看紧凑摘要:低置信镜头会被标出;先看 VLM: 那一行确认 VLM 是否生效
|
|
48
|
+
rea-video summary out/ref/breakdown.json
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**省 token**:结果以 `rea-video summary` 为准,不要整份读 `breakdown.json`(几十万字)或 `report.md`(附录占一半)。要某一节时先 `grep -n '^##' out/ref/report.md` 找行号,只读那一节;复核时每镜看 `shots/shot_XXX.jpg` 联系表就够(已含首 / 中 / 尾帧),`_first` / `_last` 是复刻时给生成模型参照用的,不用另开。
|
|
52
|
+
|
|
53
|
+
### 看图复核并入(能看图的 agent 必做,开了 VLM 也建议做低置信镜头)
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
rea-video review out/ref # 写出 review_tasks.json(每镜要看的图、工具判断、优先级)和 review_answers.json(答案模板)
|
|
57
|
+
# 读 review_tasks.json 的 instructions,逐镜看 images 里的图(priority=high 必看),把 label_probs / evidence / description / narrative / embedded_assets 填进 review_answers.json;narrative 是「这个镜头在讲什么」:role 选叙事作用(抓注意 / 交代背景 / 补信息 / 给证据 / 转折 / 给结论 / 引导行动 / 渲染情绪),point 一句话写它讲的那一点,报告会连成「叙事线」;若某镜头实为多刀合并(暗底图形与暗底口播交替时容易被合成一个长镜头),可加 split_suggestion(cuts 切点秒数 + labels 各段类别 + note),报告会在该镜头标注拆分建议,镜头边界本身不变
|
|
58
|
+
# 顶层 cast 填整片的角色 / 场景 / 道具(同一个角色跨镜头认成同一个,外观写到能据此复刻)和一句视觉风格;没开 VLM 时报告的「角色、场景与道具」一节全靠这里
|
|
59
|
+
rea-video apply-review out/ref --by <你的名字> # 并入:重写 breakdown.json、report.md、report.html,打印改判了哪些镜头
|
|
60
|
+
rea-video summary out/ref/breakdown.json # 用并入后的结果写回复
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
没看过的镜头 label_probs 留空 `{}`,会被跳过。你的答案会和确定性结果融合(不是直接覆盖),所以帧率、AIGC 标识这类强证据仍然起作用;如果并入后的结论和你的看法不同,在回复里写明理由。
|
|
64
|
+
|
|
65
|
+
融合规则、看不了图时怎么办、原片 / 转码视频的特殊规则,见 `references/review.md`。能看图时**一定要做看图复核**,开了 VLM 也要做,并且独立判断,不要照抄 VLM。
|
|
66
|
+
|
|
67
|
+
然后**一定要自己复核**,不要直接转述工具输出:
|
|
68
|
+
|
|
69
|
+
1. 先看 `storyboard.jpg` 和 `audio.png`,对整片建立整体印象。
|
|
70
|
+
2. 对标了"低置信,需要复核"的镜头,或"次选"概率很接近的镜头:
|
|
71
|
+
- 打开 `shots/shot_XXX.jpg`(首、中、尾联系表)。
|
|
72
|
+
- 必要时抽帧细看:`rea-video tiles ref.mp4 --start 12.3 --end 13.1 --every 0.1 -o out/ref/check.jpg`。
|
|
73
|
+
- 按 `references/taxonomy.md` 的"易混对照表"逐条核对。
|
|
74
|
+
3. 角色与场景:`rea-video summary` 的「角色 / 场景」几行(`report.md`「角色、场景与道具」一节)。核对同一个角色有没有被 VLM 认成几个(逐镜描述里叫法不一致是常见问题),复刻时每个角色固定一张参考图贯穿所有生成单元;不对就在 `review_answers.json` 顶层 `cast` 里改。
|
|
75
|
+
4. 声音按 `references/audio.md` 复核:先听 `stems/vocals.wav`(人声干声)和 `stems/music.wav`(配乐),再看 `rea-video summary` 里的"声音来源"一行(视频类型 → 人声 / 音乐 / 音效来源)。信号层面检出的音效只是**低置信候选**,音效清单以 VLM 听到的为准;没开 VLM 时要说明"轻音效可能漏检"。
|
|
76
|
+
5. **实拍(口播 / 桌拍 / vlog / 商品)**:`rea-video summary` 末尾按维度列出「取景 / 机位 / 打光 / 剪辑 / 形式」(`report.md`「拍法、打光与剪辑」一节,含复刻拍摄方案和器材)。
|
|
77
|
+
工具在画面主体上测量:有人脸用人脸,没有人脸(桌拍、商品、手)用画面里最清晰的区域,后者的景别是估算。
|
|
78
|
+
看图时在 `review_answers.json` 每镜的 `aspects` 和顶层 `aspects` 里补像素测不出的:机位角度、自拍还是支架、主光是什么光源、眼神光、轮廓光/背景灯、画面里的光源、推测设备、视频形式。报告里测量、VLM、看图三个来源并列,不平均。
|
|
79
|
+
注意:平台转码会压暗部,软硬和补光的测量偏保守。AI / 3D 画面也会给光影描述,但标明「不是拍摄方案」,只用于写生成提示词。
|
|
80
|
+
6. 真实素材按 `references/materials.md` 复核:代码模板里嵌入的截图和照片,确定性检测能找出大部分,但**暗色、半透明的背景照片会漏**。
|
|
81
|
+
7. 剪辑包装(`rea-video summary` 的「包装:」几行,`report.md`「剪辑包装层」一节,文件在 `packaging/`):
|
|
82
|
+
- 字幕时间轴和样式是测出来的,一般可信;字体是什么要你看图补(工具只给颜色、描边、底框、字高)。
|
|
83
|
+
- 贴纸:标了「需要看图确认」的,看 `packaging/sticker_XX.jpg` 和 `review_tasks.json` 里的 `frame_cmd`,在 `review_answers.json` 的 `packaging.stickers` 里填 `is_overlay` 和 `what`;工具漏掉的写进 `packaging.missed`。3D / 动画 / 版式画面里突然出现的物体工具不算贴纸,你看到是后期贴的再补。
|
|
84
|
+
- 花字和标签分错类时在 `packaging.text` 里改 `kind`。
|
|
85
|
+
- 音效「对应画面」一列是按时间就近对齐的,没开 VLM 时补出的候选(来源 `deterministic_anchored`)实测只有约四成是真音效,写成"可能"。
|
|
86
|
+
- 「按台词定位」是花字 / 标题 / 贴纸落在哪句字幕上(句中第几秒、对上哪个词),「常驻图层」是跨切镜不变的免责声明、标题栏、角标。只在有字幕时才有;定位按时间推的,看图觉得不对就在回复里说明。
|
|
87
|
+
8. 第 3、5、6、7 步改了 `review_answers.json` 的,改完**再跑一次** `rea-video apply-review out/ref --by <你的名字>`,否则这些修改进不了报告。
|
|
88
|
+
9. 如果你的判断和工具不同,以你的复核为准,在回复里写明理由;有价值的话,建议用户把这条视频加进评测集(仓库 `docs/dev/evaluation.md`)。
|
|
89
|
+
|
|
90
|
+
用户指出判错或说出长期偏好时,按 `references/memory.md` 记下来(`rea-video correct` / `rea-video prefs`)。
|
|
91
|
+
|
|
92
|
+
## 2. 交付给用户
|
|
93
|
+
|
|
94
|
+
按 `references/output-template.md` 回复:先一句话结论,再内容与角色(这条视频讲什么、主要角色和场景),叙事线(每一步在抓注意、补信息还是给结论,见 `report.md`「内容与结构」;建议用户保留这条线、换成自己的案例和素材来重写,不只是换个主角),然后复刻方案(按生成单元 / 拍摄场次组织)、分镜表、剪辑包装、声音、真实素材清单、不确定点,最后给 `report.html` 路径。不要把 breakdown.json 贴进对话。
|
|
95
|
+
|
|
96
|
+
**报告和回复都用用户的语言。**语言的判断顺序:用户明确指定的语言(「用英文出报告」「report in Chinese」)> 用户提问所用的语言 > `rea-video memory` 里的 `lang` 偏好 > 中文。
|
|
97
|
+
- 工具支持 `--lang zh` 和 `--lang en`:`decompose` 时就传对,报告文件(`report.html` / `report.md`)、`summary` 输出、VLM 的画面描述和提示词都会是该语言;忘了传可以在 `apply-review out/ref --lang en` 时补上(会重新生成结论和报告文字;VLM 已写好的描述和提示词保持原语言)。看图复核时,`review_answers.json` 里的 evidence / description / prompt 也用这个语言写。
|
|
98
|
+
- 用户用日语、韩语等工具不支持的语言提问时,跑 `--lang en`,回复用用户的语言写;用户要该语言的报告文件时,把 `report.md` 翻译成 `report_<语言>.md` 放在同一目录,并说明 `report.html` 是英文的。
|
|
99
|
+
- 用户设了长期偏好(「以后都出英文报告」)就 `rea-video prefs lang en` 记下来。
|
|
100
|
+
|
|
101
|
+
## 3. 复刻(需要时)
|
|
102
|
+
|
|
103
|
+
见 `references/remake.md`:AI 镜头走 capsule-cinema(会计费,先 `rea-video remake-run --dry-run` 并征得用户同意);实拍给拍摄方案;代码渲染用 Remotion;用户自己的素材用 `rea-video assemble` 拼回原时间线。
|
|
104
|
+
|
|
105
|
+
## 参考文件
|
|
106
|
+
|
|
107
|
+
| 文件 | 什么时候看 |
|
|
108
|
+
|---|---|
|
|
109
|
+
| `references/setup.md` | 安装、配置 VLM |
|
|
110
|
+
| `references/review.md` | 看图复核:融合规则、看不了图、原片判 AI、平台转码 |
|
|
111
|
+
| `references/taxonomy.md` | 11 类画面、AI 加工、判断要点速查、易混对照 |
|
|
112
|
+
| `references/audio.md` | 声音复核 |
|
|
113
|
+
| `references/materials.md` | 真实素材复核 |
|
|
114
|
+
| `references/output-template.md` | 交付格式 |
|
|
115
|
+
| `references/remake.md` | 复刻、对接 capsule-cinema |
|
|
116
|
+
| `references/memory.md` | 记住纠正和偏好 |
|
|
117
|
+
|
|
118
|
+
## 4. 不要做的事
|
|
119
|
+
|
|
120
|
+
- 不要只凭画风判断。卡通 3D 风格既可能是 AI 视频,也可能是 Blender 渲染,要看形变、闪烁和几何稳定性。
|
|
121
|
+
- 不要把代码渲染画面里的文字算成"叠加层",那些文字就是画面本身。
|
|
122
|
+
- 不要把用户的真实素材写成"可用 AI 生成"。
|
|
123
|
+
- 不要把元数据缺失当成"不是 AI"的证据,平台转码常会清除元数据。
|
|
124
|
+
- 不要在用户确认之前调用付费生成。
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "rea-video",
|
|
3
|
+
"name": "rea-video",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"description": "Reverse-engineers how a video was made, shot by shot (live action, AI, 3D, screen recording...), its subtitles, sound and editing, and how to remake it.",
|
|
6
|
+
"defaultEnabled": true,
|
|
7
|
+
"triggerTerms": [
|
|
8
|
+
"video này làm",
|
|
9
|
+
"video này được làm",
|
|
10
|
+
"phân tích video",
|
|
11
|
+
"mổ xẻ video",
|
|
12
|
+
"làm lại video",
|
|
13
|
+
"dựng lại video",
|
|
14
|
+
"video có phải ai",
|
|
15
|
+
"video ai hay thật",
|
|
16
|
+
"how was this video made",
|
|
17
|
+
"remake this video",
|
|
18
|
+
"reverse engineer this video",
|
|
19
|
+
"这条视频怎么做",
|
|
20
|
+
"视频怎么做的",
|
|
21
|
+
"是不是ai",
|
|
22
|
+
"怎么复刻",
|
|
23
|
+
"rea-video"
|
|
24
|
+
],
|
|
25
|
+
"requiredCapabilities": [],
|
|
26
|
+
"source": {
|
|
27
|
+
"repo": "JuneYaooo/rea-video",
|
|
28
|
+
"commit": "3669923645e3953632e7406a57fb883e0ba8a6e0",
|
|
29
|
+
"folder": "skills/rea-video",
|
|
30
|
+
"license": "Apache-2.0"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# 声音拆解
|
|
2
|
+
|
|
3
|
+
工具产出:`breakdown.json` 的 `audio`(测量值)和 `audio_plan`(与 VLM 合并后的结果和复刻方案),以及 `audio.png` 时间轴。
|
|
4
|
+
|
|
5
|
+
## 能信多少
|
|
6
|
+
|
|
7
|
+
| 项 | 方法 | 可靠度(capsule-cinema 样本) |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| 有无人声 | 人声频段的音节调制(3–8Hz),加上句间停顿 | 高 |
|
|
10
|
+
| 有无 BGM | 人声间隙里仍有响亮、有音调的声音(谐波占比 >0.62);没有人声时看谐波持续性;或者有明显节拍周期。整段只有一个音高(测试音、蜂鸣、带谐波的电流嗡声,底下有点底噪也一样)不算音乐,记为 `steady_tone` | 高 |
|
|
11
|
+
| BPM | 打击成分起音包络的自相关,同时给出半速/倍速候选;持续音、长音铺底这类几乎没有打击成分的声音报「无明显节拍」,不给 BPM;打击成分很少、周期也很弱的(没有鼓的铺底)同样不给 | 高(咸鸭蛋 110.0 vs 真值 110.15) |
|
|
12
|
+
| 调性 | 色度 + Krumhansl 调性轮廓 | 中高(两条真值都对:D major) |
|
|
13
|
+
| 段落变化 | 色度和响度的新颖度峰值 | 中 |
|
|
14
|
+
| 音效 | 人声段落之外非常突出的瞬态,且不在节拍上;有 BGM 时要求更突出;瞬态处要有真实的打击能量(持续音的压缩噪声不算),音轨最后 0.1 秒的截断声不算 | **低**:在人声 + BGM 的混音里,信号层面实测精度只有约 0.2,轻音效基本测不出。音效清单以 VLM 为准 |
|
|
15
|
+
| TTS 还是真人 | 交给 VLM | — |
|
|
16
|
+
| 男声 / 女声 | 基频中位数(<150Hz 偏男声,>200Hz 偏女声) | 中,只作参考 |
|
|
17
|
+
| 卡点剪辑 | 切点落在节拍上的比例 vs 随机概率 | 中高 |
|
|
18
|
+
|
|
19
|
+
## 剥离音轨
|
|
20
|
+
|
|
21
|
+
`decompose` 默认把声音剥成三条轨,放在 `stems/` 下(`rea-video stems <视频>` 可以只做这一步):
|
|
22
|
+
|
|
23
|
+
| 文件 | 内容 |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `original.wav` | 原声(视频里的完整混音) |
|
|
26
|
+
| `vocals.wav` | 人声干声:旁白、口播、歌声。注意:键盘声、"叮"之类的瞬态音效也会落在这里 |
|
|
27
|
+
| `music.wav` | 配乐 + 环境声 |
|
|
28
|
+
|
|
29
|
+
模型是 UVR MDX-Net Inst HQ 3(ONNX,CPU 即可,首次运行从 GitHub 下载约 67 MB,缓存在 `~/.cache/rea-video/models`,可用 `REA_VIDEO_MODELS` 改位置)。实测 TTS + Suno BGM 混音分离 SDR 约 19.7 dB;纯 BGM 漏进人声轨 −42 dB。约 0.6 倍实时(4 核)。
|
|
30
|
+
|
|
31
|
+
复核时**直接听 vocals.wav 和 music.wav**,比听混音容易判断:人声是唱还是说、是不是 TTS,配乐有没有人声、结尾是不是被截断。
|
|
32
|
+
|
|
33
|
+
## 来源判断:AI 生成还是现成的?
|
|
34
|
+
|
|
35
|
+
**一句话结论**在 `sound_sources.summary_zh`,格式是"视频类型 → 人声 / 音乐 / 音效来源":
|
|
36
|
+
|
|
37
|
+
| 视频类型 | 人声 | 音乐 | 音效 |
|
|
38
|
+
|---|---|---|---|
|
|
39
|
+
| 音乐 MV / 歌曲类 | 歌曲自带的演唱 | **AI 生成**(Suno 等)为主 | 音效库 |
|
|
40
|
+
| AI 视频原生出声 | 视频模型生成 | 后期配乐 | 视频模型生成 |
|
|
41
|
+
| 实拍 | 同期声 / 真人配音 | 现成配乐 | 同期声 |
|
|
42
|
+
| 旁白/口播 + 配乐 | TTS 或真人配音 | **现成曲库**为主(AI 工作流也常用 Suno 垫乐) | 音效库 |
|
|
43
|
+
| 纯配乐 | — | 现成曲库 | 音效库 |
|
|
44
|
+
|
|
45
|
+
工具产出:`breakdown.json` 的 `sound_sources`(music / voice / sfx 各自的 `source`、`leaning`、`probs`、`evidence`、`how_to_confirm`)。
|
|
46
|
+
|
|
47
|
+
### 第一步:先看视频形式(决定先验)
|
|
48
|
+
|
|
49
|
+
| 形式 | 怎么认 | 音乐来源先验 |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| **AI 音乐 MV**(整片就是一首带人声的歌) | VLM 说 format=MV;或确定性层:音乐铺满全片(>85%)**且人声是唱的**(`voice.style` = singing / rap_or_rhythmic,在分离出的干声上测) | AI 生成 60%(未开 VLM 时降权为 45%) |
|
|
52
|
+
| **普通视频配乐**(旁白/口播 + 垫底 BGM,或无人声的纯配乐) | 人声是说话(`voice.style` = speech),或没有人声 | 现成曲库 60% |
|
|
53
|
+
|
|
54
|
+
"唱"和"说"在**人声干声**上判断,两个信号:
|
|
55
|
+
|
|
56
|
+
- 持续音高(`sustained_note_ratio`):唱歌会在一个音高上停留 ≥160ms,>0.3 算唱。实测 TTS 旁白 0.14–0.15,说唱 0.24(说唱本来就不拖长音)。
|
|
57
|
+
- 副歌重复(`chorus_repeat_share`):4 秒的人声旋律片段在 6 秒以后又出现。>0.1 算歌(包括说唱)。实测 AI 说唱 MV 0.26,TTS 旁白 0.00。短视频只截了一段、没有重复的副歌时,这个信号会失效。
|
|
58
|
+
|
|
59
|
+
### 第二步:用证据修正
|
|
60
|
+
|
|
61
|
+
| 证据 | 指向 | 权重 |
|
|
62
|
+
|---|---|---|
|
|
63
|
+
| 歌词唱的就是本片的角色/商品/剧情(VLM `lyrics_match_content`) | AI 生成(定制歌) | 强 |
|
|
64
|
+
| VLM 认出歌名(`song_guess`) | 知名歌曲 | 强 |
|
|
65
|
+
| 平台音乐标签是具体歌名(`--meta`) | 现成曲目 | 强 |
|
|
66
|
+
| 平台标签是「@作者创作的原声」 | 不是平台曲库;MV 类多为 AI 歌 | 中 |
|
|
67
|
+
| 片尾音乐满音量被硬切 | 截取的现成曲目 | 弱 |
|
|
68
|
+
| 音乐和视频一起收尾 | 按片长定制/剪辑(两种都可能) | 很弱 |
|
|
69
|
+
| 文件带 AIGC 隐式标识 | 整片声明含 AI 内容 | 很弱 |
|
|
70
|
+
|
|
71
|
+
最高概率 <45% 时输出"待确认",同时给出倾向(`leaning`)。
|
|
72
|
+
|
|
73
|
+
### 已知陷阱(一定要在回复里提醒)
|
|
74
|
+
|
|
75
|
+
**AI 工作流做出来的普通视频,BGM 也常是 Suno 生成的**(capsule-cinema 自己的 monkey_wine、咸鸭蛋、鸟窝都是)。"普通配乐 = 曲库"的先验在这类视频上会错,而纯听感/信号特征分不开 Suno 器乐和曲库器乐。所以普通配乐的结论必须写成"倾向曲库,待确认",并给出确认方法:
|
|
76
|
+
|
|
77
|
+
1. 抖音/小红书原页面的音乐标签(`--meta` 传进来最好)。
|
|
78
|
+
2. 汽水音乐 / QQ 音乐「听歌识曲」或 ACRCloud:识别得到就是现成歌曲;识别不到不代表是 AI(曲库冷门曲也常识别不到)。
|
|
79
|
+
3. 听感:AI 歌咬字含糊、高频发虚带金属感、歌词紧扣画面;AI 器乐常见结构一成不变、结尾突然收住或循环拼接。
|
|
80
|
+
|
|
81
|
+
### 人声和音效的来源
|
|
82
|
+
|
|
83
|
+
- **人声**:TTS / AI 视频自带人声 / 真人录音。镜头切换处底噪跳变(`per_clip_audio.resets_at_cuts`)说明每段声音跟着画面片段走,是 AI 视频模型原生出声(如 Veo、Seedance 带音频)或实拍同期声。
|
|
84
|
+
- **音效**:多数来自现成音效库(mixkit、爱给等);AI 视频模型原生出声时音效也跟着片段走。确定性层只能给倾向,清单以 VLM 为准。
|
|
85
|
+
|
|
86
|
+
## 复核方法
|
|
87
|
+
|
|
88
|
+
1. 看 `audio.png`:人声条、音乐条和切镜线是否对得上直觉。
|
|
89
|
+
2. 音效有疑问时,抽那一段画面看看有没有对应事件(文字弹出、转场、动作):`rea-video tiles`。
|
|
90
|
+
3. VLM 给出 `source_guess=popular_song`,或平台标签是具体歌名时,在复刻方案里写明"需要授权或替换"。
|
|
91
|
+
4. 音乐来源按上面的"来源判断"写,普通配乐不要写成确定的"曲库"。
|
|
92
|
+
|
|
93
|
+
## 复刻
|
|
94
|
+
|
|
95
|
+
- **人声**:capsule-cinema 的 DoubaoTTSTool / UniversalTTSTool 或 MiniMax 克隆;要卡原时间窗时用时长可控 TTS。
|
|
96
|
+
- **BGM**:按 BPM、调性、情绪用 Suno(UniversalMusicGenerationTool)或曲库;在段落变化点对齐镜头。
|
|
97
|
+
- **音效**:按时间点摆放;有音高的音效对齐 BGM 调性(capsule-cinema plush 配方的 sfx.py / cues.py 就是这样做的)。
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# 用户真实素材
|
|
2
|
+
|
|
3
|
+
**定义**:画面里不是制作方生成或渲染、而是从现实中引入的像素,包括实拍视频、真实照片、网页/App 截图、录屏、版式里播放的视频片段、贴上去的 Logo / 商品图。复刻时这些必须由用户提供原文件,**不能写成"用 AI 生成"**。
|
|
4
|
+
|
|
5
|
+
**和「参考素材」分开**:AI 视频、数字人、3D 画面里出现的商品、Logo、人物,像素是模型或渲染器做出来的,不算真实素材;它们记在 `material.references`,报告里是「复刻要准备的参考素材」,复刻时作为参考图(`@图片N`)喂给模型。实拍画面里的商品是道具,同样记为参考。
|
|
6
|
+
|
|
7
|
+
## 工具怎么标
|
|
8
|
+
|
|
9
|
+
- **整帧**:
|
|
10
|
+
- 实拍 → 实拍视频素材
|
|
11
|
+
- 录屏/截图 → 录屏素材或界面截图(静止的算截图)
|
|
12
|
+
- 静帧/推拉且来源是照片或截图 → 真实照片或截图
|
|
13
|
+
- 静帧来源不明(没开 VLM)→ "图片素材(真实/AI 待确认)",不计为真实素材
|
|
14
|
+
- **嵌入**(只在渲染画面里检测,即代码渲染、录屏、3D、渲染卡片):
|
|
15
|
+
- 照片纹理区域:灰度熵高、无平涂,且不在字幕带 → 照片/图片素材,**标为"真实还是 AI 待确认"**(模板里贴的也可能是 AI 图)。要么由 VLM 确认,要么你自己看图判断
|
|
16
|
+
- 浅色面板 + 单帧 ≥6 处小字 → 界面截图(直接算真实素材)
|
|
17
|
+
- 区域内有运动而周围静止 → 嵌入视频片段或录屏
|
|
18
|
+
- **VLM**:`embedded_assets` 里 `is_real_material=true` 的条目。底层是渲染版式(代码、录屏、静图)时算嵌入素材,VLM 说的 `real_footage` 记为「嵌入视频片段」(它可能本身是 AI 视频);底层是 AI 视频 / 数字人 / 实拍,或 3D 里的商品、Logo、人物,记为参考素材。
|
|
19
|
+
|
|
20
|
+
## 已知漏检
|
|
21
|
+
|
|
22
|
+
- 暗色、半透明、作为氛围背景的照片(例如 mediank 的 NASA 背景图):纹理对比太低,确定性检测不出来。看到深色模板时,要自己看一眼背景。
|
|
23
|
+
- 暗色主题网页截图:不是浅色面板,检测不到,要看画面里有没有浏览器或界面框。
|
|
24
|
+
- 实拍或 AI 画面里叠加的小 Logo、商品图:确定性层不在照片底图上做嵌入检测(容易误报),依赖 VLM。
|
|
25
|
+
|
|
26
|
+
## 素材库空镜
|
|
27
|
+
|
|
28
|
+
城市航拍、延时、风景、商务人物、手部特写这类和视频主体无关的实拍空镜,常是从素材网站买的,不是作者自己拍的。工具会把它们标成「实拍视频素材」。看图时在 `description` 写明「疑似素材库空镜」,交付时和作者自拍的素材分开列:复刻时到素材网站找同类即可,不用向用户要原片。
|
|
29
|
+
|
|
30
|
+
影视片段(`film_footage`)同理:素材来自片方,交付时写「需要找原片对应片段,商用要授权」,不要写成用户自己的素材。
|
|
31
|
+
|
|
32
|
+
## 交付时的写法
|
|
33
|
+
|
|
34
|
+
逐条列出:镜头号、时间、素材类型、画面位置、内容描述,以及"复刻时需要你提供:……"。
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# 记住用户的纠正和偏好
|
|
2
|
+
|
|
3
|
+
- 用户指出某个镜头判错("这是定格动画不是 AI"、"这段是我自己拍的素材"):运行
|
|
4
|
+
`rea-video correct out/ref --shots 3,5 --label stop_motion --note "<用户原话>"`(`--label` 填用户说的那一类,类别名见 `taxonomy.md`:定格动画是 `stop_motion`,静态图 + 推拉是 `still_motion`;也可用 `--start/--end` 指定时间段,`--shots all` 表示整条;真实素材用 `--real yes|no`)。
|
|
5
|
+
这会立刻改结论和报告,并记入 `~/.rea-video/corrections.jsonl`;以后拆同一个文件会自动套用,同类镜头会在复核任务里提示。
|
|
6
|
+
- 用户说出长期偏好:能对应参数的用 `rea-video prefs engine kling2.1`、`prefs vlm on`、`prefs env_file <路径>`、`prefs reviewer <名字>`、`prefs capsule_root <capsule-cinema 路径>`;其余的用 `rea-video prefs --note "报告尽量短,重点写复刻方案"` 记下,下次 `rea-video memory` 会显示,按它调整回复。
|
|
7
|
+
- 只记用户明确说的,不要把你自己的猜测写成纠正。纠正不会自动改分类权重;积累到几条以后,用 `rea-video memory --export-labels eval/user_labels.yaml` 导出成评测样本,再按开发约定评测、改规则(仓库 `docs/dev/evaluation.md`)。
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# 交付给用户
|
|
2
|
+
|
|
3
|
+
## 原则
|
|
4
|
+
|
|
5
|
+
- 先给一句话结论(这条视频是怎么做出来的),再用两三行说内容和角色(讲什么、主要角色 / 场景 / 商品,`report.md`「角色、场景与道具」一节),再给**复刻方案**(`breakdown.json` 的 `production_plan`,报告里「复刻方案」一节),然后才是分镜表。
|
|
6
|
+
- 复刻方案按实际制作的组织方式写,不按剪辑镜头逐个写:
|
|
7
|
+
- AI 镜头 → **生成单元**:几个连续镜头一次生成、用哪个模型、参考素材(`@图片` 产品/人物、`@视频` 原片片段)、合并后的多镜头提示词、单元之间怎么衔接。默认引擎不支持一次多镜头时,照抄 `engine_note`,说明换模型能省几次调用。
|
|
8
|
+
- 实拍镜头 → **拍摄场次**:哪些镜头是同一场景、同一机位,一起拍;每个场景的布光;先大景别后特写。分镜表本身仍然逐镜写细。
|
|
9
|
+
- 代码渲染 → 几段代码合成,每镜写清画面元素和动效(报告「代码合成」一节的逐镜动效时间轴:元素位置、出现时间、方向、快慢、色值,元素截图在 `shots/`);静图推拉 → 本地重建。
|
|
10
|
+
- 提示词缺失(未开 VLM)时,你看图补写:`rea-video review` 的答案里每镜填 `replication.image_prompt / video_prompt / video_prompt_en`,`apply-review` 后生成单元会自动带上。
|
|
11
|
+
- 然后写剪辑包装(字幕样式和时间轴文件、花字 / 贴纸清单、音效卡点)、声音拆解、真实素材清单,最后写不确定点。
|
|
12
|
+
- 报告文件路径(`report.html`)写给用户。有代码渲染镜头、用户要复刻时,告诉用户复刻要用整个报告目录(`shots/` 里的元素截图和关键帧条、`packaging/` 里的字幕文件),只给 HTML 或 PDF 会缺单张截图。不要把 breakdown.json 整段贴进对话。
|
|
13
|
+
|
|
14
|
+
## 语言
|
|
15
|
+
|
|
16
|
+
报告语言跟 `--lang` 走(zh / en),回复语言跟用户走;两者的判断顺序见 SKILL.md「交付给用户」。下面的模板是中文版,英文回复用同样的结构:one-line verdict → content and cast → remake plan → shot list → packaging → audio → material you must supply → open questions → report path。
|
|
17
|
+
|
|
18
|
+
## 回复模板(中文)
|
|
19
|
+
|
|
20
|
+
**一句话结论**:混合制作——底层画面 AI 生成视频 62%、代码模板 30%、实拍 8%;全片字幕由代码叠加;引入了 2 段真实截图;女声 TTS + 110 BPM 流行 BGM,切镜卡在节拍上。
|
|
21
|
+
|
|
22
|
+
**内容与角色**:剧情短片,4 镜;主角 A「小黄」(黄色卡通小河马,粉色连体衣、斜挎粉包,全片出场)、B 男友(同款配色,#3–#4);场景 S1 白天城市街道。复刻时 A、B 各固定一张参考图贯穿所有生成单元。
|
|
23
|
+
|
|
24
|
+
**分镜表**
|
|
25
|
+
|
|
26
|
+
| # | 时间 | 制作方式(置信度) | 素材来源 | 叠加层 | 关键证据 | 复刻路线 |
|
|
27
|
+
|---|---|---|---|---|---|---|
|
|
28
|
+
| 1 | 0:00–0:02.5 | AI 视频(86%) | AI 生成 | 字幕、标题 | 24→30 重复帧;手指形变 | capsule-cinema 首尾帧 |
|
|
29
|
+
|
|
30
|
+
**拍法、打光与剪辑**(有实拍镜头时写,对应 `rea-video summary` 末尾的取景 / 机位 / 打光 / 剪辑 / 形式几行):视频形式(口播/桌拍/vlog)、景别和机位角度、手持还是支架、机位/场景数;布光方案(主光方向和高度、光比、软硬、色温、有无补光/轮廓光、画面里的光源);剪辑手法(跳切剪气口、推近切、插入截图/录屏的比例);给一份复刻器材清单。测量值和你看图的结论冲突时写明依据。
|
|
31
|
+
|
|
32
|
+
**剪辑包装**:字幕(几句、位置、颜色 / 描边 / 底框、关键词高亮、入场方式,SRT/ASS 文件路径);花字、标题、章节牌、跟随标签(时间、文字、样式、动画);贴纸 / GIF / 表情包 / 画中画(时间、位置、贴的是什么、是否循环);哪些音效卡在文字弹出或贴纸出现上;花字 / 贴纸跟哪句台词(「按台词定位」)、哪些是常驻图层。工具没测到、你看图补的写明。
|
|
33
|
+
|
|
34
|
+
**声音**:人声(TTS 还是真人、音色,台词见报告脚本表)/ BGM(歌名猜测、风格、BPM、调性、来源与版权风险、段落)/ 音效(时间点 → 对应画面事件)/ 混音(是否压低音乐)。报告「声音」一节每一项是一张卡,照着抄即可。
|
|
35
|
+
|
|
36
|
+
**需要你提供的真实素材**:镜头 #4 中部的 GitHub 页面截图……
|
|
37
|
+
|
|
38
|
+
**复刻方案**:按 `production_plan` 写。AI 镜头写生成单元(镜头范围、模型、参考素材、多镜头提示词、衔接);实拍镜头写拍摄场次(场景 → 机位 → 镜头,布光);代码渲染写几段代码合成、每段用什么做法,并指向逐镜动效时间轴和元素截图;静图推拉一句。涉及付费的操作先确认。
|
|
39
|
+
|
|
40
|
+
> 例:AI 画面 8 镜 → 3 个生成单元、3 次 Seedance 2.5 调用(默认的 Seedance 2.0 不支持一次多镜头,逐镜要 8 次)。G1 #1–#5(9.0s):@图片1 产品图 + @视频1 原片 0–9s,一次出 5 个镜头……
|
|
41
|
+
|
|
42
|
+
**不确定的地方**:#7 实拍还是 AI 待确认(倾向 AI 64%):没有手部和文字可供判断,建议……
|
|
43
|
+
|
|
44
|
+
**报告**:out/ref/report.html
|
|
45
|
+
|
|
46
|
+
**VLM**:照抄 `rea-video summary` 的 `VLM:` 一行(已生效 / 部分生效 / 全部调用失败 / 未配置 / 未开)。没生效、而且你自己也看不了图时,加一句建议:"配置任意多模态模型(REA_VLM_BASE_URL / REA_VLM_API_KEY / REA_VLM_MODEL)后加 --vlm 重跑,实拍/AI/3D 的判断会更准。"你能看图时写"由 agent 看图复核"即可。
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# 复刻
|
|
2
|
+
|
|
3
|
+
## 各类镜头怎么复刻
|
|
4
|
+
|
|
5
|
+
- **AI 类镜头**:用原镜头首尾帧加 VLM 提示词,通过 capsule-cinema 生成(会计费,先 `--dry-run`,并征得用户同意)。
|
|
6
|
+
- **静态图推拉、静帧**:本地按测得的运动参数重建。
|
|
7
|
+
- **代码渲染**:用 Remotion 重建。把报告「代码合成」一节(每镜做法、逐镜动效时间轴、色值)连同 `shots/` 里的元素截图、关键帧条和 `packaging/overlays.ass` 一起交给写代码的人或 LLM;按时间轴的时间和位置写动画,按截图重画图形,图标 / Logo / 插画这类画不出来的直接抠图用。
|
|
8
|
+
- **真实素材**:列清单让用户提供。
|
|
9
|
+
- **声音**:TTS、BGM(按 BPM / 调性 / 情绪)、音效(按时间点)三条轨分别准备。
|
|
10
|
+
- **剪辑包装(字幕、花字、贴纸)**:不进生成。生成模型只出干净的人和画面,包装层最后按「剪辑包装层」的时间轴叠上去,这样字不会被模型画糊,换文案时也只改包装层。
|
|
11
|
+
- 首尾帧上带着原片字幕的,`remake-plan` 的任务里有 `overlays_in_frames` 和警告:先擦掉字再当参考图,否则生成画面会照抄原字幕。
|
|
12
|
+
- 换文案时,花字和贴纸按报告里的「按台词定位」放到新文案的对应句子上,不沿用原秒数;「常驻图层」整段叠一次。
|
|
13
|
+
|
|
14
|
+
**用户自己拍的素材、或在网页上手动生成的视频,拼回原时间线**(不需要 capsule-cinema):
|
|
15
|
+
|
|
16
|
+
1. 按分镜表(`report.md` 的镜头号和时长)把素材对应到镜头。一条长素材覆盖多个镜头时,先用 ffmpeg 按动作切开;拿不准对应关系时给用户看截图确认。
|
|
17
|
+
2. 写一个 `results.json`:`{"results": {"<镜头号>": {"video": "<素材绝对路径>"}, ...}}`。手动生成的「生成单元」视频覆盖多个镜头时,同样先按单元提示词里的「镜头i(a–b s)」时间切开再填。
|
|
18
|
+
3. `rea-video assemble out/ref/breakdown.json <results.json 路径>`:每段生成素材整段变速塞进原镜头时长(最多快 3 倍、慢 1.25 倍,超出部分再裁),切点和原片对齐,没填的镜头暂时用原片占位,声音沿用原片;输出 `remake.mp4` 和左右对比的 `compare.mp4`。告诉用户哪些镜头还是原片占位、声音还要换。
|
|
19
|
+
- 加 `--overlays`:把测得的字幕 / 花字 / 标题按原样式叠到换掉的镜头上(原片占位的镜头本来就有字,不重复叠)。字体是通用无衬线体,颜色和底框是测量值,可能和原片有出入;贴纸只在 `assemble_log.json` 的 `stickers_to_add` 里列出来,要自己找素材贴。
|
|
20
|
+
|
|
21
|
+
**自动生成的限制**:`remake-plan` 和 capsule-cinema 目前还是一个镜头调一次模型;报告里「生成单元」的多镜头提示词要用户手动贴到支持多镜头的模型(如即梦 / Seedance 2.5)上用。向用户说明这一点,并给出两种做法的调用次数。
|
|
22
|
+
|
|
23
|
+
## 对接 capsule-cinema
|
|
24
|
+
|
|
25
|
+
生成要用 capsule-cinema 自己的 Python 环境。`rea-video remake-run` / `capsule-draft` 会自动找 `$CAPSULE_CINEMA_PYTHON` 或 `<capsule-root>/.venv/bin/python`,也可以用 `--python` 指定。
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
CC=$CAPSULE_CINEMA_ROOT # capsule-cinema 仓库路径
|
|
29
|
+
rea-video remake-plan out/ref/breakdown.json --capsule-root $CC --engine seedance2.0 # 也可以 --mode image_to_video / --labels ai_video
|
|
30
|
+
rea-video remake-run out/ref/remake/jobs.json --dry-run # 先给用户看任务和费用
|
|
31
|
+
rea-video remake-run out/ref/remake/jobs.json # 用户确认后再跑
|
|
32
|
+
rea-video assemble out/ref/breakdown.json out/ref/remake/results.json # 拼回原时间线 + compare.mp4
|
|
33
|
+
rea-video capsule-draft out/ref/breakdown.json --capsule-root $CC --capsule-name xxx [--write-capsule]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
- jobs.json 里每个任务的 `executor` 取值:
|
|
37
|
+
- `capsule_cinema`:调模型生成
|
|
38
|
+
- `local_ffmpeg`:静态图本地重建
|
|
39
|
+
- `keep_original`:保留原片,比如代码渲染、录屏、真实素材
|
|
40
|
+
- `user_assets`:这个镜头需要用户提供的真实素材。生成结果只是近似,要提醒用户。
|
|
41
|
+
- `capsule-draft`:通过 capsule-cinema 自带的 `tool_factory` 注入拆解结果,不改 capsule-cinema 代码,生成的配方草稿默认是 `review_required`。
|