Commit e8e21050c2d5d5533c96fde3ede8286d54cfd91d

Authored by yibo
1 parent 77fc25b6

Bump default clip duration to 10s (was 5s)

H3_GEN_PARAMS.frames 120 -> 240 (at 24fps, 5s -> 10s), still within H3's
4-15s range (H2 in docs/h3skill.md). Updated the prompt-optimization system
prompt's duration reference and widened its word budget (40-70 -> 60-100)
to match — still one continuous shot, just more room to let the camera move
and the action unfold. Verified against the real GLM endpoint.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0144MiJ2cLjMd9jWaeEpVfUJ
Showing 2 changed files with 93 additions and 51 deletions
library.json
@@ -385,7 +385,8 @@ @@ -385,7 +385,8 @@
385 "likes": 0, 385 "likes": 0,
386 "createdAt": 1788188423583, 386 "createdAt": 1788188423583,
387 "promptEn": "woman in white scared, dodging", 387 "promptEn": "woman in white scared, dodging",
388 - "lastPlayedAt": 1788253953855 388 + "lastPlayedAt": 1788256884709,
  389 + "playCount": 1
389 }, 390 },
390 { 391 {
391 "id": "1597db4be561", 392 "id": "1597db4be561",
@@ -415,8 +416,9 @@ @@ -415,8 +416,9 @@
415 "partition": "ref2va", 416 "partition": "ref2va",
416 "likes": 0, 417 "likes": 0,
417 "createdAt": 1788186218619, 418 "createdAt": 1788186218619,
418 - "lastPlayedAt": 1788253885823,  
419 - "promptEn": "woman in white evading, scared" 419 + "lastPlayedAt": 1788256608572,
  420 + "promptEn": "woman in white evading, scared",
  421 + "playCount": 1
420 }, 422 },
421 { 423 {
422 "id": "6cb4eb75ee09", 424 "id": "6cb4eb75ee09",
@@ -447,7 +449,8 @@ @@ -447,7 +449,8 @@
447 "likes": 0, 449 "likes": 0,
448 "createdAt": 1788181569491, 450 "createdAt": 1788181569491,
449 "promptEn": "a massive warship glides through the stars, the bridge suddenly shakes hard", 451 "promptEn": "a massive warship glides through the stars, the bridge suddenly shakes hard",
450 - "lastPlayedAt": 1788254390052 452 + "lastPlayedAt": 1788256956743,
  453 + "playCount": 1
451 }, 454 },
452 { 455 {
453 "id": "44bf5b969e94", 456 "id": "44bf5b969e94",
@@ -698,7 +701,8 @@ @@ -698,7 +701,8 @@
698 "likes": 0, 701 "likes": 0,
699 "createdAt": 1788039783070, 702 "createdAt": 1788039783070,
700 "promptEn": "silver-haired idol backstage, red light pulsing, offering a blood-red contract", 703 "promptEn": "silver-haired idol backstage, red light pulsing, offering a blood-red contract",
701 - "lastPlayedAt": 1788251726803 704 + "lastPlayedAt": 1788256740633,
  705 + "playCount": 1
702 }, 706 },
703 { 707 {
704 "id": "75bdbacd3012", 708 "id": "75bdbacd3012",
@@ -713,7 +717,8 @@ @@ -713,7 +717,8 @@
713 "likes": 0, 717 "likes": 0,
714 "createdAt": 1788039782992, 718 "createdAt": 1788039782992,
715 "promptEn": "silver-haired idol backstage, red light pulsing, offering a blood-red contract", 719 "promptEn": "silver-haired idol backstage, red light pulsing, offering a blood-red contract",
716 - "lastPlayedAt": 1788250966325 720 + "lastPlayedAt": 1788256952747,
  721 + "playCount": 1
717 }, 722 },
718 { 723 {
719 "id": "69e75a6b3997", 724 "id": "69e75a6b3997",
@@ -728,7 +733,8 @@ @@ -728,7 +733,8 @@
728 "likes": 0, 733 "likes": 0,
729 "createdAt": 1788027833836, 734 "createdAt": 1788027833836,
730 "promptEn": "wounded hunter at a ruined subway dungeon entrance, lightning flickers, pointing into the tunnel", 735 "promptEn": "wounded hunter at a ruined subway dungeon entrance, lightning flickers, pointing into the tunnel",
731 - "lastPlayedAt": 1788254268003 736 + "lastPlayedAt": 1788256770648,
  737 + "playCount": 1
732 }, 738 },
733 { 739 {
734 "id": "cde399c27dc4", 740 "id": "cde399c27dc4",
@@ -867,7 +873,8 @@ @@ -867,7 +873,8 @@
867 "likes": 0, 873 "likes": 0,
868 "createdAt": 1788025642732, 874 "createdAt": 1788025642732,
869 "promptEn": "Vecna reaching out a claw in his lair in the Upside Down, red lightning", 875 "promptEn": "Vecna reaching out a claw in his lair in the Upside Down, red lightning",
870 - "lastPlayedAt": 1788254043902 876 + "lastPlayedAt": 1788256948747,
  877 + "playCount": 1
871 }, 878 },
872 { 879 {
873 "id": "00862f966c3f", 880 "id": "00862f966c3f",
@@ -1072,7 +1079,8 @@ @@ -1072,7 +1079,8 @@
1072 "likes": 0, 1079 "likes": 0,
1073 "createdAt": 1788019483999, 1080 "createdAt": 1788019483999,
1074 "promptEn": "constable rushes in, glances back at the door, then talks to the woman behind the screen", 1081 "promptEn": "constable rushes in, glances back at the door, then talks to the woman behind the screen",
1075 - "lastPlayedAt": 1788252139001 1082 + "lastPlayedAt": 1788256844693,
  1083 + "playCount": 1
1076 }, 1084 },
1077 { 1085 {
1078 "id": "998e3e6f9a2f", 1086 "id": "998e3e6f9a2f",
@@ -1541,7 +1549,8 @@ @@ -1541,7 +1549,8 @@
1541 "likes": 0, 1549 "likes": 0,
1542 "createdAt": 1788010775613, 1550 "createdAt": 1788010775613,
1543 "promptEn": "facing Voldemort, stayed passive and got cornered", 1551 "promptEn": "facing Voldemort, stayed passive and got cornered",
1544 - "lastPlayedAt": 1788254061908 1552 + "lastPlayedAt": 1788256874709,
  1553 + "playCount": 1
1545 }, 1554 },
1546 { 1555 {
1547 "id": "795842efa4a1", 1556 "id": "795842efa4a1",
@@ -1571,7 +1580,8 @@ @@ -1571,7 +1580,8 @@
1571 "likes": 0, 1580 "likes": 0,
1572 "createdAt": 1788010299688, 1581 "createdAt": 1788010299688,
1573 "promptEn": "facing Thanos, exploiting a flaw to counter him", 1582 "promptEn": "facing Thanos, exploiting a flaw to counter him",
1574 - "lastPlayedAt": 1788251102950 1583 + "lastPlayedAt": 1788256914727,
  1584 + "playCount": 1
1575 }, 1585 },
1576 { 1586 {
1577 "id": "469294a4ed09", 1587 "id": "469294a4ed09",
@@ -1586,7 +1596,8 @@ @@ -1586,7 +1596,8 @@
1586 "likes": 0, 1596 "likes": 0,
1587 "createdAt": 1788010062535, 1597 "createdAt": 1788010062535,
1588 "promptEn": "facing Thanos, held the goal but paid a price", 1598 "promptEn": "facing Thanos, held the goal but paid a price",
1589 - "lastPlayedAt": 1788254091920 1599 + "lastPlayedAt": 1788256578563,
  1600 + "playCount": 1
1590 }, 1601 },
1591 { 1602 {
1592 "id": "324b84ebc607", 1603 "id": "324b84ebc607",
@@ -1633,7 +1644,8 @@ @@ -1633,7 +1644,8 @@
1633 "likes": 0, 1644 "likes": 0,
1634 "createdAt": 1788009346020, 1645 "createdAt": 1788009346020,
1635 "promptEn": "battlefield on Titan, the last chance to stop Thanos", 1646 "promptEn": "battlefield on Titan, the last chance to stop Thanos",
1636 - "lastPlayedAt": 1788252467159 1647 + "lastPlayedAt": 1788256852697,
  1648 + "playCount": 1
1637 }, 1649 },
1638 { 1650 {
1639 "id": "66a96c6bc7cb", 1651 "id": "66a96c6bc7cb",
@@ -1725,7 +1737,8 @@ @@ -1725,7 +1737,8 @@
1725 "likes": 0, 1737 "likes": 0,
1726 "createdAt": 1788007915610, 1738 "createdAt": 1788007915610,
1727 "promptEn": "in the ruined city, exploiting a flaw to counter Tomura", 1739 "promptEn": "in the ruined city, exploiting a flaw to counter Tomura",
1728 - "lastPlayedAt": 1788252961326 1740 + "lastPlayedAt": 1788256800671,
  1741 + "playCount": 1
1729 }, 1742 },
1730 { 1743 {
1731 "id": "f67685cd6862", 1744 "id": "f67685cd6862",
@@ -1771,7 +1784,8 @@ @@ -1771,7 +1784,8 @@
1771 "likes": 0, 1784 "likes": 0,
1772 "createdAt": 1788007201908, 1785 "createdAt": 1788007201908,
1773 "promptEn": "breaking into the palace, Neferpitou stalling to protect the king", 1786 "promptEn": "breaking into the palace, Neferpitou stalling to protect the king",
1774 - "lastPlayedAt": 1788254139946 1787 + "lastPlayedAt": 1788256816681,
  1788 + "playCount": 1
1775 }, 1789 },
1776 { 1790 {
1777 "id": "628026375795", 1791 "id": "628026375795",
@@ -1880,7 +1894,8 @@ @@ -1880,7 +1894,8 @@
1880 "likes": 0, 1894 "likes": 0,
1881 "createdAt": 1788005541640, 1895 "createdAt": 1788005541640,
1882 "promptEn": "facing Frieza, went in head-on and got seen through", 1896 "promptEn": "facing Frieza, went in head-on and got seen through",
1883 - "lastPlayedAt": 1788253741753 1897 + "lastPlayedAt": 1788256826688,
  1898 + "playCount": 1
1884 }, 1899 },
1885 { 1900 {
1886 "id": "574b47b00316", 1901 "id": "574b47b00316",
@@ -2160,7 +2175,8 @@ @@ -2160,7 +2175,8 @@
2160 "likes": 0, 2175 "likes": 0,
2161 "createdAt": 1788001428705, 2176 "createdAt": 1788001428705,
2162 "promptEn": "in the ruins of Konoha, exploiting a flaw to counter Pain", 2177 "promptEn": "in the ruins of Konoha, exploiting a flaw to counter Pain",
2163 - "lastPlayedAt": 1788253511622 2178 + "lastPlayedAt": 1788256774651,
  2179 + "playCount": 1
2164 }, 2180 },
2165 { 2181 {
2166 "id": "e486fab4c24d", 2182 "id": "e486fab4c24d",
@@ -2207,7 +2223,8 @@ @@ -2207,7 +2223,8 @@
2207 "likes": 0, 2223 "likes": 0,
2208 "createdAt": 1788000812932, 2224 "createdAt": 1788000812932,
2209 "promptEn": "facing Pain, went in head-on and got seen through", 2225 "promptEn": "facing Pain, went in head-on and got seen through",
2210 - "lastPlayedAt": 1788253905836 2226 + "lastPlayedAt": 1788256552547,
  2227 + "playCount": 1
2211 }, 2228 },
2212 { 2229 {
2213 "id": "f691ac021df0", 2230 "id": "f691ac021df0",
@@ -2318,7 +2335,8 @@ @@ -2318,7 +2335,8 @@
2318 "likes": 0, 2335 "likes": 0,
2319 "createdAt": 1787999397097, 2336 "createdAt": 1787999397097,
2320 "promptEn": "facing Sakazuki, stayed passive and got cornered", 2337 "promptEn": "facing Sakazuki, stayed passive and got cornered",
2321 - "lastPlayedAt": 1788253761764 2338 + "lastPlayedAt": 1788256856695,
  2339 + "playCount": 1
2322 }, 2340 },
2323 { 2341 {
2324 "id": "88923aaf57f3", 2342 "id": "88923aaf57f3",
@@ -2412,7 +2430,8 @@ @@ -2412,7 +2430,8 @@
2412 "likes": 0, 2430 "likes": 0,
2413 "createdAt": 1787831362083, 2431 "createdAt": 1787831362083,
2414 "promptEn": "constable promises to get her out safely if she trusts him", 2432 "promptEn": "constable promises to get her out safely if she trusts him",
2415 - "lastPlayedAt": 1788253719743 2433 + "lastPlayedAt": 1788256588563,
  2434 + "playCount": 1
2416 }, 2435 },
2417 { 2436 {
2418 "id": "5ede61c01b22", 2437 "id": "5ede61c01b22",
@@ -2506,7 +2525,8 @@ @@ -2506,7 +2525,8 @@
2506 "likes": 0, 2525 "likes": 0,
2507 "createdAt": 1787738044140, 2526 "createdAt": 1787738044140,
2508 "promptEn": "constable carefully checks the door and window latches, she watches from behind the screen", 2527 "promptEn": "constable carefully checks the door and window latches, she watches from behind the screen",
2509 - "lastPlayedAt": 1788252857278 2528 + "lastPlayedAt": 1788256778656,
  2529 + "playCount": 1
2510 }, 2530 },
2511 { 2531 {
2512 "id": "cfbef6e37ae4", 2532 "id": "cfbef6e37ae4",
@@ -2616,7 +2636,8 @@ @@ -2616,7 +2636,8 @@
2616 "likes": 0, 2636 "likes": 0,
2617 "createdAt": 1787708686397, 2637 "createdAt": 1787708686397,
2618 "promptEn": "constable accepts the invitation, moves to sit on a stool closer to the screen", 2638 "promptEn": "constable accepts the invitation, moves to sit on a stool closer to the screen",
2619 - "lastPlayedAt": 1788254145947 2639 + "lastPlayedAt": 1788256558556,
  2640 + "playCount": 1
2620 }, 2641 },
2621 { 2642 {
2622 "id": "ad611bcbd06b", 2643 "id": "ad611bcbd06b",
@@ -2854,7 +2875,8 @@ @@ -2854,7 +2875,8 @@
2854 "likes": 0, 2875 "likes": 0,
2855 "createdAt": 1787674737743, 2876 "createdAt": 1787674737743,
2856 "promptEn": "constable slowly looks around the room, discovers her watching him motionlessly through the screen", 2877 "promptEn": "constable slowly looks around the room, discovers her watching him motionlessly through the screen",
2857 - "lastPlayedAt": 1788253445593 2878 + "lastPlayedAt": 1788256932741,
  2879 + "playCount": 1
2858 }, 2880 },
2859 { 2881 {
2860 "id": "c74118d0413f", 2882 "id": "c74118d0413f",
@@ -2933,7 +2955,8 @@ @@ -2933,7 +2955,8 @@
2933 "likes": 0, 2955 "likes": 0,
2934 "createdAt": 1787674660698, 2956 "createdAt": 1787674660698,
2935 "promptEn": "constable smashes the bronze mirror on the table, it shatters, she watches from behind the screen", 2957 "promptEn": "constable smashes the bronze mirror on the table, it shatters, she watches from behind the screen",
2936 - "lastPlayedAt": 1788248649121 2958 + "lastPlayedAt": 1788256696614,
  2959 + "playCount": 1
2937 }, 2960 },
2938 { 2961 {
2939 "id": "ed77b83851a2", 2962 "id": "ed77b83851a2",
@@ -2964,7 +2987,8 @@ @@ -2964,7 +2987,8 @@
2964 "likes": 0, 2987 "likes": 0,
2965 "createdAt": 1787674642026, 2988 "createdAt": 1787674642026,
2966 "promptEn": "constable enters from the side and sits down on a stool by the lamp to rest", 2989 "promptEn": "constable enters from the side and sits down on a stool by the lamp to rest",
2967 - "lastPlayedAt": 1788251330505 2990 + "lastPlayedAt": 1788256726628,
  2991 + "playCount": 1
2968 }, 2992 },
2969 { 2993 {
2970 "id": "fe7ffbe65653", 2994 "id": "fe7ffbe65653",
@@ -3120,8 +3144,9 @@ @@ -3120,8 +3144,9 @@
3120 "partition": "ref2va", 3144 "partition": "ref2va",
3121 "likes": 0, 3145 "likes": 0,
3122 "createdAt": 1787652321725, 3146 "createdAt": 1787652321725,
3123 - "lastPlayedAt": 1788250646200,  
3124 - "promptEn": "constable talking to the woman through the screen" 3147 + "lastPlayedAt": 1788256572557,
  3148 + "promptEn": "constable talking to the woman through the screen",
  3149 + "playCount": 1
3125 }, 3150 },
3126 { 3151 {
3127 "id": "31ade4712105", 3152 "id": "31ade4712105",
@@ -3278,7 +3303,8 @@ @@ -3278,7 +3303,8 @@
3278 "likes": 0, 3303 "likes": 0,
3279 "createdAt": 1787615240988, 3304 "createdAt": 1787615240988,
3280 "promptEn": "clay fox sprints off a cliff, slow-mo leap over the canyon", 3305 "promptEn": "clay fox sprints off a cliff, slow-mo leap over the canyon",
3281 - "lastPlayedAt": 1788251894893 3306 + "lastPlayedAt": 1788256758642,
  3307 + "playCount": 1
3282 }, 3308 },
3283 { 3309 {
3284 "id": "db125dc6a831", 3310 "id": "db125dc6a831",
@@ -3308,7 +3334,8 @@ @@ -3308,7 +3334,8 @@
3308 "likes": 0, 3334 "likes": 0,
3309 "createdAt": 1787588547172, 3335 "createdAt": 1787588547172,
3310 "promptEn": "product website scrolling down with flashy effects", 3336 "promptEn": "product website scrolling down with flashy effects",
3311 - "lastPlayedAt": 1788251228453 3337 + "lastPlayedAt": 1788256804674,
  3338 + "playCount": 1
3312 }, 3339 },
3313 { 3340 {
3314 "id": "2e18bf09b46a", 3341 "id": "2e18bf09b46a",
@@ -3432,7 +3459,8 @@ @@ -3432,7 +3459,8 @@
3432 "likes": 0, 3459 "likes": 0,
3433 "createdAt": 1787588541726, 3460 "createdAt": 1787588541726,
3434 "promptEn": "woman opens the trunk on a desert road, takes out a bag", 3461 "promptEn": "woman opens the trunk on a desert road, takes out a bag",
3435 - "lastPlayedAt": 1788254335882 3462 + "lastPlayedAt": 1788256832684,
  3463 + "playCount": 1
3436 }, 3464 },
3437 { 3465 {
3438 "id": "97846542ab09", 3466 "id": "97846542ab09",
@@ -3495,7 +3523,8 @@ @@ -3495,7 +3523,8 @@
3495 "likes": 0, 3523 "likes": 0,
3496 "createdAt": 1787588114381, 3524 "createdAt": 1787588114381,
3497 "promptEn": "underground rap duo freestyling at the camera", 3525 "promptEn": "underground rap duo freestyling at the camera",
3498 - "lastPlayedAt": 1788253391568 3526 + "lastPlayedAt": 1788256628586,
  3527 + "playCount": 1
3499 }, 3528 },
3500 { 3529 {
3501 "id": "58a439a93c02", 3530 "id": "58a439a93c02",
@@ -3589,7 +3618,8 @@ @@ -3589,7 +3618,8 @@
3589 "likes": 0, 3618 "likes": 0,
3590 "createdAt": 1787576798050, 3619 "createdAt": 1787576798050,
3591 "promptEn": "man says he's willing to give her his heart", 3620 "promptEn": "man says he's willing to give her his heart",
3592 - "lastPlayedAt": 1788252199033 3621 + "lastPlayedAt": 1788256716625,
  3622 + "playCount": 1
3593 }, 3623 },
3594 { 3624 {
3595 "id": "57f2c6fa351d", 3625 "id": "57f2c6fa351d",
@@ -3635,8 +3665,9 @@ @@ -3635,8 +3665,9 @@
3635 "partition": "text", 3665 "partition": "text",
3636 "likes": 0, 3666 "likes": 0,
3637 "createdAt": 1787576358982, 3667 "createdAt": 1787576358982,
3638 - "lastPlayedAt": 1788253923842,  
3639 - "promptEn": "man apologizes, says something outside was chasing him" 3668 + "lastPlayedAt": 1788256794665,
  3669 + "promptEn": "man apologizes, says something outside was chasing him",
  3670 + "playCount": 1
3640 }, 3671 },
3641 { 3672 {
3642 "id": "9fca8054035f", 3673 "id": "9fca8054035f",
@@ -3681,7 +3712,8 @@ @@ -3681,7 +3712,8 @@
3681 "likes": 0, 3712 "likes": 0,
3682 "createdAt": 1787575164928, 3713 "createdAt": 1787575164928,
3683 "promptEn": "man apologizes, says something outside was chasing him", 3714 "promptEn": "man apologizes, says something outside was chasing him",
3684 - "lastPlayedAt": 1788249631916 3715 + "lastPlayedAt": 1788256880712,
  3716 + "playCount": 1
3685 }, 3717 },
3686 { 3718 {
3687 "id": "250fad90393c", 3719 "id": "250fad90393c",
@@ -3918,7 +3950,8 @@ @@ -3918,7 +3950,8 @@
3918 "likes": 0, 3950 "likes": 0,
3919 "createdAt": 1787470100107, 3951 "createdAt": 1787470100107,
3920 "promptEn": "MiniMax H3 brand motion graphics, a dot growing into a network", 3952 "promptEn": "MiniMax H3 brand motion graphics, a dot growing into a network",
3921 - "lastPlayedAt": 1788248973345 3953 + "lastPlayedAt": 1788256862702,
  3954 + "playCount": 1
3922 }, 3955 },
3923 { 3956 {
3924 "id": "194e9bd77da6", 3957 "id": "194e9bd77da6",
@@ -3963,7 +3996,8 @@ @@ -3963,7 +3996,8 @@
3963 "likes": 0, 3996 "likes": 0,
3964 "createdAt": 1787470099306, 3997 "createdAt": 1787470099306,
3965 "promptEn": "late-night laundromat footage mixed with glowing hand-drawn animation", 3998 "promptEn": "late-night laundromat footage mixed with glowing hand-drawn animation",
3966 - "lastPlayedAt": 1788254294016 3999 + "lastPlayedAt": 1788256744635,
  4000 + "playCount": 1
3967 }, 4001 },
3968 { 4002 {
3969 "id": "c0e23beb4132", 4003 "id": "c0e23beb4132",
@@ -4073,7 +4107,8 @@ @@ -4073,7 +4107,8 @@
4073 "likes": 0, 4107 "likes": 0,
4074 "createdAt": 1787450754171, 4108 "createdAt": 1787450754171,
4075 "promptEn": "protagonist leaps across rooftops fleeing pursuers", 4109 "promptEn": "protagonist leaps across rooftops fleeing pursuers",
4076 - "lastPlayedAt": 1788253279519 4110 + "lastPlayedAt": 1788256646594,
  4111 + "playCount": 1
4077 }, 4112 },
4078 { 4113 {
4079 "id": "fd0183c54763", 4114 "id": "fd0183c54763",
@@ -4289,7 +4324,8 @@ @@ -4289,7 +4324,8 @@
4289 "likes": 0, 4324 "likes": 0,
4290 "createdAt": 1787412952086, 4325 "createdAt": 1787412952086,
4291 "promptEn": "protagonist leaps across rooftops fleeing pursuers", 4326 "promptEn": "protagonist leaps across rooftops fleeing pursuers",
4292 - "lastPlayedAt": 1788253367553 4327 + "lastPlayedAt": 1788256920735,
  4328 + "playCount": 1
4293 }, 4329 },
4294 { 4330 {
4295 "id": "59fd7a087f5b", 4331 "id": "59fd7a087f5b",
@@ -4492,7 +4528,8 @@ @@ -4492,7 +4528,8 @@
4492 "likes": 0, 4528 "likes": 0,
4493 "createdAt": 1787367454249, 4529 "createdAt": 1787367454249,
4494 "promptEn": "golden portal opens, man in green jacket throws a glowing spear", 4530 "promptEn": "golden portal opens, man in green jacket throws a glowing spear",
4495 - "lastPlayedAt": 1788252831263 4531 + "lastPlayedAt": 1788256850694,
  4532 + "playCount": 1
4496 }, 4533 },
4497 { 4534 {
4498 "id": "c48af2f34e62", 4535 "id": "c48af2f34e62",
@@ -4523,7 +4560,8 @@ @@ -4523,7 +4560,8 @@
4523 "likes": 0, 4560 "likes": 0,
4524 "createdAt": 1787367453839, 4561 "createdAt": 1787367453839,
4525 "promptEn": "golden portal opens, man in green jacket throws a glowing spear", 4562 "promptEn": "golden portal opens, man in green jacket throws a glowing spear",
4526 - "lastPlayedAt": 1788254041895 4563 + "lastPlayedAt": 1788256642593,
  4564 + "playCount": 1
4527 }, 4565 },
4528 { 4566 {
4529 "id": "8402adae59dc", 4567 "id": "8402adae59dc",
@@ -4697,7 +4735,8 @@ @@ -4697,7 +4735,8 @@
4697 "likes": 0, 4735 "likes": 0,
4698 "createdAt": 1787304031103, 4736 "createdAt": 1787304031103,
4699 "promptEn": "constable asks how she's sure it's not human, she says a person would make a sound", 4737 "promptEn": "constable asks how she's sure it's not human, she says a person would make a sound",
4700 - "lastPlayedAt": 1788252124992 4738 + "lastPlayedAt": 1788256900724,
  4739 + "playCount": 1
4701 }, 4740 },
4702 { 4741 {
4703 "id": "807e042dce0d", 4742 "id": "807e042dce0d",
@@ -4759,7 +4798,8 @@ @@ -4759,7 +4798,8 @@
4759 "likes": 0, 4798 "likes": 0,
4760 "createdAt": 1787231456079, 4799 "createdAt": 1787231456079,
4761 "promptEn": "constable burns the beauty portrait with the lamp, the door opens on its own", 4800 "promptEn": "constable burns the beauty portrait with the lamp, the door opens on its own",
4762 - "lastPlayedAt": 1788251682774 4801 + "lastPlayedAt": 1788256546550,
  4802 + "playCount": 1
4763 }, 4803 },
4764 { 4804 {
4765 "id": "66158f543a20", 4805 "id": "66158f543a20",
@@ -4789,7 +4829,8 @@ @@ -4789,7 +4829,8 @@
4789 "likes": 0, 4829 "likes": 0,
4790 "createdAt": 1787225897650, 4830 "createdAt": 1787225897650,
4791 "promptEn": "constable burns the beauty portrait with the lamp, the door opens on its own", 4831 "promptEn": "constable burns the beauty portrait with the lamp, the door opens on its own",
4792 - "lastPlayedAt": 1788254544113 4832 + "lastPlayedAt": 1788256970757,
  4833 + "playCount": 1
4793 }, 4834 },
4794 { 4835 {
4795 "id": "ed3663dcda7f", 4836 "id": "ed3663dcda7f",
@@ -4820,7 +4861,8 @@ @@ -4820,7 +4861,8 @@
4820 "likes": 0, 4861 "likes": 0,
4821 "createdAt": 1787224519456, 4862 "createdAt": 1787224519456,
4822 "promptEn": "constable burns the beauty portrait with the lamp, the door opens on its own", 4863 "promptEn": "constable burns the beauty portrait with the lamp, the door opens on its own",
4823 - "lastPlayedAt": 1788252627218 4864 + "lastPlayedAt": 1788256710623,
  4865 + "playCount": 1
4824 }, 4866 },
4825 { 4867 {
4826 "id": "a1cc621cc6b2", 4868 "id": "a1cc621cc6b2",
server.js
@@ -131,22 +131,22 @@ function glmChat(messages) { @@ -131,22 +131,22 @@ function glmChat(messages) {
131 131
132 // Distilled from docs/h3skill.md (MiniMax's own H3 prompt-writing methodology) down to the one 132 // Distilled from docs/h3skill.md (MiniMax's own H3 prompt-writing methodology) down to the one
133 // path that applies here: T2VA (no reference images — every chat prompt is plain text) on a clip 133 // path that applies here: T2VA (no reference images — every chat prompt is plain text) on a clip
134 -// fixed at ~5s (H3_GEN_PARAMS.frames / FPS). At that length it's one continuous shot, never a  
135 -// multi-cut montage — the earlier version asked for "shot-by-shot" and reliably got 4-5 fake cuts  
136 -// with timestamps running out to 8-10s, which the model can't actually deliver in 5 seconds. 134 +// fixed at ~10s (H3_GEN_PARAMS.frames / FPS). At that length it's one continuous shot, never a
  135 +// multi-cut montage — an earlier version asked for "shot-by-shot" and reliably got 4-5 fake cuts
  136 +// with timestamps running past the clip's own length, which the model can't actually deliver.
137 const PROMPT_OPTIMIZE_SYSTEM = `You are writing H3 text-to-video generation prompts (T2VA mode — no 137 const PROMPT_OPTIMIZE_SYSTEM = `You are writing H3 text-to-video generation prompts (T2VA mode — no
138 reference images, pure text-to-video). Expand the user's short request (may be in Chinese or English) 138 reference images, pure text-to-video). Expand the user's short request (may be in Chinese or English)
139 into the official H3 three-field format, in this exact order, using these exact field labels: 139 into the official H3 three-field format, in this exact order, using these exact field labels:
140 140
141 integrated_multimodal_description: [Shot 1] one short style statement, e.g. "Live-action, cinematic." 141 integrated_multimodal_description: [Shot 1] one short style statement, e.g. "Live-action, cinematic."
142 -Then describe, in one continuous unbroken shot (the clip is only about 5 seconds long — never split 142 +Then describe, in one continuous unbroken shot (the clip is only about 10 seconds long — never split
143 into multiple shots or write more than [Shot 1]): the setting, the subject's specific action, and ONE 143 into multiple shots or write more than [Shot 1]): the setting, the subject's specific action, and ONE
144 dominant camera movement using this vocabulary — Zoom In/Out, Push In/Pull Out, Pan Left/Right, Truck 144 dominant camera movement using this vocabulary — Zoom In/Out, Push In/Pull Out, Pan Left/Right, Truck
145 Left/Right, Tilt Up/Down, Pedestal Up/Down, Arc Shot, Tracking Shot, Static Shot, Shake Slightly/ 145 Left/Right, Tilt Up/Down, Pedestal Up/Down, Arc Shot, Tracking Shot, Static Shot, Shake Slightly/
146 Strongly, POV, Roll Clockwise/Counterclockwise — stated as type + amplitude (small/large) + speed 146 Strongly, POV, Roll Clockwise/Counterclockwise — stated as type + amplitude (small/large) + speed
147 (slow/fast). Describe light concretely: where it comes from, what it hits, what effect it creates. 147 (slow/fast). Describe light concretely: where it comes from, what it hits, what effect it creates.
148 Never use hollow quality words alone (8K, HD, masterpiece, stunning, cinematic used alone, beautiful, 148 Never use hollow quality words alone (8K, HD, masterpiece, stunning, cinematic used alone, beautiful,
149 -high quality) — replace them with what is actually visible. 40-70 English words. 149 +high quality) — replace them with what is actually visible. 60-100 English words.
150 150
151 overall_soundscape: 1-4 English sentences describing the ambient environmental sound the scene would 151 overall_soundscape: 1-4 English sentences describing the ambient environmental sound the scene would
152 naturally have. 152 naturally have.
@@ -180,7 +180,7 @@ async function optimizePrompt(userPrompt) { @@ -180,7 +180,7 @@ async function optimizePrompt(userPrompt) {
180 // own past-entry trimming naturally handles a state file that's gone stale 180 // own past-entry trimming naturally handles a state file that's gone stale
181 // (server was down long enough that every persisted entry is in the past). 181 // (server was down long enough that every persisted entry is in the past).
182 const FILLER_DURATION_MS = 30000; // keep the schedule filled at least this far ahead 182 const FILLER_DURATION_MS = 30000; // keep the schedule filled at least this far ahead
183 -const H3_GEN_PARAMS = { width: 480, height: 832, frames: 120, steps: 20, turbo: false, seed: 0 }; 183 +const H3_GEN_PARAMS = { width: 480, height: 832, frames: 240, steps: 20, turbo: false, seed: 0 };
184 const FPS = 24; 184 const FPS = 24;
185 185
186 const initialLiveState = loadLiveState(); 186 const initialLiveState = loadLiveState();