Captions: translated subtitles for the training videos, no re-render, no re-voicing

Manson asked whether the training videos could be in other languages. A real dub
means re-rendering every video per language: translated Romance-language speech runs
15-25% longer than English and these are slide videos with fixed beat timings, so
swapped audio drifts off what is on screen. That turns 15 files into 75 and makes
every future lesson edit a five-way job. Captions keep ONE video and add small text
tracks beside it, so editing a lesson re-captions that lesson only.

tools/captions.mjs: ffmpeg pulls the audio, ElevenLabs Scribe transcribes with word
timings (the same STT we already use to verify voiceovers), words are grouped into
SENTENCES, and only then translated. Translating cue-by-cue is why most auto-captions
read badly at cue boundaries. Translation goes through our own /api/public/translate,
so every phrase caches forever in translations.json and costs once across the site.
The STT response is cached on disk because it costs money; never pay for it twice.

Language choice is evidence, not instinct. The translation cache shows real member
demand: Italian and French far ahead, then Spanish, then GERMAN - which beats
Portuguese by more than double, the opposite of what we assumed. Proof of concept is
Italian on the 5-minute overview.

Captions are deliberately NOT on by default. An English reader does not want them
forced over the picture; someone who already switched the site to Italian almost
certainly does. public/vtt-lang.js shows the track matching their 🌐 choice and
leaves the player's CC button to do the rest.

Two bugs this caught in my own code, both found by reading the output:
- the line wrapper truncated each cue to two lines and SILENTLY DELETED the overflow,
  so "the whole plan fits in one sentence" shipped as "fits in" then "sentence". It
  now chunks by the real wrapped line count and never drops a word.
- a one or two word tail ("sentence." alone on screen) folds back into the previous
  cue.
The suite asserts all 780 transcript words survive into the English track.

Also: .vtt had no Content-Type mapping, so it served as octet-stream and browsers
silently ignore such a track. qa/captions-e2e.mjs (12 assertions) reads the parsed
cues back out of the player rather than trusting the markup, which is the only way to
catch that class of failure. profiles-unit 28 and gate-e2e 33 still green.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
martbost
2026-09-17 06:06:34 -05:00
parent 8bdc105a7a
commit b3385ca3f8
7 changed files with 3094 additions and 1935 deletions
@@ -0,0 +1,445 @@
WEBVTT
1
00:00:00.360 --> 00:00:02.060
La maggior parte dei team build fallisce
per un motivo.
2
00:00:02.360 --> 00:00:04.800
Tutti reclutano e nessuno aiuta.
3
00:00:05.840 --> 00:00:07.380
RM Circle ribalta la situazione.
4
00:00:08.220 --> 00:00:13.140
È un team build incentrato sul team sulla
blockchain Polygon, dove l'intero piano
sta in
5
00:00:13.180 --> 00:00:13.880
una frase.
6
00:00:13.920 --> 00:00:18.860
Trova i tuoi due, aiuta i tuoi due a
trovare i loro, e insegna loro a fare lo
stesso.
7
00:00:19.160 --> 00:00:24.880
Questo video è il quadro completo: come
funziona la struttura, come si muove il
denaro e qual
8
00:00:24.920 --> 00:00:26.500
è esattamente il tuo compito.
9
00:00:27.080 --> 00:00:28.560
È più semplice di quanto pensi.
10
00:00:29.540 --> 00:00:30.780
Tutti entrano allo stesso modo.
11
00:00:31.320 --> 00:00:34.540
Una posizione su uno smart contract
collocata in una matrice a due colonne.
12
00:00:35.080 --> 00:00:37.820
Ti servono esattamente due persone che si
uniscano con il tuo link.
13
00:00:38.380 --> 00:00:39.620
Li chiamiamo i tuoi diretti.
14
00:00:40.240 --> 00:00:42.920
E una volta che ne hai due, la tua
posizione è qualificata.
15
00:00:43.420 --> 00:00:45.020
Questa è la linea di arrivo per la
larghezza.
16
00:00:45.820 --> 00:00:46.820
Non ti serve mai un terzo.
17
00:00:47.000 --> 00:00:49.320
Da lì, il build va verso il basso, non
all'esterno.
18
00:00:50.120 --> 00:00:51.760
I tuoi due trovano ciascuno i loro due.
19
00:00:51.820 --> 00:00:53.040
Quei quattro trovano i loro.
20
00:00:53.780 --> 00:00:58.740
E la matrice si riempie: due, quattro,
otto, sedici, con tutto il team che spinge
la
21
00:00:58.800 --> 00:00:59.800
stessa ondata.
22
00:01:00.340 --> 00:01:02.560
Vieni pagato in due modi, e sono diversi.
23
00:01:03.060 --> 00:01:05.440
Conoscere la differenza ti evita molta
confusione.
24
00:01:05.980 --> 00:01:07.720
Flusso uno, premi di ingresso.
25
00:01:08.320 --> 00:01:12.680
Ogni singola persona che si unisce tramite
il tuo link ti paga un premio di ingresso
che viene consegnato
26
00:01:12.760 --> 00:01:15.400
al tuo portafoglio nella stessa
transazione con cui si uniscono.
27
00:01:15.960 --> 00:01:18.180
Non solo i primi due, ma tutti.
28
00:01:18.740 --> 00:01:20.820
Flusso due, pagamenti di upgrade.
29
00:01:21.320 --> 00:01:22.880
Il programma ha otto livelli.
30
00:01:23.540 --> 00:01:27.720
Man mano che le persone sotto di te
acquistano livelli, ogni pagamento sale
nella matrice e
31
00:01:27.780 --> 00:01:30.300
si ferma su una posizione, quella alla
profondità corrispondente.
32
00:01:30.960 --> 00:01:35.400
Qualcuno a un livello sotto di te ti paga
quando acquista il livello due.
33
00:01:36.380 --> 00:01:40.080
Due livelli sotto, livello tre, e così
via, fino a otto livelli di profondità.
34
00:01:40.320 --> 00:01:44.020
Ogni persona sotto di te ti paga una volta
esattamente a un livello.
35
00:01:44.980 --> 00:01:47.840
Ecco la regola che decide se ricevi quei
soldi.
36
00:01:48.260 --> 00:01:53.720
Per ricevere un pagamento di livello, la
tua posizione deve essere qualificata, con
due diretti,
37
00:01:53.800 --> 00:01:55.260
e già al livello che viene acquistato.
38
00:01:55.680 --> 00:01:57.720
Se non lo sei, il pagamento non aspetta.
39
00:01:58.300 --> 00:02:01.880
Passa permanentemente alla prossima
posizione idonea sopra di te.
40
00:02:02.700 --> 00:02:03.700
Non è una punizione.
41
00:02:03.900 --> 00:02:06.280
È il contratto che mantiene ogni pagamento
in movimento.
42
00:02:07.120 --> 00:02:11.180
Il tuo compito è semplicemente rimanere un
livello avanti rispetto allo strato attivo
più profondo del tuo team.
43
00:02:12.180 --> 00:02:15.800
E la tua dashboard ti mostra letteralmente
quando sta per arrivare il momento.
44
00:02:16.700 --> 00:02:20.300
Quando due slot di qualcuno sono pieni e
un'altra persona si unisce al suo team,
45
00:02:20.360 --> 00:02:24.860
il contratto colloca quel nuovo membro nel
primo slot libero più in basso.
46
00:02:25.440 --> 00:02:26.580
Questo è lo spillover.
47
00:02:28.080 --> 00:02:32.280
Lo spillover riempie la tua struttura con
persone che non hai mai reclutato, e
ognuna di esse è
48
00:02:32.340 --> 00:02:34.800
un futuro reddito da upgrade per la tua
posizione.
49
00:02:35.280 --> 00:02:38.500
Ma ascolta bene, lo spillover non ti
qualifica.
50
00:02:38.960 --> 00:02:42.980
Solo le persone che si uniscono con il tuo
link contano come tuoi diretti.
51
00:02:43.860 --> 00:02:45.780
Lo spillover è un regalo per la tua
profondità.
52
00:02:46.600 --> 00:02:48.240
Il tuo due è ancora il tuo compito.
53
00:02:49.140 --> 00:02:52.020
Una volta qualificato, la raccomandazione
del team è semplice.
54
00:02:52.860 --> 00:02:54.080
Sposta il tuo impegno verso il basso.
55
00:02:54.900 --> 00:02:58.520
Aiuta il tuo due a ottenere il loro due
invece di accumulare più diretti su te
stesso.
56
00:02:59.540 --> 00:03:02.240
La tua pagina di invito gestisce
automaticamente tutto questo.
57
00:03:02.700 --> 00:03:08.220
Una volta raggiunto due su due, indirizza
i nuovi arrivi alla successiva persona
nella tua gamba che ne
58
00:03:08.280 --> 00:03:08.940
ha bisogno.
59
00:03:08.980 --> 00:03:13.320
E se qualcuno si unisce ancora tramite il
tuo link dopo, allora è un bonus, mai
60
00:03:13.360 --> 00:03:14.360
un problema.
61
00:03:14.400 --> 00:03:18.700
Tieni l'intera ricompensa di ingresso, e
loro scendono nella tua gamba come
profondità.
62
00:03:19.680 --> 00:03:20.780
Non c'è alcuna regola contro.
63
00:03:20.960 --> 00:03:22.560
C'è solo un posto più intelligente dove
mirare.
64
00:03:24.060 --> 00:03:26.820
Qui è dove RM Circle è diverso da
qualsiasi cosa tu abbia provato.
65
00:03:27.580 --> 00:03:29.260
La tua dashboard è il tuo co-pilota.
66
00:03:29.880 --> 00:03:34.400
Mostra il tuo team in tempo reale, i
pagamenti che si formano sotto di te,
esattamente quando fare upgrade
67
00:03:34.440 --> 00:03:37.460
per prenderli, e chi nel tuo team ha
bisogno di aiuto dopo.
68
00:03:38.400 --> 00:03:41.260
Con un sistema di messaggistica integrato,
verificato dal tuo wallet.
69
00:03:41.780 --> 00:03:43.560
E ogni membro ha la stessa dashboard.
70
00:03:43.640 --> 00:03:47.840
Quindi quando alleni il tuo due, non
dirgli solo cosa fare.
71
00:03:48.220 --> 00:03:51.640
Apri la loro dashboard con loro e
insegnagli a eseguire la stessa mossa per
il loro due.
72
00:03:52.560 --> 00:03:53.880
Non stai costruendo una downline.
73
00:03:54.100 --> 00:03:55.100
Stai formando coach.
74
00:03:55.100 --> 00:03:57.400
È questo che crea profondità e paga per
anni.
75
00:03:58.320 --> 00:03:59.760
Entrare richiede tre passaggi.
76
00:04:00.560 --> 00:04:02.240
Guarda i brevi training sul sito.
77
00:04:02.920 --> 00:04:05.280
Configura un wallet gratuito e caricalo
con POEL.
78
00:04:06.160 --> 00:04:08.500
Se sei nuovo, puoi acquistarlo con una
carta di debito.
79
00:04:09.120 --> 00:04:10.980
E iscriviti direttamente sul sito con un
tap.
80
00:04:11.660 --> 00:04:14.900
Verrai automaticamente inserito nel team e
la tua dashboard diventa attiva nel
81
00:04:14.940 --> 00:04:16.779
momento in cui la transazione viene
confermata.
82
00:04:17.700 --> 00:04:23.180
Ultima cosa: dato che lo facciamo in modo
onesto, questa è una criptovaluta su uno
83
00:04:23.300 --> 00:04:25.820
smart contract con un rischio reale.
84
00:04:26.460 --> 00:04:27.760
Nessun reddito è garantito.
85
00:04:28.140 --> 00:04:32.220
I risultati arrivano dal lavoro di
squadra, e dovresti usare solo denaro che
puoi permetterti
86
00:04:32.260 --> 00:04:33.100
di perdere.
87
00:04:33.140 --> 00:04:34.920
Ciò che è garantito è la matematica.
88
00:04:35.440 --> 00:04:36.680
Il codice non può essere modificato.
89
00:04:36.900 --> 00:04:38.440
Nessuna azienda detiene i fondi.
90
00:04:38.820 --> 00:04:41.480
E ogni pagamento mai effettuato è pubblico
sulla blockchain.
91
00:04:42.140 --> 00:04:43.140
Trova i tuoi due.
92
00:04:43.380 --> 00:04:44.760
Aiuta i tuoi due a trovare i loro.
93
00:04:45.200 --> 00:04:46.200
Insegna loro a insegnare.
94
00:04:46.680 --> 00:04:48.260
RM Circle dot team.