@path58/brand-assets 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/linkedin-templates/README.md +56 -0
- package/linkedin-templates/_scripts/render-linkedin-templates.mjs +114 -0
- package/linkedin-templates/path58-consultancy/alt-text-suggestion.md +27 -0
- package/linkedin-templates/path58-consultancy/banner-1584x396.png +0 -0
- package/linkedin-templates/path58-consultancy/carousel/README.md +124 -0
- package/linkedin-templates/path58-consultancy/carousel/alt-text-suggestion.md +38 -0
- package/linkedin-templates/path58-consultancy/carousel/cover-v1-typography.png +0 -0
- package/linkedin-templates/path58-consultancy/carousel/cover-v1-typography.svg +18 -0
- package/linkedin-templates/path58-consultancy/carousel/cover-v2-ai-image-fullbleed-reference.png +0 -0
- package/linkedin-templates/path58-consultancy/carousel/cover-v2-ai-image-fullbleed.png +0 -0
- package/linkedin-templates/path58-consultancy/carousel/cover-v2-ai-image-fullbleed.svg +13 -0
- package/linkedin-templates/path58-consultancy/carousel/cover-v3-hybrid-reference.png +0 -0
- package/linkedin-templates/path58-consultancy/carousel/cover-v3-hybrid.png +0 -0
- package/linkedin-templates/path58-consultancy/carousel/cover-v3-hybrid.svg +16 -0
- package/linkedin-templates/path58-consultancy/carousel/final-cta.png +0 -0
- package/linkedin-templates/path58-consultancy/carousel/final-cta.svg +20 -0
- package/linkedin-templates/path58-consultancy/carousel/inner-chart-bearing.png +0 -0
- package/linkedin-templates/path58-consultancy/carousel/inner-chart-bearing.svg +14 -0
- package/linkedin-templates/path58-consultancy/carousel/inner-quote-callout.png +0 -0
- package/linkedin-templates/path58-consultancy/carousel/inner-quote-callout.svg +14 -0
- package/linkedin-templates/path58-consultancy/carousel/inner-text-heavy.png +0 -0
- package/linkedin-templates/path58-consultancy/carousel/inner-text-heavy.svg +17 -0
- package/linkedin-templates/path58-consultancy/quote-card-alt-text-suggestion.md +24 -0
- package/linkedin-templates/path58-consultancy/quote-card-v1-quote-leads-accent-strip.png +0 -0
- package/linkedin-templates/path58-consultancy/quote-card-v1-quote-leads-accent-strip.svg +39 -0
- package/linkedin-templates/path58-consultancy/quote-card-v2-attribution-leads-money-moment.png +0 -0
- package/linkedin-templates/path58-consultancy/quote-card-v2-attribution-leads-money-moment.svg +42 -0
- package/linkedin-templates/path58-consultancy/quote-card-v3-hybrid-lime-free.png +0 -0
- package/linkedin-templates/path58-consultancy/quote-card-v3-hybrid-lime-free.svg +40 -0
- package/linkedin-templates/tsvika-personal/alt-text-suggestion.md +26 -0
- package/linkedin-templates/tsvika-personal/banner-1584x396.png +0 -0
- package/linkedin-templates/tsvika-personal/carousel/README.md +65 -0
- package/linkedin-templates/tsvika-personal/carousel/alt-text-suggestion.md +40 -0
- package/linkedin-templates/tsvika-personal/carousel/cover-v1-typography.png +0 -0
- package/linkedin-templates/tsvika-personal/carousel/cover-v1-typography.svg +12 -0
- package/linkedin-templates/tsvika-personal/carousel/cover-v2-ai-image-fullbleed-reference.png +0 -0
- package/linkedin-templates/tsvika-personal/carousel/cover-v2-ai-image-fullbleed.png +0 -0
- package/linkedin-templates/tsvika-personal/carousel/cover-v2-ai-image-fullbleed.svg +13 -0
- package/linkedin-templates/tsvika-personal/carousel/cover-v3-hybrid-reference.png +0 -0
- package/linkedin-templates/tsvika-personal/carousel/cover-v3-hybrid.png +0 -0
- package/linkedin-templates/tsvika-personal/carousel/cover-v3-hybrid.svg +16 -0
- package/linkedin-templates/tsvika-personal/carousel/final-cta.png +0 -0
- package/linkedin-templates/tsvika-personal/carousel/final-cta.svg +14 -0
- package/linkedin-templates/tsvika-personal/carousel/inner-chart-bearing.png +0 -0
- package/linkedin-templates/tsvika-personal/carousel/inner-chart-bearing.svg +14 -0
- package/linkedin-templates/tsvika-personal/carousel/inner-quote-callout.png +0 -0
- package/linkedin-templates/tsvika-personal/carousel/inner-quote-callout.svg +14 -0
- package/linkedin-templates/tsvika-personal/carousel/inner-text-heavy.png +0 -0
- package/linkedin-templates/tsvika-personal/carousel/inner-text-heavy.svg +17 -0
- package/linkedin-templates/tsvika-personal/quote-card-alt-text-suggestion.md +25 -0
- package/linkedin-templates/tsvika-personal/quote-card-v1-quote-leads-accent-strip.png +0 -0
- package/linkedin-templates/tsvika-personal/quote-card-v1-quote-leads-accent-strip.svg +11 -0
- package/linkedin-templates/tsvika-personal/quote-card-v2-attribution-leads-money-moment.png +0 -0
- package/linkedin-templates/tsvika-personal/quote-card-v2-attribution-leads-money-moment.svg +13 -0
- package/linkedin-templates/tsvika-personal/quote-card-v3-hybrid-lime-free.png +0 -0
- package/linkedin-templates/tsvika-personal/quote-card-v3-hybrid-lime-free.svg +11 -0
- package/package.json +5 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# @path58/brand-assets
|
|
2
|
+
|
|
3
|
+
## 1.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 8dad1cc: DSGN-2.13 — LinkedIn Visual Template Kit (per-entity).
|
|
8
|
+
|
|
9
|
+
Ships a complete per-entity LinkedIn visual template kit at `linkedin-templates/{path58-consultancy,tsvika-personal}/`:
|
|
10
|
+
|
|
11
|
+
**Banners (2.13.1 — already INTERMEDIATE-MERGED to main 2026-06-28):**
|
|
12
|
+
|
|
13
|
+
- `banner-1584x396.png` (AI-image hero) + `alt-text-suggestion.md` per entity
|
|
14
|
+
- Tsvika hero: variant D seed 4, crop A horizon-upper-third (672 KB)
|
|
15
|
+
- Path58 hero: variant F seed 6, crop C top-biased (544 KB)
|
|
16
|
+
|
|
17
|
+
**Quote cards (2.13.2):**
|
|
18
|
+
|
|
19
|
+
- 6 typographic variants (3 styles × 2 entities) at 1080×1080 PNG + SVG source
|
|
20
|
+
- Per-entity `quote-card-alt-text-suggestion.md` with 3 variant ALT blocks
|
|
21
|
+
|
|
22
|
+
**Carousel kit (2.13.3):**
|
|
23
|
+
|
|
24
|
+
- 14 templates (7 per entity) at 1080×1350 portrait — covers (v1 typography / v2 AI-fullbleed / v3 hybrid) + inner-text-heavy + inner-chart-bearing + inner-quote-callout + final-cta
|
|
25
|
+
- 4 AI cover reference renders (v2 + v3 per entity) demonstrating template output when populated
|
|
26
|
+
- Per-entity `carousel/README.md` (template usage + AI prompt-craft framework + DSGN-2.14 disclosure compliance + LinkedIn upload guide)
|
|
27
|
+
- Per-entity `carousel/alt-text-suggestion.md` (7 slot-pattern ALT entries)
|
|
28
|
+
|
|
29
|
+
**Render pipeline:**
|
|
30
|
+
|
|
31
|
+
- `linkedin-templates/_scripts/render-linkedin-templates.mjs` — resvg-js + wawoff2 + twemoji-inline pipeline; globs banner-_.svg + quote-card-_.svg + `carousel/*.svg`
|
|
32
|
+
- devDeps added: `@resvg/resvg-js@^2.6.2` + `wawoff2@^2.0.1`
|
|
33
|
+
|
|
34
|
+
**Voice canon updates** (sibling commits to brand-guidelines):
|
|
35
|
+
|
|
36
|
+
- `TSVIKA_VOICE_PERSONAL.md` v1.0.0 → v1.1.0 (HARD-BAN on "recovering" descriptor per operator flag 2026-06-27)
|
|
37
|
+
- `PATH58_VOICE_TONE.md` v1.3.0 → v1.4.0 (Onlyness anchor unification + Two-Register Pattern + "substrate" RED-jargon retirement; shipped via ORCH ceremony 2026-06-28)
|
|
38
|
+
|
|
39
|
+
**Compliance:** AI-generated imagery (4 banner shipments + 4 carousel cover references) tracked via `ai-content-disclosure-bypass-log.md` entries EXC-001 + EXC-002 + EXC-003 per DSGN-2.14 AI-Content Disclosure Protocol v1.0.0 RATIFIED 2026-06-27.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# `@path58/brand-assets` — LinkedIn templates
|
|
2
|
+
|
|
3
|
+
Per-entity LinkedIn surface assets (banner, quote card, carousel). Shipped via DSGN-2.13 — LinkedIn Visual Template Kit story.
|
|
4
|
+
|
|
5
|
+
## Entities
|
|
6
|
+
|
|
7
|
+
| Entity | Path | Voice canon | Visual chrome |
|
|
8
|
+
|---|---|---|---|
|
|
9
|
+
| Path58 (firm) | `path58-consultancy/` | `PATH58_VOICE_TONE.md` v1.3.0+ | warm-editorial cream/navy/lime per visual-profile-path58 v1.0.0 |
|
|
10
|
+
| Tsvika (personal) | `tsvika-personal/` | `TSVIKA_VOICE_PERSONAL.md` v1.1.0+ | sibling navy DNA shared with Path58 — identical chrome per § 7 |
|
|
11
|
+
|
|
12
|
+
## Surface inventory (this kit)
|
|
13
|
+
|
|
14
|
+
| Surface | Dimensions | Source story |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| Banner (LinkedIn cover image) | 1584 × 396 px | DSGN-2.13.1 |
|
|
17
|
+
| Quote card | 1080 × 1080 px | DSGN-2.13.2 *(in flight)* |
|
|
18
|
+
| Carousel (cover + inner + final-CTA) | 1080 × 1350 px | DSGN-2.13.3 *(in flight)* |
|
|
19
|
+
|
|
20
|
+
## File format convention
|
|
21
|
+
|
|
22
|
+
Per template: **both** SVG source and PNG export.
|
|
23
|
+
|
|
24
|
+
- **SVG** is the source of truth (hand-authored or code-generated; deterministic build).
|
|
25
|
+
- **PNG** is the deterministic export at production dimensions, ready for upload to LinkedIn.
|
|
26
|
+
|
|
27
|
+
PNGs are regenerated from SVG sources via `_scripts/render-linkedin-templates.mjs`. Do not hand-edit PNGs.
|
|
28
|
+
|
|
29
|
+
## Brand canon (LOCKED, do not inline alternates)
|
|
30
|
+
|
|
31
|
+
- Cream background: `#f6f4ee`
|
|
32
|
+
- Navy text: `#0d1d4d`
|
|
33
|
+
- Lime accent: `#9ab64a` — 5-10% body volume only, money-moments only (per `visual-profile-path58.md` Slot 5 guardrail 1). Banner lime usage = 8px left strip, ~0.5% surface volume, well under cap.
|
|
34
|
+
- Sans-only typography. Space Grotesk = display (wordmarks, large headlines). Inter = body (taglines, supporting text). JetBrains Mono sparingly for figures.
|
|
35
|
+
|
|
36
|
+
## a11y
|
|
37
|
+
|
|
38
|
+
Each banner ships with `alt-text-suggestion.md` — copy-paste into LinkedIn's ALT field on upload. Minimum 150 chars, describes visual + tagline.
|
|
39
|
+
|
|
40
|
+
## Cross-surface coherence
|
|
41
|
+
|
|
42
|
+
LinkedIn banners echo the `production/apps/website/src/lib/og-image.tsx` visual baseline (DSGN-2.2.5):
|
|
43
|
+
|
|
44
|
+
- Left-anchored composition
|
|
45
|
+
- 8px lime strip on left edge
|
|
46
|
+
- Lowercase `path58` wordmark (Path58 entity) / `Tsvika` wordmark (personal entity)
|
|
47
|
+
- Navy opacity tiers: 1.0 (headline) / 0.55 (supporting text)
|
|
48
|
+
|
|
49
|
+
Coherence is intentional — Path58's first-impression visual identity must read as one system across OG cards (Google/Slack/LinkedIn link previews) AND LinkedIn cover banners.
|
|
50
|
+
|
|
51
|
+
## Out of scope (this kit)
|
|
52
|
+
|
|
53
|
+
- AI-generated imagery (REQ-2026-06-27-002 WS-2 Disclosure Protocol must land first; not yet shipped)
|
|
54
|
+
- Per-page `opengraph-image.tsx` route handlers (DSGN-2.2.5 baseline; do not modify)
|
|
55
|
+
- Per-entity `*_IMAGERY.md` docs (REQ-002 WS-1; future story)
|
|
56
|
+
- p58 / AX-Engine / MAOS / path58-os entity LinkedIn templates (this kit is Path58 + Tsvika only)
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* DSGN-2.13.1 — SVG → PNG renderer for LinkedIn templates.
|
|
4
|
+
*
|
|
5
|
+
* Loads brand-canon fonts (Space Grotesk display, Inter body) from packages/brand-assets/fonts/,
|
|
6
|
+
* renders each banner-*.svg to a deterministic banner-*.png at the SVG's intrinsic dimensions.
|
|
7
|
+
*
|
|
8
|
+
* Usage: node _scripts/render-linkedin-templates.mjs
|
|
9
|
+
*
|
|
10
|
+
* Idempotent: re-runs produce byte-identical PNGs (deterministic given same SVG + same fonts).
|
|
11
|
+
*/
|
|
12
|
+
import { readFileSync, writeFileSync, readdirSync, statSync, existsSync, mkdirSync } from 'node:fs';
|
|
13
|
+
import { join, dirname, resolve, basename } from 'node:path';
|
|
14
|
+
import { fileURLToPath } from 'node:url';
|
|
15
|
+
import { Resvg } from '@resvg/resvg-js';
|
|
16
|
+
import wawoff2 from 'wawoff2';
|
|
17
|
+
|
|
18
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
19
|
+
const LINKEDIN_TEMPLATES_DIR = resolve(__dirname, '..');
|
|
20
|
+
const FONTS_DIR = resolve(__dirname, '..', '..', 'fonts');
|
|
21
|
+
const TTF_CACHE_DIR = resolve(__dirname, '.font-cache');
|
|
22
|
+
|
|
23
|
+
// Brand-canon font files (woff2 → ttf via wawoff2 → resvg fontFiles).
|
|
24
|
+
// Weights match SVG references: Space Grotesk 700 display + Inter 400/500 body.
|
|
25
|
+
// Inter 600 included as fallback weight for ≥500 lookups.
|
|
26
|
+
const WOFF2_SOURCES = [
|
|
27
|
+
join(FONTS_DIR, 'SpaceGrotesk', 'SpaceGrotesk-700-normal-latin.woff2'),
|
|
28
|
+
join(FONTS_DIR, 'Inter', 'Inter-400-normal-latin.woff2'),
|
|
29
|
+
join(FONTS_DIR, 'Inter', 'Inter-500-normal-latin.woff2'),
|
|
30
|
+
join(FONTS_DIR, 'Inter', 'Inter-600-normal-latin.woff2'),
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
async function ensureTtfCache() {
|
|
34
|
+
if (!existsSync(TTF_CACHE_DIR)) mkdirSync(TTF_CACHE_DIR, { recursive: true });
|
|
35
|
+
const ttfPaths = [];
|
|
36
|
+
for (const woff2Path of WOFF2_SOURCES) {
|
|
37
|
+
const ttfPath = join(TTF_CACHE_DIR, basename(woff2Path).replace(/\.woff2$/, '.ttf'));
|
|
38
|
+
if (!existsSync(ttfPath)) {
|
|
39
|
+
const woff2Bytes = readFileSync(woff2Path);
|
|
40
|
+
const ttfBytes = await wawoff2.decompress(woff2Bytes);
|
|
41
|
+
writeFileSync(ttfPath, ttfBytes);
|
|
42
|
+
}
|
|
43
|
+
ttfPaths.push(ttfPath);
|
|
44
|
+
}
|
|
45
|
+
return ttfPaths;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const BRAND_FONTS = await ensureTtfCache();
|
|
49
|
+
|
|
50
|
+
// Emoji font for catchphrase glyphs (🤖 💚) — only used for the Path58 banner's bottom-right mark.
|
|
51
|
+
// Apple Color Emoji is macOS-native and resvg-js can read .ttc bitmap-emoji fonts (as of v2.x).
|
|
52
|
+
// On non-Mac platforms (CI), this path won't exist — emoji glyphs will fall back to missing-box.
|
|
53
|
+
const APPLE_COLOR_EMOJI = '/System/Library/Fonts/Apple Color Emoji.ttc';
|
|
54
|
+
const FONT_FILES = existsSync(APPLE_COLOR_EMOJI) ? [...BRAND_FONTS, APPLE_COLOR_EMOJI] : BRAND_FONTS;
|
|
55
|
+
|
|
56
|
+
function findTemplateSvgs(rootDir) {
|
|
57
|
+
// Top-level entity-dir: banner-*.svg + quote-card-*.svg (2.13.1 + 2.13.2 pattern).
|
|
58
|
+
// carousel/ subdir: ANY .svg file (cover-v1-*.svg, inner-*.svg, final-cta.svg per 2.13.3).
|
|
59
|
+
const results = [];
|
|
60
|
+
const isTopLevelTemplateSvg = (name) =>
|
|
61
|
+
(name.startsWith('banner-') || name.startsWith('quote-card-')) && name.endsWith('.svg');
|
|
62
|
+
for (const entry of readdirSync(rootDir)) {
|
|
63
|
+
if (entry.startsWith('_') || entry.startsWith('.')) continue;
|
|
64
|
+
const entryPath = join(rootDir, entry);
|
|
65
|
+
if (!statSync(entryPath).isDirectory()) continue;
|
|
66
|
+
for (const file of readdirSync(entryPath)) {
|
|
67
|
+
if (isTopLevelTemplateSvg(file)) results.push(join(entryPath, file));
|
|
68
|
+
const subPath = join(entryPath, file);
|
|
69
|
+
try {
|
|
70
|
+
if (statSync(subPath).isDirectory() && file === 'carousel') {
|
|
71
|
+
for (const subFile of readdirSync(subPath)) {
|
|
72
|
+
if (subFile.endsWith('.svg')) results.push(join(subPath, subFile));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
} catch {}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return results;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function renderOne(svgPath) {
|
|
82
|
+
const svg = readFileSync(svgPath, 'utf8');
|
|
83
|
+
const resvg = new Resvg(svg, {
|
|
84
|
+
fitTo: { mode: 'original' },
|
|
85
|
+
font: {
|
|
86
|
+
fontFiles: FONT_FILES,
|
|
87
|
+
loadSystemFonts: false,
|
|
88
|
+
defaultFontFamily: 'Inter',
|
|
89
|
+
},
|
|
90
|
+
background: 'rgba(0,0,0,0)',
|
|
91
|
+
});
|
|
92
|
+
const pngData = resvg.render().asPng();
|
|
93
|
+
const pngPath = svgPath.replace(/\.svg$/, '.png');
|
|
94
|
+
writeFileSync(pngPath, pngData);
|
|
95
|
+
return { svgPath, pngPath, bytes: pngData.length };
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const templates = findTemplateSvgs(LINKEDIN_TEMPLATES_DIR);
|
|
99
|
+
if (templates.length === 0) {
|
|
100
|
+
console.error('No template SVGs (banner-* / quote-card-* / carousel-*) found under', LINKEDIN_TEMPLATES_DIR);
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
console.log(`Rendering ${templates.length} template SVG(s) → PNG …`);
|
|
105
|
+
for (const svgPath of templates) {
|
|
106
|
+
try {
|
|
107
|
+
const { pngPath, bytes } = renderOne(svgPath);
|
|
108
|
+
const rel = pngPath.replace(LINKEDIN_TEMPLATES_DIR + '/', '');
|
|
109
|
+
console.log(` ✓ ${rel} (${(bytes / 1024).toFixed(1)} KB)`);
|
|
110
|
+
} catch (err) {
|
|
111
|
+
console.error(` ✗ ${svgPath}: ${err.message}`);
|
|
112
|
+
process.exitCode = 1;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# LinkedIn ALT text — Path58 company banner (hero / AI-generated)
|
|
2
|
+
|
|
3
|
+
Copy-paste the line below into LinkedIn's ALT field when uploading `banner-1584x396.png` to the Path58 company LinkedIn page cover image.
|
|
4
|
+
|
|
5
|
+
## Primary (recommended, ~290 chars)
|
|
6
|
+
|
|
7
|
+
> Cinematic aerial twilight photograph of a vast luminous architecture spanning a dark landscape. Networked geometry of warm cream-yellow pathways converges at a single luminous focal beacon at the horizon, where deep navy sky meets warm cream-yellow horizon glow. Reads as a structured operating system rendered in light. Restrained Villeneuve-cinematography register. AI-generated imagery per Path58 AI-Content Disclosure Protocol.
|
|
8
|
+
|
|
9
|
+
## Shorter (180 chars, if LinkedIn caps shorter on a particular surface)
|
|
10
|
+
|
|
11
|
+
> Cinematic aerial twilight: vast luminous architecture across dark terrain, networked golden pathways converging at a single horizon beacon under navy-meets-cream sky. AI-generated per Path58 disclosure.
|
|
12
|
+
|
|
13
|
+
## Notes for content authors
|
|
14
|
+
|
|
15
|
+
- AI-generated image — disclosure required per `path58-design/operations/.context/brand/CANON-LOCKS.md` § AI-Content Disclosure Protocol. Layer-1 standing declaration adoption is pending on the Path58 LinkedIn company page **Overview** field (NOT the Tagline field — Tagline carries positioning copy unchanged per protocol § 6.10). One-off exception filed at `path58-design/operations/.coordination/exceptions/ai-content-disclosure-bypass-log.md` as `EXC-2026-06-27-002` for this banner (DSGN-2.13.1 amendment 2026-06-27).
|
|
16
|
+
- Source: FLUX.1-schnell seed=6, num_inference_steps=8, rendered at 1584×768, smart-cropped top-biased (top=100) to 1584×396 — operator pick reflects this image's concentrated upper-left light fountain wanting more sky breathing room than Tsvika's banner needed.
|
|
17
|
+
- Sibling-system note: Same Villeneuve register + same brand palette as Tsvika personal banner. Distinction = metaphor (Path58 firm = "structured operating system rendered in light, networked geometry CONVERGING" vs Tsvika personal = "vast constellation AWAKENING ACROSS terrain"). Both read as Path58 family; neither is a duplicate of the other.
|
|
18
|
+
- Per WCAG 2.2 AA on decorative imagery: aspirational backdrop carries no text content; ALT text describes the visual register for screen-reader users to maintain parity with sighted-user first-impression.
|
|
19
|
+
- Tagline ("Where revenue orgs become AI-native.") moved OUT of the banner image and INTO the LinkedIn company page **Tagline** field (120-char company tagline slot) per Mark Roberge reference pattern: LinkedIn structured fields carry identity / positioning, banner image carries aspirational backdrop.
|
|
20
|
+
|
|
21
|
+
## Compliance reminder when uploading
|
|
22
|
+
|
|
23
|
+
When you upload this banner to the Path58 LinkedIn company page, ensure:
|
|
24
|
+
1. ✅ The Path58 company **Tagline** field (120-char slot under company name) carries the positioning copy ("Where revenue orgs become AI-native." or your preferred final copy).
|
|
25
|
+
2. ✅ The Path58 company **Overview** field (long-form About-the-company) carries the § 6.10 Path58 voice register Layer-1 standing declaration (or note in the exception-log that adoption is pending — currently the exception-log entry covers this gap).
|
|
26
|
+
3. ✅ The image file carries C2PA metadata per DSGN-2.14 protocol § 7 (currently optional pending DSGN-2.15 pipeline ratify; one-off exception covers this).
|
|
27
|
+
4. ✅ Disclosure pipeline weekly-audit cron will surface this shipment — confirm `EXC-2026-06-27-002` lands in the audit log.
|
|
Binary file
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Path58 LinkedIn carousel — template kit
|
|
2
|
+
|
|
3
|
+
Templates for Path58 company-page LinkedIn carousel posts (also reusable for Instagram carousels at the same 1080×1350 portrait aspect).
|
|
4
|
+
|
|
5
|
+
## Slide inventory
|
|
6
|
+
|
|
7
|
+
| File | Purpose | Genre |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `cover-v1-typography.svg` + `.png` | Cover variant 1 — typography-only (text-heavy editorial register) | Use for thought-leadership / methodology / restrained-editorial posts |
|
|
10
|
+
| `cover-v2-ai-image-fullbleed.svg` + `.png` + `-reference.png` | Cover variant 2 — AI-image full-bleed + minimal text band | Use for aspirational / brand-vision / manifesto posts |
|
|
11
|
+
| `cover-v3-hybrid.svg` + `.png` + `-reference.png` | Cover variant 3 — AI-image top + strong typography overlay | Use for announcement / case-study / launch / asset-promotion posts |
|
|
12
|
+
| `inner-text-heavy.svg` + `.png` | Inner slide — long-form claim/argument with body paragraphs | Reusable across all post types |
|
|
13
|
+
| `inner-chart-bearing.svg` + `.png` | Inner slide — chart/data zone with placeholder | Reusable |
|
|
14
|
+
| `inner-quote-callout.svg` + `.png` | Inner slide — pull-quote (same typography as quote cards) | Reusable |
|
|
15
|
+
| `final-cta.svg` + `.png` | Final slide — verb-only CTA per PATH58 § 5 | Reusable |
|
|
16
|
+
|
|
17
|
+
## How to use per post
|
|
18
|
+
|
|
19
|
+
1. **Pick one cover variant** matching the post's tone (v1 / v2 / v3)
|
|
20
|
+
2. **Pick 0–3 inner slides** in the order they tell your story
|
|
21
|
+
3. **Add the final-CTA** slide
|
|
22
|
+
4. **Fill the placeholder text slots** with post copy (see slot conventions below)
|
|
23
|
+
5. **Generate AI image** if using cover v2 or v3 (see prompt-craft section below)
|
|
24
|
+
6. **Compose to PDF** (Keynote / Figma / similar) and upload to LinkedIn as a document post
|
|
25
|
+
|
|
26
|
+
## Slot conventions
|
|
27
|
+
|
|
28
|
+
Every `[bracketed placeholder]` text in the SVG is a slot you replace per post:
|
|
29
|
+
|
|
30
|
+
| Slot pattern | What goes here | Voice canon |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| `[Your headline, poetic register, 3-4 short lines.]` | Cover headline | PATH58 v1.4.0 § 1.1 **poetic register** (tagline-class — short, dreamy, brand-pull) |
|
|
33
|
+
| `[Slide headline, 2 lines max.]` | Inner slide title | PATH58 v1.4.0 § 1.1 **declarative register** (analytical, defensibility-bearing) |
|
|
34
|
+
| `[Body paragraph 1 — the claim or argument.]` | Inner body text | PATH58 v1.4.0 § 5 writing patterns (outcome-first, number-hygiene, no banned-vocab) |
|
|
35
|
+
| `[Pull quote — poetic or declarative, 3-5 lines.]` | Inner quote-callout | Both registers acceptable; match to post type |
|
|
36
|
+
| `[Verb-led CTA — e.g., Visit, Book, Subscribe, Read.]` | Final-CTA verb | PATH58 § 5 — verb-only ("Visit path58.com", "Book a Constraint Diagnostic", "Subscribe to Pulse"); NEVER "Click here" / "Learn more" |
|
|
37
|
+
| `[Destination URL or contact — e.g., path58.com/services]` | CTA destination | Real URL |
|
|
38
|
+
| `02 / 05` | Section pagination | Update per slide position in the carousel |
|
|
39
|
+
|
|
40
|
+
## Voice canon ban-list — MANDATORY grep before every post ships
|
|
41
|
+
|
|
42
|
+
Per PATH58_VOICE_TONE.md v1.4.0 § 3 (located at `production/packages/brand-guidelines/PATH58_VOICE_TONE.md`):
|
|
43
|
+
|
|
44
|
+
- ❌ "excited to announce", "thrilled to share" → just announce the thing
|
|
45
|
+
- ❌ "best-in-class", "world-class", "cutting-edge", "game-changing", "disruptive" → adjective-inflation
|
|
46
|
+
- ❌ "AI-powered" as a value claim → name what the agent actually does
|
|
47
|
+
- ❌ "leverage", "utilize", "synergy", "seamless", "robust", "solution" as filler
|
|
48
|
+
- ❌ Growth-marketing urgency: "don't miss out", "limited spots", countdown framing
|
|
49
|
+
- ❌ US-SV-translated cliché: "crushing it", "10x your...", "let's unpack", "at the end of the day"
|
|
50
|
+
- ❌ "substrate" → RED jargon, operator-retired 2026-06-28 (use "operating layer" instead)
|
|
51
|
+
- ❌ "AXE Engine" / "AXE Score" / "AXE Report" / "p58n8n" / "Path 58" / "path58-os" lowercase → use canonical names: AX-Engine / AX Score / AX-Engine Report / p58-n8n / Path58 / Path58-OS
|
|
52
|
+
|
|
53
|
+
## AI imagery — prompt-craft framework (for cover v2 + v3 per-post generation)
|
|
54
|
+
|
|
55
|
+
The cover-v2 + cover-v3 templates have an AI-image slot. Generate fresh AI imagery per post using the documented FLUX pipeline at `_dev-tools/huggingface/`.
|
|
56
|
+
|
|
57
|
+
### Quick-start
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
export PATH="$HOME/.local/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
|
|
61
|
+
export HF_TOKEN="$(op read 'op://Path58/Hugging Face claude-cowork-image-gen Token/credential')"
|
|
62
|
+
|
|
63
|
+
# Generate cover image at portrait carousel aspect
|
|
64
|
+
python3 << 'PY'
|
|
65
|
+
from huggingface_hub import InferenceClient
|
|
66
|
+
client = InferenceClient(provider='hf-inference')
|
|
67
|
+
img = client.text_to_image(
|
|
68
|
+
prompt="YOUR PROMPT (see template below)",
|
|
69
|
+
model="black-forest-labs/FLUX.1-schnell",
|
|
70
|
+
width=1080, height=1350,
|
|
71
|
+
num_inference_steps=8,
|
|
72
|
+
)
|
|
73
|
+
img.save("/tmp/carousel-cover.png")
|
|
74
|
+
PY
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Base prompt template (Path58 firm voice — adapt per post)
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Cinematic editorial photograph, portrait orientation 1080x1350,
|
|
81
|
+
deep navy blue twilight landscape, vast luminous architecture of warm cream-yellow light
|
|
82
|
+
spanning the dark terrain — a structured operating system rendered in light, networked geometry
|
|
83
|
+
of golden pathways converging at a single luminous focal beacon at the upper horizon,
|
|
84
|
+
soft atmospheric haze, volumetric god-rays piercing the upper sky, deep chiaroscuro lighting,
|
|
85
|
+
Roger Deakins cinematography, Denis Villeneuve register, restrained monumentality,
|
|
86
|
+
Kodak Portra 400 film grain, 35mm anamorphic lens, deep navy gradient sky meeting warm cream horizon glow,
|
|
87
|
+
natural light only, no humans no text, editorial restraint, real photo, sense of designed system,
|
|
88
|
+
lower third compositionally quiet to leave space for text overlay
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Per-post variation guidance
|
|
92
|
+
|
|
93
|
+
Swap the **metaphor noun** per post topic:
|
|
94
|
+
- For methodology posts → "structured operating system rendered in light, networked geometry of golden pathways converging"
|
|
95
|
+
- For case-study posts → "monumental architectural form at twilight, single luminous beacon on the horizon"
|
|
96
|
+
- For service-line posts → "operational substrate at dawn, organized golden pathways stretching to a single horizon point" (avoid "substrate" word in copy; OK in prompt as visual descriptor)
|
|
97
|
+
- For thought-leadership posts → "vast aerial vista at twilight, distant city of light awakening"
|
|
98
|
+
|
|
99
|
+
Always KEEP:
|
|
100
|
+
- "Cinematic editorial photograph, portrait orientation" — genre + register
|
|
101
|
+
- "Roger Deakins cinematography, Denis Villeneuve register, restrained monumentality" — cinematographer references
|
|
102
|
+
- "Kodak Portra 400 film grain, 35mm anamorphic lens" — photographic vocabulary suppresses AI sheen
|
|
103
|
+
- "deep navy + warm cream + (lime accent if you want money-moment)" — brand-tight palette
|
|
104
|
+
- "natural light only, no humans no text, editorial restraint, real photo" — exclusion list embedded
|
|
105
|
+
- "lower third compositionally quiet to leave space for text overlay" — composition discipline for the template's text band
|
|
106
|
+
|
|
107
|
+
## AI-Content Disclosure compliance (per DSGN-2.14 protocol)
|
|
108
|
+
|
|
109
|
+
AI-generated imagery on Path58 surfaces triggers DSGN-2.14 AI-Content Disclosure Protocol. Per protocol § 6.10:
|
|
110
|
+
|
|
111
|
+
- **Layer 1 (standing declaration on surface):** Path58 LinkedIn company **Overview** field (long-form About-the-company; NOT the Tagline field) must carry: *"Path58 ships content authored primarily with AI assistance. Per-asset attribution rides in standard metadata. Full disclosure: path58.com/ai-disclosure."*
|
|
112
|
+
- **Layer 2 (per-asset metadata):** automated via DSGN-2.15 pipeline-gate (ratification pending). For one-off cover generation pre-DSGN-2.15: file an exception-log entry at `operations/.coordination/exceptions/ai-content-disclosure-bypass-log.md`.
|
|
113
|
+
- **Layer 3 (pipeline enforcement):** DSGN-2.15 not yet ratified; exception-log covers the gap.
|
|
114
|
+
|
|
115
|
+
Reference URL: `trust.path58.com/ai-disclosure` (interim) / `path58.com/ai-disclosure` (canonical).
|
|
116
|
+
|
|
117
|
+
## LinkedIn document-carousel upload
|
|
118
|
+
|
|
119
|
+
1. Compose your slides in Keynote / Figma / Canva at 1080×1350 each
|
|
120
|
+
2. Export combined slide deck as PDF (or PNG sequence if your tool can't PDF-export)
|
|
121
|
+
3. On LinkedIn, click "Start a post" → click the document icon → upload your PDF
|
|
122
|
+
4. **Document carousels max 10 slides** — fits comfortably for typical 5-slide kit + room for 1-2 extras
|
|
123
|
+
5. Cover slide preview thumbnail is what drives the feed-scroll engagement decision (per RSH-016: 50% of carousel engagement weight)
|
|
124
|
+
6. Paste copy-from-`alt-text-suggestion.md` into the ALT field on the document upload
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# LinkedIn ALT text — Path58 carousel slides
|
|
2
|
+
|
|
3
|
+
Per-slide ALT text suggestions for Path58 LinkedIn carousel uploads. Operator fills in actual headline + body copy per post; ALT text below describes the visual template structure for screen-reader users.
|
|
4
|
+
|
|
5
|
+
## Cover v1 — typography-only
|
|
6
|
+
|
|
7
|
+
> Path58 carousel cover slide, typography-only variant. Cream background with 8px lime accent strip on left edge. "PATH58" eyebrow top-left. Large navy Space Grotesk headline filling center: [insert your headline]. Sub-line below in Inter regular: [insert your supporting line]. Bottom-left attribution "Path58 {🤖💚🤖} · path58.com".
|
|
8
|
+
|
|
9
|
+
## Cover v2 — AI-image full-bleed
|
|
10
|
+
|
|
11
|
+
> Path58 carousel cover slide, AI-image full-bleed variant. Top 1100px filled with AI-generated cinematic editorial photograph: deep navy twilight landscape with luminous golden network/architecture metaphor + horizon glow + atmospheric haze (Villeneuve cinematography register). Bottom 250px cream overlay band carries "PATH58" eyebrow, short headline [insert headline], and "path58.com" bottom-right. Per Path58 AI-Content Disclosure Protocol — AI-generated imagery, full disclosure at path58.com/ai-disclosure.
|
|
12
|
+
|
|
13
|
+
## Cover v3 — hybrid AI + typography
|
|
14
|
+
|
|
15
|
+
> Path58 carousel cover slide, hybrid variant. Top 700px AI-generated cinematic editorial photograph (Villeneuve register, brand cream/navy/lime palette tones). Bottom 650px cream band with 8px lime accent strip carries "PATH58" eyebrow, large navy headline [insert headline 3 lines], supporting line [insert supporting line], and bottom-right "Path58 · path58.com". Per Path58 AI-Content Disclosure Protocol — AI-generated imagery, full disclosure at path58.com/ai-disclosure.
|
|
16
|
+
|
|
17
|
+
## Inner-text-heavy
|
|
18
|
+
|
|
19
|
+
> Path58 carousel inner slide, text-heavy variant. Cream background with 8px lime accent strip on left edge. "PATH58" eyebrow top-left, section pagination "[NN] / [NN]" top-right. Large navy headline [insert headline 2 lines]. Two body paragraphs below in Inter regular: [insert body 1] and [insert body 2]. Pull-quote takeaway in slightly bolder weight: [insert key takeaway]. Bottom-right attribution "Path58 · path58.com".
|
|
20
|
+
|
|
21
|
+
## Inner-chart-bearing
|
|
22
|
+
|
|
23
|
+
> Path58 carousel inner slide, chart-bearing variant. Cream background. "PATH58" eyebrow top-left, section pagination top-right. Chart title in navy Space Grotesk: [insert chart title]. Center: 880×540 chart zone with dashed navy outline (placeholder where chart image/data viz is pasted). Below chart: key takeaway in navy + source citation per Path58 number-hygiene rule (cite + plain-language meaning + basis). Bottom-right attribution "Path58 · path58.com".
|
|
24
|
+
|
|
25
|
+
## Inner-quote-callout
|
|
26
|
+
|
|
27
|
+
> Path58 carousel inner slide, pull-quote variant. Cream background with 8px lime accent strip on left edge. "PATH58" eyebrow top-left, section pagination top-right. Large navy centered pull-quote spanning middle of slide: [insert pull quote 3-5 lines]. Attribution in italic-style Inter below: — [insert attribution / role / context]. Bottom-right "Path58 · path58.com".
|
|
28
|
+
|
|
29
|
+
## Final-CTA
|
|
30
|
+
|
|
31
|
+
> Path58 carousel final slide, verb-only CTA. Cream background with 8px lime accent strip on left edge. "PATH58" eyebrow top-left, section pagination "05 / 05" top-right. Large navy Space Grotesk verb-led CTA spanning middle: [insert CTA — e.g., "Visit path58.com", "Book a Constraint Diagnostic", "Subscribe to Pulse"]. Below CTA: destination URL/contact + optional 1-line context of what they get. Bottom-left full attribution "Path58 {🤖💚🤖} · path58.com".
|
|
32
|
+
|
|
33
|
+
## Notes for content authors
|
|
34
|
+
|
|
35
|
+
- Per WCAG 2.2 AA: replace `[insert ...]` placeholders in the ALT text above with the actual headline/body/CTA copy from the post BEFORE uploading. Screen-reader users get parity with sighted-user content.
|
|
36
|
+
- Each ALT ≥150 chars per ASSIGNMENT AC8.
|
|
37
|
+
- Per DSGN-2.14 protocol: AI-generated imagery cover variants (v2 + v3) require Layer-1 standing declaration on the Path58 LinkedIn company **Overview** field (NOT Tagline) before external upload — see `carousel/README.md` for the boilerplate. File exception-log entry at `operations/.coordination/exceptions/ai-content-disclosure-bypass-log.md` per shipment until DSGN-2.15 pipeline-gate ratifies.
|
|
38
|
+
- Voice canon ban-list grep MANDATORY before each post ships (see `carousel/README.md` for the full ban-list).
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1080 1350" width="1080" height="1350" role="img" aria-label="Path58 carousel cover v1 — typography-only template; slots for headline and sub-line">
|
|
2
|
+
<title>Path58 carousel cover v1 — typography-only template</title>
|
|
3
|
+
<desc>1080x1350 portrait. Cream background with 8px lime accent strip on left edge (echoes banner v1). PATH58 eyebrow top-left. Large headline slot center. Sub-line slot below. Path58 byline + catchphrase bottom-left. PATH58_VOICE_TONE v1.4.0 poetic register for tagline-class headline. Operator fills headline + sub-line per post.</desc>
|
|
4
|
+
<rect width="1080" height="1350" fill="#f6f4ee"/>
|
|
5
|
+
<rect x="0" y="0" width="8" height="1350" fill="#9ab64a"/>
|
|
6
|
+
<text x="100" y="180" font-family="Inter, sans-serif" font-size="28" font-weight="500" fill="#0d1d4d" fill-opacity="0.45" letter-spacing="3">PATH58</text>
|
|
7
|
+
<text x="100" y="600" font-family="Space Grotesk, sans-serif" font-size="92" font-weight="700" fill="#0d1d4d" letter-spacing="-1.5">[Your headline,</text>
|
|
8
|
+
<text x="100" y="710" font-family="Space Grotesk, sans-serif" font-size="92" font-weight="700" fill="#0d1d4d" letter-spacing="-1.5">poetic register,</text>
|
|
9
|
+
<text x="100" y="820" font-family="Space Grotesk, sans-serif" font-size="92" font-weight="700" fill="#0d1d4d" letter-spacing="-1.5">3-4 short lines.]</text>
|
|
10
|
+
<text x="100" y="920" font-family="Inter, sans-serif" font-size="36" font-weight="400" fill="#0d1d4d" fill-opacity="0.65">[Optional sub-line / framing question.]</text>
|
|
11
|
+
<g transform="translate(100, 1220)">
|
|
12
|
+
<text x="0" y="22" font-family="Inter, sans-serif" font-size="28" font-weight="500" fill="#0d1d4d" fill-opacity="0.55">Path58 {</text>
|
|
13
|
+
<svg x="110" y="0" width="28" height="28" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg"><ellipse fill="#F4900C" cx="33.5" cy="14.5" rx="2.5" ry="3.5"/><ellipse fill="#F4900C" cx="2.5" cy="14.5" rx="2.5" ry="3.5"/><path fill="#FFAC33" d="M34 19c0 .553-.447 1-1 1h-3c-.553 0-1-.447-1-1v-9c0-.552.447-1 1-1h3c.553 0 1 .448 1 1v9zM7 19c0 .553-.448 1-1 1H3c-.552 0-1-.447-1-1v-9c0-.552.448-1 1-1h3c.552 0 1 .448 1 1v9z"/><path fill="#FFCC4D" d="M28 5c0 2.761-4.478 4-10 4C12.477 9 8 7.761 8 5s4.477-5 10-5c5.522 0 10 2.239 10 5z"/><path fill="#55ACEE" d="M30 6H6c-1.104 0-2 .896-2 2v26h28V8c0-1.104-.896-2-2-2z"/><circle fill="#FFF" cx="24.5" cy="14.5" r="4.5"/><circle fill="#DD2E44" cx="24.5" cy="14.5" r="2.721"/><circle fill="#FFF" cx="11.5" cy="14.5" r="4.5"/><circle fill="#DD2E44" cx="11.5" cy="14.5" r="2.721"/></svg>
|
|
14
|
+
<svg x="142" y="0" width="28" height="28" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg"><path fill="#78B159" d="M35.885 11.833c0-5.45-4.418-9.868-9.867-9.868-3.308 0-6.227 1.633-8.018 4.129-1.791-2.496-4.71-4.129-8.017-4.129-5.45 0-9.868 4.417-9.868 9.868 0 .772.098 1.52.266 2.241C1.751 22.587 11.216 31.568 18 34.034c6.783-2.466 16.249-11.447 17.617-19.959.17-.721.268-1.469.268-2.242z"/></svg>
|
|
15
|
+
<svg x="174" y="0" width="28" height="28" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg"><ellipse fill="#F4900C" cx="33.5" cy="14.5" rx="2.5" ry="3.5"/><ellipse fill="#F4900C" cx="2.5" cy="14.5" rx="2.5" ry="3.5"/><path fill="#FFAC33" d="M34 19c0 .553-.447 1-1 1h-3c-.553 0-1-.447-1-1v-9c0-.552.447-1 1-1h3c.553 0 1 .448 1 1v9zM7 19c0 .553-.448 1-1 1H3c-.552 0-1-.447-1-1v-9c0-.552.448-1 1-1h3c.552 0 1 .448 1 1v9z"/><path fill="#FFCC4D" d="M28 5c0 2.761-4.478 4-10 4C12.477 9 8 7.761 8 5s4.477-5 10-5c5.522 0 10 2.239 10 5z"/><path fill="#55ACEE" d="M30 6H6c-1.104 0-2 .896-2 2v26h28V8c0-1.104-.896-2-2-2z"/><circle fill="#FFF" cx="24.5" cy="14.5" r="4.5"/><circle fill="#DD2E44" cx="24.5" cy="14.5" r="2.721"/><circle fill="#FFF" cx="11.5" cy="14.5" r="4.5"/><circle fill="#DD2E44" cx="11.5" cy="14.5" r="2.721"/></svg>
|
|
16
|
+
<text x="208" y="22" font-family="Inter, sans-serif" font-size="28" font-weight="500" fill="#0d1d4d" fill-opacity="0.55">} · path58.com</text>
|
|
17
|
+
</g>
|
|
18
|
+
</svg>
|
package/linkedin-templates/path58-consultancy/carousel/cover-v2-ai-image-fullbleed-reference.png
ADDED
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1080 1350" width="1080" height="1350" role="img" aria-label="Path58 carousel cover v2 template — AI image full-bleed slot with minimal text overlay band">
|
|
2
|
+
<title>Path58 carousel cover v2 — AI-image full-bleed template</title>
|
|
3
|
+
<desc>1080x1350 portrait. AI-image zone fills top 1100px (placeholder navy rect labeled "AI image zone — generate per post via FLUX pipeline"). Bottom 250px cream overlay band carries PATH58 eyebrow + minimal byline. Operator generates fresh AI imagery per post using documented prompt-craft framework in README.md. Reference example at cover-v2-ai-image-fullbleed-reference.png shows what the template produces when populated.</desc>
|
|
4
|
+
<rect width="1080" height="1350" fill="#f6f4ee"/>
|
|
5
|
+
<rect x="0" y="0" width="1080" height="1100" fill="#0d1d4d" fill-opacity="0.18"/>
|
|
6
|
+
<text x="540" y="500" text-anchor="middle" font-family="Inter, sans-serif" font-size="28" font-weight="500" fill="#0d1d4d" fill-opacity="0.55" letter-spacing="2">[ AI IMAGE ZONE — 1080 × 1100 ]</text>
|
|
7
|
+
<text x="540" y="550" text-anchor="middle" font-family="Inter, sans-serif" font-size="22" font-weight="400" fill="#0d1d4d" fill-opacity="0.45">Generate per post via FLUX pipeline (see carousel/README.md)</text>
|
|
8
|
+
<rect x="0" y="1100" width="1080" height="250" fill="#f6f4ee"/>
|
|
9
|
+
<rect x="0" y="1100" width="8" height="250" fill="#9ab64a"/>
|
|
10
|
+
<text x="100" y="1170" font-family="Inter, sans-serif" font-size="24" font-weight="500" fill="#0d1d4d" fill-opacity="0.55" letter-spacing="3">PATH58</text>
|
|
11
|
+
<text x="100" y="1250" font-family="Space Grotesk, sans-serif" font-size="48" font-weight="700" fill="#0d1d4d" letter-spacing="-0.6">[Short headline — optional, 4-6 words]</text>
|
|
12
|
+
<text x="980" y="1310" text-anchor="end" font-family="Inter, sans-serif" font-size="22" font-weight="500" fill="#0d1d4d" fill-opacity="0.55">path58.com</text>
|
|
13
|
+
</svg>
|
|
Binary file
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1080 1350" width="1080" height="1350" role="img" aria-label="Path58 carousel cover v3 template — hybrid AI image background + strong typography headline overlay">
|
|
2
|
+
<title>Path58 carousel cover v3 — hybrid AI + typography template</title>
|
|
3
|
+
<desc>1080x1350 portrait. AI-image zone fills top 700px (placeholder navy rect; operator generates per post). Bottom 650px cream band carries strong typography hierarchy: PATH58 eyebrow + large multi-line headline + supporting line + brand byline. Most "marketing-asset" style cover (Mark Roberge banner pattern applied to carousel portrait).</desc>
|
|
4
|
+
<rect width="1080" height="1350" fill="#f6f4ee"/>
|
|
5
|
+
<rect x="0" y="0" width="1080" height="700" fill="#0d1d4d" fill-opacity="0.18"/>
|
|
6
|
+
<text x="540" y="340" text-anchor="middle" font-family="Inter, sans-serif" font-size="26" font-weight="500" fill="#0d1d4d" fill-opacity="0.55" letter-spacing="2">[ AI IMAGE ZONE — 1080 × 700 ]</text>
|
|
7
|
+
<text x="540" y="385" text-anchor="middle" font-family="Inter, sans-serif" font-size="20" font-weight="400" fill="#0d1d4d" fill-opacity="0.45">Generate per post via FLUX pipeline (see carousel/README.md)</text>
|
|
8
|
+
<rect x="0" y="700" width="1080" height="650" fill="#f6f4ee"/>
|
|
9
|
+
<rect x="0" y="700" width="8" height="650" fill="#9ab64a"/>
|
|
10
|
+
<text x="100" y="800" font-family="Inter, sans-serif" font-size="28" font-weight="500" fill="#0d1d4d" fill-opacity="0.55" letter-spacing="3">PATH58</text>
|
|
11
|
+
<text x="100" y="920" font-family="Space Grotesk, sans-serif" font-size="76" font-weight="700" fill="#0d1d4d" letter-spacing="-1.2">[Your strong</text>
|
|
12
|
+
<text x="100" y="1010" font-family="Space Grotesk, sans-serif" font-size="76" font-weight="700" fill="#0d1d4d" letter-spacing="-1.2">headline goes</text>
|
|
13
|
+
<text x="100" y="1100" font-family="Space Grotesk, sans-serif" font-size="76" font-weight="700" fill="#0d1d4d" letter-spacing="-1.2">here, 3 lines.]</text>
|
|
14
|
+
<text x="100" y="1180" font-family="Inter, sans-serif" font-size="30" font-weight="400" fill="#0d1d4d" fill-opacity="0.65">[Optional supporting line / framing question.]</text>
|
|
15
|
+
<text x="980" y="1310" text-anchor="end" font-family="Inter, sans-serif" font-size="22" font-weight="500" fill="#0d1d4d" fill-opacity="0.55">Path58 · path58.com</text>
|
|
16
|
+
</svg>
|
|
Binary file
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1080 1350" width="1080" height="1350" role="img" aria-label="Path58 carousel final-CTA template — verb-only call-to-action slide">
|
|
2
|
+
<title>Path58 carousel final-CTA slide template</title>
|
|
3
|
+
<desc>1080x1350 portrait. Cream background with 8px lime accent strip on left edge. PATH58 eyebrow top-left. Section number top-right (05/05). Large verb-only CTA slot per PATH58_VOICE_TONE v1.4.0 § 5 verb-only pattern. URL/contact slot below. Brand byline bottom. NO banned-vocab.</desc>
|
|
4
|
+
<rect width="1080" height="1350" fill="#f6f4ee"/>
|
|
5
|
+
<rect x="0" y="0" width="8" height="1350" fill="#9ab64a"/>
|
|
6
|
+
<text x="100" y="160" font-family="Inter, sans-serif" font-size="24" font-weight="500" fill="#0d1d4d" fill-opacity="0.55" letter-spacing="3">PATH58</text>
|
|
7
|
+
<text x="980" y="160" text-anchor="end" font-family="Inter, sans-serif" font-size="24" font-weight="500" fill="#0d1d4d" fill-opacity="0.45" letter-spacing="2">05 / 05</text>
|
|
8
|
+
<text x="100" y="540" font-family="Space Grotesk, sans-serif" font-size="96" font-weight="700" fill="#0d1d4d" letter-spacing="-1.6">[Verb-led CTA —</text>
|
|
9
|
+
<text x="100" y="660" font-family="Space Grotesk, sans-serif" font-size="96" font-weight="700" fill="#0d1d4d" letter-spacing="-1.6">e.g., Visit, Book,</text>
|
|
10
|
+
<text x="100" y="780" font-family="Space Grotesk, sans-serif" font-size="96" font-weight="700" fill="#0d1d4d" letter-spacing="-1.6">Subscribe, Read.]</text>
|
|
11
|
+
<text x="100" y="920" font-family="Inter, sans-serif" font-size="36" font-weight="500" fill="#0d1d4d" fill-opacity="0.75">[Destination URL or contact — e.g., path58.com/services]</text>
|
|
12
|
+
<text x="100" y="990" font-family="Inter, sans-serif" font-size="28" font-weight="400" fill="#0d1d4d" fill-opacity="0.55">[Optional 1-line context — what they get when they click.]</text>
|
|
13
|
+
<g transform="translate(100, 1200)">
|
|
14
|
+
<text x="0" y="22" font-family="Inter, sans-serif" font-size="28" font-weight="500" fill="#0d1d4d" fill-opacity="0.55">Path58 {</text>
|
|
15
|
+
<svg x="110" y="0" width="28" height="28" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg"><ellipse fill="#F4900C" cx="33.5" cy="14.5" rx="2.5" ry="3.5"/><ellipse fill="#F4900C" cx="2.5" cy="14.5" rx="2.5" ry="3.5"/><path fill="#FFAC33" d="M34 19c0 .553-.447 1-1 1h-3c-.553 0-1-.447-1-1v-9c0-.552.447-1 1-1h3c.553 0 1 .448 1 1v9zM7 19c0 .553-.448 1-1 1H3c-.552 0-1-.447-1-1v-9c0-.552.448-1 1-1h3c.552 0 1 .448 1 1v9z"/><path fill="#FFCC4D" d="M28 5c0 2.761-4.478 4-10 4C12.477 9 8 7.761 8 5s4.477-5 10-5c5.522 0 10 2.239 10 5z"/><path fill="#55ACEE" d="M30 6H6c-1.104 0-2 .896-2 2v26h28V8c0-1.104-.896-2-2-2z"/><circle fill="#FFF" cx="24.5" cy="14.5" r="4.5"/><circle fill="#DD2E44" cx="24.5" cy="14.5" r="2.721"/><circle fill="#FFF" cx="11.5" cy="14.5" r="4.5"/><circle fill="#DD2E44" cx="11.5" cy="14.5" r="2.721"/></svg>
|
|
16
|
+
<svg x="142" y="0" width="28" height="28" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg"><path fill="#78B159" d="M35.885 11.833c0-5.45-4.418-9.868-9.867-9.868-3.308 0-6.227 1.633-8.018 4.129-1.791-2.496-4.71-4.129-8.017-4.129-5.45 0-9.868 4.417-9.868 9.868 0 .772.098 1.52.266 2.241C1.751 22.587 11.216 31.568 18 34.034c6.783-2.466 16.249-11.447 17.617-19.959.17-.721.268-1.469.268-2.242z"/></svg>
|
|
17
|
+
<svg x="174" y="0" width="28" height="28" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg"><ellipse fill="#F4900C" cx="33.5" cy="14.5" rx="2.5" ry="3.5"/><ellipse fill="#F4900C" cx="2.5" cy="14.5" rx="2.5" ry="3.5"/><path fill="#FFAC33" d="M34 19c0 .553-.447 1-1 1h-3c-.553 0-1-.447-1-1v-9c0-.552.447-1 1-1h3c.553 0 1 .448 1 1v9zM7 19c0 .553-.448 1-1 1H3c-.552 0-1-.447-1-1v-9c0-.552.448-1 1-1h3c.552 0 1 .448 1 1v9z"/><path fill="#FFCC4D" d="M28 5c0 2.761-4.478 4-10 4C12.477 9 8 7.761 8 5s4.477-5 10-5c5.522 0 10 2.239 10 5z"/><path fill="#55ACEE" d="M30 6H6c-1.104 0-2 .896-2 2v26h28V8c0-1.104-.896-2-2-2z"/><circle fill="#FFF" cx="24.5" cy="14.5" r="4.5"/><circle fill="#DD2E44" cx="24.5" cy="14.5" r="2.721"/><circle fill="#FFF" cx="11.5" cy="14.5" r="4.5"/><circle fill="#DD2E44" cx="11.5" cy="14.5" r="2.721"/></svg>
|
|
18
|
+
<text x="208" y="22" font-family="Inter, sans-serif" font-size="28" font-weight="500" fill="#0d1d4d" fill-opacity="0.55">} · path58.com</text>
|
|
19
|
+
</g>
|
|
20
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1080 1350" width="1080" height="1350" role="img" aria-label="Path58 carousel inner-chart-bearing template — data/chart slide with placeholder chart zone">
|
|
2
|
+
<title>Path58 carousel inner-chart-bearing slide template</title>
|
|
3
|
+
<desc>1080x1350 portrait. Cream background. PATH58 eyebrow top-left. Section number top-right. Title slot. Centered chart zone (navy outlined rect labeled "CHART ZONE — paste chart image"). Annotation slots below. Brand byline bottom.</desc>
|
|
4
|
+
<rect width="1080" height="1350" fill="#f6f4ee"/>
|
|
5
|
+
<text x="100" y="160" font-family="Inter, sans-serif" font-size="24" font-weight="500" fill="#0d1d4d" fill-opacity="0.55" letter-spacing="3">PATH58</text>
|
|
6
|
+
<text x="980" y="160" text-anchor="end" font-family="Inter, sans-serif" font-size="24" font-weight="500" fill="#0d1d4d" fill-opacity="0.45" letter-spacing="2">03 / 05</text>
|
|
7
|
+
<text x="100" y="280" font-family="Space Grotesk, sans-serif" font-size="56" font-weight="700" fill="#0d1d4d" letter-spacing="-0.8">[Chart title — what the data shows]</text>
|
|
8
|
+
<rect x="100" y="380" width="880" height="540" fill="none" stroke="#0d1d4d" stroke-width="2" stroke-dasharray="8 8" stroke-opacity="0.35"/>
|
|
9
|
+
<text x="540" y="630" text-anchor="middle" font-family="Inter, sans-serif" font-size="26" font-weight="500" fill="#0d1d4d" fill-opacity="0.55" letter-spacing="2">[ CHART ZONE — 880 × 540 ]</text>
|
|
10
|
+
<text x="540" y="680" text-anchor="middle" font-family="Inter, sans-serif" font-size="20" font-weight="400" fill="#0d1d4d" fill-opacity="0.45">Paste chart image, data viz, or diagram here</text>
|
|
11
|
+
<text x="100" y="1000" font-family="Inter, sans-serif" font-size="28" font-weight="500" fill="#0d1d4d">[Key takeaway from chart — 1-2 lines.]</text>
|
|
12
|
+
<text x="100" y="1080" font-family="Inter, sans-serif" font-size="22" font-weight="400" fill="#0d1d4d" fill-opacity="0.65">[Source: per number-hygiene rule, cite + plain-language meaning + basis.]</text>
|
|
13
|
+
<text x="980" y="1280" text-anchor="end" font-family="Inter, sans-serif" font-size="22" font-weight="500" fill="#0d1d4d" fill-opacity="0.55">Path58 · path58.com</text>
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1080 1350" width="1080" height="1350" role="img" aria-label="Path58 carousel inner-quote-callout template — pull-quote slide">
|
|
2
|
+
<title>Path58 carousel inner-quote-callout slide template</title>
|
|
3
|
+
<desc>1080x1350 portrait. Cream background with 8px lime accent strip on left edge. PATH58 eyebrow top-left. Section number top-right. Large pull-quote centered (reuses quote-card v1 typography pattern). Attribution slot below. Brand byline bottom.</desc>
|
|
4
|
+
<rect width="1080" height="1350" fill="#f6f4ee"/>
|
|
5
|
+
<rect x="0" y="0" width="8" height="1350" fill="#9ab64a"/>
|
|
6
|
+
<text x="100" y="160" font-family="Inter, sans-serif" font-size="24" font-weight="500" fill="#0d1d4d" fill-opacity="0.55" letter-spacing="3">PATH58</text>
|
|
7
|
+
<text x="980" y="160" text-anchor="end" font-family="Inter, sans-serif" font-size="24" font-weight="500" fill="#0d1d4d" fill-opacity="0.45" letter-spacing="2">04 / 05</text>
|
|
8
|
+
<text x="540" y="580" text-anchor="middle" font-family="Space Grotesk, sans-serif" font-size="76" font-weight="700" fill="#0d1d4d" letter-spacing="-1.2">[Pull quote —</text>
|
|
9
|
+
<text x="540" y="675" text-anchor="middle" font-family="Space Grotesk, sans-serif" font-size="76" font-weight="700" fill="#0d1d4d" letter-spacing="-1.2">poetic or</text>
|
|
10
|
+
<text x="540" y="770" text-anchor="middle" font-family="Space Grotesk, sans-serif" font-size="76" font-weight="700" fill="#0d1d4d" letter-spacing="-1.2">declarative,</text>
|
|
11
|
+
<text x="540" y="865" text-anchor="middle" font-family="Space Grotesk, sans-serif" font-size="76" font-weight="700" fill="#0d1d4d" letter-spacing="-1.2">3-5 lines.]</text>
|
|
12
|
+
<text x="540" y="1000" text-anchor="middle" font-family="Inter, sans-serif" font-size="28" font-weight="400" fill="#0d1d4d" fill-opacity="0.65">— [Attribution: source / role / context]</text>
|
|
13
|
+
<text x="980" y="1280" text-anchor="end" font-family="Inter, sans-serif" font-size="22" font-weight="500" fill="#0d1d4d" fill-opacity="0.55">Path58 · path58.com</text>
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1080 1350" width="1080" height="1350" role="img" aria-label="Path58 carousel inner-text-heavy template — long-form claim/argument slide">
|
|
2
|
+
<title>Path58 carousel inner-text-heavy slide template</title>
|
|
3
|
+
<desc>1080x1350 portrait. Cream background with 8px lime accent strip on left edge. PATH58 eyebrow top-left. Section number top-right (00/05). Large headline slot. Body-text slots beneath for paragraph-style argument. Brand byline bottom. PATH58_VOICE_TONE v1.4.0 declarative register for body copy.</desc>
|
|
4
|
+
<rect width="1080" height="1350" fill="#f6f4ee"/>
|
|
5
|
+
<rect x="0" y="0" width="8" height="1350" fill="#9ab64a"/>
|
|
6
|
+
<text x="100" y="160" font-family="Inter, sans-serif" font-size="24" font-weight="500" fill="#0d1d4d" fill-opacity="0.55" letter-spacing="3">PATH58</text>
|
|
7
|
+
<text x="980" y="160" text-anchor="end" font-family="Inter, sans-serif" font-size="24" font-weight="500" fill="#0d1d4d" fill-opacity="0.45" letter-spacing="2">02 / 05</text>
|
|
8
|
+
<text x="100" y="380" font-family="Space Grotesk, sans-serif" font-size="68" font-weight="700" fill="#0d1d4d" letter-spacing="-1">[Slide headline,</text>
|
|
9
|
+
<text x="100" y="460" font-family="Space Grotesk, sans-serif" font-size="68" font-weight="700" fill="#0d1d4d" letter-spacing="-1">2 lines max.]</text>
|
|
10
|
+
<text x="100" y="620" font-family="Inter, sans-serif" font-size="34" font-weight="400" fill="#0d1d4d" line-height="1.5">[Body paragraph 1 — the claim or argument.</text>
|
|
11
|
+
<text x="100" y="675" font-family="Inter, sans-serif" font-size="34" font-weight="400" fill="#0d1d4d">PATH58 v1.4.0 declarative register: analytical</text>
|
|
12
|
+
<text x="100" y="730" font-family="Inter, sans-serif" font-size="34" font-weight="400" fill="#0d1d4d">clarity + defensibility.]</text>
|
|
13
|
+
<text x="100" y="870" font-family="Inter, sans-serif" font-size="34" font-weight="400" fill="#0d1d4d">[Body paragraph 2 — the supporting evidence,</text>
|
|
14
|
+
<text x="100" y="925" font-family="Inter, sans-serif" font-size="34" font-weight="400" fill="#0d1d4d">data point, or example.]</text>
|
|
15
|
+
<text x="100" y="1090" font-family="Inter, sans-serif" font-size="34" font-weight="500" fill="#0d1d4d">[Pull-quote or key takeaway — bold, single line.]</text>
|
|
16
|
+
<text x="980" y="1280" text-anchor="end" font-family="Inter, sans-serif" font-size="22" font-weight="500" fill="#0d1d4d" fill-opacity="0.55">Path58 · path58.com</text>
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# LinkedIn ALT text — Path58 quote cards
|
|
2
|
+
|
|
3
|
+
Copy-paste the line below into LinkedIn's ALT field when uploading the corresponding `quote-card-*.png` to a LinkedIn post under the Path58 company page.
|
|
4
|
+
|
|
5
|
+
## v1 — quote-leads + lime accent strip
|
|
6
|
+
|
|
7
|
+
> "Where revenue orgs become AI-native." — Path58 quote card. Cream background with 8px lime accent strip on left edge. Large navy Space Grotesk quote spans the middle of the card. "PATH58" eyebrow top-left. Attribution "Path58 {🤖💚🤖} · path58.com" bottom-left in small navy at 55% opacity. Cream/navy/lime brand palette per visual-profile-path58 v1.0.0.
|
|
8
|
+
|
|
9
|
+
## v2 — attribution-leads + lime money-moment
|
|
10
|
+
|
|
11
|
+
> "Replace the rev-tech tax with multi-agent ops your team owns." — Path58 quote card with attribution-leads typography. Cream background. "PATH58" eyebrow centered top with thin lime accent rule below. Large navy quote across the middle with "rev-tech tax" highlighted via lime money-moment wash (one money-moment hero per Slot 5 g1 lime-sparsely rule). Attribution "Path58 {🤖💚🤖} · path58.com" bottom-center.
|
|
12
|
+
|
|
13
|
+
## v3 — hybrid + lime-free
|
|
14
|
+
|
|
15
|
+
> "The agentic revenue org isn't coming. · It's here." — Path58 quote card with hybrid centered composition. Cream background, lime-free pure cream + navy palette (most-restrained variant). "PATH58" eyebrow top-left. Large navy quote centered across the middle. A small navy bullet separator visually pauses between the setup beat ("isn't coming.") and the payoff beat ("It's here."). Attribution "Path58 {🤖💚🤖} · path58.com" bottom-right.
|
|
16
|
+
|
|
17
|
+
## Notes for content authors
|
|
18
|
+
|
|
19
|
+
- Each variant ships at 1080×1080 PNG (LinkedIn-optimal square in-feed image).
|
|
20
|
+
- Quote text in the ALT MUST match the rendered quote verbatim — accessibility parity per WCAG 2.2 AA (the quote IS the content; alt-text must preserve it for screen-reader users).
|
|
21
|
+
- Catchphrase mark `Path58 {🤖💚🤖}` per PATH58_VOICE_TONE v1.4.0 § 4 case 1 (bylined thought-leadership inheritance). Variant attribution is consistent across all 3 cards.
|
|
22
|
+
- Voice canon: PATH58 v1.4.0 § 1.1 poetic register applied (tagline-class surface); no "substrate" RED-jargon (operator-retired 2026-06-28); "AI-native" + "agentic" + "operating layer" + "Path58-OS" canonical capitalization respected.
|
|
23
|
+
- These are typography-only cards (no AI imagery) — no AC7 disclosure requirement. Pattern-watch counter (DSGN-2.15 escalation threshold) HOLDS at 2 of 3 — quote cards do NOT trip the counter.
|
|
24
|
+
- Operator can rotate variants across posts to vary visual style without re-deriving design per post.
|