ktg-plugin-marketplace/plugins/linkedin-thought-leadership/config/image-credit-caption.template.md
Kjell Tore Guttormsen 7ebd28cb0b feat(linkedin): v2.3.0 — Step 7.5 visual-assets phase in /linkedin:newsletter
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>
2026-05-28 22:49:19 +02:00

3 KiB

Bilde-credit + caption — cover per edition

TEMPLATE. Copy this to <serie>/linkedin/image-credit-caption.md and fill it in per series. /linkedin:newsletter Step 7.5 (visual-assets phase) reads it and updates the row for the edition in production; the values flow into <serie>/linkedin/edition-config.jsoncoverCredit + captions[NN], which render/build-linkedin.mjs reads when it builds POST.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.pnggodkjent, fast navn. Det eneste filnavnet build-linkedin.mjs leser. 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 med ![alt](linkedin/NN/figN.png) og lastet opp manuelt i editoren (build-linkedin.mjs embedder ikke figurer).

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.