[object Object]

← back to Beverlyhillsvideos Tiktok

yoloforever cycle 1: legal framework, Daniel voice re-render (v2), loop ledger; gated decisions -> pending-approval

c0aa96fd5e4a29b5ad8ee8f447f4eea79fcacf26 · 2026-08-05 17:18:41 -0700 · Steve Abrams

Files touched

Diff

commit c0aa96fd5e4a29b5ad8ee8f447f4eea79fcacf26
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Aug 5 17:18:41 2026 -0700

    yoloforever cycle 1: legal framework, Daniel voice re-render (v2), loop ledger; gated decisions -> pending-approval
---
 05-editorial-legal-framework.md | 33 +++++++++++++++++++++++++++++++++
 LOOP-LEDGER.md                  | 19 +++++++++++++++++++
 scripts/build_video1.py         |  4 ++--
 3 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/05-editorial-legal-framework.md b/05-editorial-legal-framework.md
new file mode 100644
index 0000000..67515c6
--- /dev/null
+++ b/05-editorial-legal-framework.md
@@ -0,0 +1,33 @@
+# Beverly Hills Videos — Editorial Standards & Legal Framework
+
+Written in response to a red-team flag: the content plan names attorneys, cosmetic-medicine providers, and businesses. Naming specific professionals/businesses in a recommendation context carries **FTC disclosure** and **defamation** exposure. This framework must be in force before ANY video that names a specific business/practitioner is produced or posted. (Video #1 brand-intro names no one → legally clean.)
+
+## 1. Editorial independence (state it publicly)
+- Add to the TikTok bio/site: **"Independent editorial. We are not paid to feature any business unless explicitly marked #ad / Sponsored."**
+- Keep a written wall between editorial picks and any paid placement.
+
+## 2. FTC disclosure (hard rules)
+- Any video featuring a business that has a **financial relationship** with Beverly Hills Videos (advertiser, affiliate, comped service, gifted) MUST carry a clear, conspicuous disclosure: on-screen "#ad" or "Paid partnership" AND spoken/caption disclosure. Not buried in hashtags.
+- Affiliate links → disclose the affiliate relationship.
+- "Comped" or gifted experiences count as material connections → disclose.
+
+## 3. Defamation / claims discipline (naming professionals)
+- **Attorneys / doctors / medspas:** state only **verifiable, sourced facts** (credentials, public reviews with attribution, board certifications). NO superlatives presented as fact ("the best," "the heaviest legal firepower") unless framed as clearly-labeled opinion or backed by a citable ranking.
+- No implication of misconduct, ever.
+- **Right of publicity (California Civil Code §3344):** do NOT use a named person's name/likeness to imply endorsement of Beverly Hills Videos without permission.
+- Medical/legal content = **informational only**, never advice. Add "not medical/legal advice."
+
+## 4. Trademark / footage rights (feeds the b-roll gate)
+- Do not imply brand endorsement by showing a logo/storefront.
+- All b-roll must be **owned, licensed, or clearly fair-use editorial**. No scraped/unlicensed imagery in a published video. (This is why Video #1 is typography-only for now.)
+
+## 5. Music rights
+- Use TikTok's **Commercial Music Library** only (a Business account is restricted to it anyway). No arbitrary copyrighted tracks.
+
+## 6. Minors / private individuals
+- No identifiable private individuals featured without consent; blur incidental faces where practical.
+
+## Application to the current plan
+- ✅ Video #1 (brand intro) — names no one, no footage → clear to finalize once voice is decided.
+- ⚠️ Video #5 (cosmetic medicine) & Video #8 (attorneys) — **rewrite to category-level / sourced-fact framing**, remove "the best / heaviest firepower" superlatives, add "informational, not advice," until disclosure posture is confirmed.
+- ⚠️ Any restaurant/nightlife/shop feature — confirm editorial vs paid; disclose if paid.
diff --git a/LOOP-LEDGER.md b/LOOP-LEDGER.md
new file mode 100644
index 0000000..1eec840
--- /dev/null
+++ b/LOOP-LEDGER.md
@@ -0,0 +1,19 @@
+# /yoloforever — Loop Ledger (@BHvideoguide launch)
+
+## Cycle 1
+**Landed (verified, $0 local, nothing posted):**
+- Launch kit: profile+brand, content plan (12 videos), video briefs, TikTok API runbook.
+- Video #1 brand-intro rendered — kinetic typography, Didot/ivory/gold, 9:16, 22.2s. v1 (Samantha) + v2 (Daniel en_GB) both sent to Steve for review.
+- Editorial + FTC/defamation legal framework written (05-...) — gates videos naming attorneys/doctors until rewritten.
+
+**Cody gate (verified real, not phantom):** (1) "video guide" with zero real footage, (2) system TTS undercuts luxe brand, (3) naming attorneys/med providers w/o disclosure = FTC/defamation risk.
+
+**Final DTD:** FIX-THEN-SHIP — unanimous 5/5 (Claude, Codex, Qwen, Grok, Kimi), no dissent.
+
+**Applied this cycle (safe/reversible):** re-rendered with Daniel (interim voice, $0); wrote legal framework; end-card timing fix so signature line isn't clipped.
+
+**Drafted to pending-approval (gated):** voice upgrade (cloned vs premium-TTS spend), b-roll/format direction (stock-footage spend vs typography-only), posting Video #1, TikTok API app registration.
+
+**Next cycle (safe work available):** rewrite content plan — kill ~4 generic keyword-titles for insider angles, apply legal framing to videos #5 (cosmetic med) & #8 (attorneys); optionally produce Video #2 as typography draft if format is confirmed.
+
+**Blocked-on-Steve:** the 4 pending-approval decisions (voice, footage spend, posting, API).
diff --git a/scripts/build_video1.py b/scripts/build_video1.py
index 8ec9c14..b2ae23e 100644
--- a/scripts/build_video1.py
+++ b/scripts/build_video1.py
@@ -68,7 +68,7 @@ frames=[
  ("04.png",stamp("DINING & DEALS","the tables that run the city"),2.6),
  ("05.png",stamp("THE QUIET CORNERS","what only locals know"),2.6),
  ("06.png",b6,4.8),
- ("07.png",endcard,3.6),
+ ("07.png",endcard,5.2),
 ]
 paths=[]
 for name,fn,dur in frames:
@@ -105,7 +105,7 @@ subprocess.run(["ffmpeg","-y",*inputs,"-filter_complex",fc,"-map",prev,
 vo=os.path.join(ROOT,"assets","renders","vo1.wav")
 final=os.path.join(ROOT,"assets","renders","BHvideoguide_video1_brand-intro.mp4")
 subprocess.run(["ffmpeg","-y","-i",vid,"-i",vo,
-    "-filter_complex","[1:a]afade=t=in:st=0:d=0.4,afade=t=out:st=19.8:d=1.2,apad[a]",
+    "-filter_complex","[1:a]afade=t=in:st=0:d=0.4,afade=t=out:st=21.0:d=1.4,apad[a]",
     "-map","0:v","-map","[a]","-c:v","copy","-c:a","aac","-b:a","192k","-shortest",final],
     check=True,stdout=subprocess.DEVNULL,stderr=subprocess.DEVNULL)
 d=subprocess.run(["ffprobe","-v","error","-show_entries","format=duration:stream=width,height",

← b84c711 Render Video #1 brand-intro (kinetic typography, 9:16, 20.6s  ·  back to Beverlyhillsvideos Tiktok  ·  yoloforever cycle 2: content plan sharpened + Cody legal/sou de86df1 →