Endring 7 from the change-spec: make visual assets an explicit pipeline phase. New Step 7.5 (visual-assets) between annotation (Step 7) and lock (Step 8): cover (+ optional inline figures) or carousel deck, generated and operator-gated BEFORE lock so build-linkedin.mjs picks up cover.png at lock without a post-lock re-render. Pipeline 13 → 14 phases. - commands/newsletter.md: Step 7.5 section, pipeline overview + build-status, resumption table (annotation → 7.5; new visual-assets → 8), Step 8 precondition, reference-file list. - config/edition-state.template.json: visual-assets phase + additive articles.NN.visualAssets schema (format / cover / figures / carousel). - config/image-credit-caption.template.md (new): motif + credit + caption table, honest-about-AI credit, naming convention. - Two generation routes, no lock-in: default mcp-image (cover-v<N>-kandidat.png) or external cover-raw.png. Operator-gate via SendUserFile → cp to cover.png. Carousel branch reuses render/build-carousel.mjs. - Doc/orchestration-only — no new code. Commands (24) + agents (15) unchanged. - Version sync 2.2.0 → 2.3.0 across plugin.json, CHANGELOG, README, CLAUDE.md, root README + root CLAUDE.md. Correction: spec claimed build-linkedin.mjs handles fig1-4; verified it does NOT — it embeds only cover.png by fixed name; figures are referenced in the draft markdown and uploaded manually. Step 7.5 documents actual behavior. All 8 acceptance criteria met. JSON valid (14 phases); 20/20 render tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3 KiB
Bilde-credit + caption — cover per edition
TEMPLATE. Copy this to
<serie>/linkedin/image-credit-caption.mdand fill it in per series./linkedin:newsletterStep 7.5 (visual-assets phase) reads it and updates the row for the edition in production; the values flow into<serie>/linkedin/edition-config.json→coverCredit+captions[NN], whichrender/build-linkedin.mjsreads when it buildsPOST.html(Step 8). This file is the human-readable source of truth for motif + credit + caption; the JSON is the machine copy the renderer consumes.
LinkedIn-editoren har et «Add credit and caption»-felt under hvert bilde. Fyll inn per cover. Caption = én kort linje som koder artikkelens signal (det leseren skal sitte igjen med), ikke en bildebeskrivelse.
Format i editoren: ofte ett felt. Lim «Caption — Credit» eller bruk feltene hver for seg om de finnes.
Verifiseringsplikt — credit skal være ærlig
Er coveret KI-generert (Nano Banana Pro / Gemini / DALL·E / Midjourney) → credit MÅ si det. Aldri la et AI-bilde framstå som foto eller egenprodusert illustrasjon. Eksempel-credit for AI-cover:
Felles credit (alle editions): Illustrasjon generert med <verktøy> — f.eks.
Illustrasjon generert med Google Gemini (Nano Banana Pro).
Er coveret et ekte foto eller en håndlaget figur → bytt til den ærlige creditten
(Foto: <fotograf>, Egenprodusert figur). Avvik fra felles-creditten føres under.
Per-edition credit-avvik: (list any edition whose credit differs from the felles-credit, with the reason — e.g. «Del 3: Egenprodusert figur (kodet SVG)». None by default.)
Motiv + caption per edition
| Del | Cover (motiv) | Caption |
|---|---|---|
| 01 | <one-line motif — what the cover depicts> | <one-line caption — the article's signal> |
| 02 | … | … |
| samle | <optional samle-post badge/motif> |
Naming-konvensjon (cover-filer)
cover.png— godkjent, fast navn. Det eneste filnavnetbuild-linkedin.mjsleser. Operator-gaten i Step 7.5 kopierer den godkjente kandidaten hit.cover-v<N>-kandidat.png— genererings-forsøk (mcp-image eller etterbehandlet). Flere kan ligge side om side uten å overskrive den godkjente.cover-raw.png— valgfri ekstern pre-edit-kilde (DALL·E / Midjourney / fotograf).fig<N>.png— inline-figur (fig1.png,fig2.png, …), referert fra utkast-markdown medog lastet opp manuelt i editoren (build-linkedin.mjsembedder ikke figurer).
Carousel-utgaver
Carousel-editions (typografisk deck via render/build-carousel.mjs) har som regel
ingen foto-cover → ingen bilde-credit nødvendig. Slide-kilden er
linkedin/NN/carousel.md, rendret til linkedin/NN/carousel.pdf. En carousel-edition
som også legger en feed-cover trenger likevel en rad over.
Samle-post
Ev. Maskinrommet-/serie-badge (egen asset) → ingen credit. Lenken til serien ligger i første kommentar, ikke i bildet.