Files
zeekayandHanzo Dev 9a37a6482b feat(journal): add /journal editorial page + sync approved library to the site
Completes the studio→CMS→site content loop for the Signature relaunch.

- scripts/sync-journal.py: the editorial twin of sync-library.py. Reads the ONE
  canonical library (s3://hanzo-studio/orgs/karma/output/library.json), takes
  queued/published blog+campaign .md posts, writes site/journal/*.md +
  site/journal.json, mapping each post's hero to the webp the catalog serves.
- site/journal.js + app.js `/journal` route + nav "Journal": a minimal monochrome
  journal (list + post, tiny trusted md→html). Renders the 3 queued posts
  (Valentina, in Velvet · The Case for One Colour · Signature launch brief).
- site/img/redonepiece/{front,back}.webp: refreshed from the approved library
  (the CTO 2026-07-09 tonal-red PICK) via sync-library.py.
- asset ?v 049→050 so the corrected images + journal surface immediately.

Copy authored on-brand (white high-fashion, monochrome, tight editorial) and
queued via karma-queue.py; mirrored to S3 via the studio PVC.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-10 14:43:56 -07:00

2.6 KiB

title, design, channel, collection, heroes, caption, hashtags
title design channel collection heroes caption hashtags
Signature — Launch Brief null campaign Signature
designs/valentina/lifestyle_life1.png
designs/redonepiece/ecom_front.png
Signature: two suits, one point of view. Valentina in crushed velvet, the Scarlet One-Piece in matte red. Now at karma.style.
#karmabikinis
#karmastyle
#signature

Signature — Launch Brief

The idea

Two suits, one point of view. Signature is the smallest possible collection — a strappy velvet set and a clean scarlet maillot — chosen because they argue the same thing from opposite ends: that swimwear can be dressed. Valentina brings weight and hardware; the Scarlet One-Piece brings restraint and a single colour. Together they set the house tone: monochrome studio, real materials, made to photograph.

The pieces

  • Valentina — deep-wine crushed velvet, gold open-heart hardware, criss-cross hip straps, full thigh-wrap garter. Adjustable halter, high-leg. Our most-requested set. $158.
  • Scarlet One-Piece — matte scarlet lycra, sculpted open back, seamless. Sun-ready and made to photograph. $168.

Voice

Monochrome. Editorial. Sensual, never cheesy. Lowercase on social, restraint on the journal. We name the material and the cut and let the light do the rest. No "elevate your look," no exclamation stacks, no filler.

Channels & sequence

  1. Journal (blog) — two editorial posts, Valentina, in Velvet and The Case for One Colour. The anchor content; everything else points here.
  2. Instagram feed — one hero per suit (velvet lifestyle; scarlet ecom-front), captions lowercase, 6 hashtags, CTA → karma.style.
  3. TikTok / Reels — the velvet "light like water" cut; the scarlet "wait for the turn" open-back reveal.
  4. Campaign still — the 1:1 square as the paid/feed unit.

Assets (from the approved library)

  • Valentina heroes: designs/valentina/lifestyle_life1.png, designs/valentina/ecom_front.png, designs/valentina/lifestyle_editorial.png
  • Scarlet heroes: designs/redonepiece/ecom_front.png, designs/redonepiece/ecom_back.png
  • Marketing crops: marketing/campaign/valentina_square.png, marketing/social/valentina_story.png, marketing/blog/valentina_hero.png

CTA

Shop Signature at karma.style.

Still needed (blocked)

  • A rendered redonepiece campaign square + story crop (studio/ComfyUI required — local :8188 is down; heroes above stand in until rendered).
  • Live posting: IG/TikTok publish tokens (see loop doc) — content is queued and publish-ready in the library.