Social Media Playbook — Facebook / Instagram / LinkedIn
How to build on-brand posts for Sebastiaan Kamstra (Meridian Realty) using the brand kit. Follow the Brand Guidelines and Logo Usage rules on every design.
Platform image specs (2026)
| Platform / slot | Size (px) | Ratio | Notes |
|---|---|---|---|
| Facebook feed — square | 1080x1080 | 1:1 | default for single image |
| Facebook feed — portrait | 1080x1350 | 4:5 | best engagement for feed |
| Facebook link preview | 1200x630 | 1.91:1 | for shared URLs |
| Facebook profile | 170x170 display (upload 1080x1080) | 1:1 | |
| Instagram feed | 1080x1080 | 1:1 | |
| Instagram portrait | 1080x1350 | 4:5 | |
| Instagram Stories / Reels | 1080x1920 | 9:16 | |
| LinkedIn feed — link post | 1200x627 | 1.91:1 | |
| LinkedIn feed — square | 1200x1200 | 1:1 | |
| LinkedIn banner | 1584x396 | 4:1 | wide banner, photo as side element |
| LinkedIn profile photo | 400x400 min (upload 1200x1200) | 1:1 |
Design checklist (every post)
- Choose the logo variant by background:
colour-light(navy artwork) for LIGHT backgrounds,colour-dark(white artwork) for DARK/blue ones — the suffix names the background, not the text colour. See Logo Usage. - Logo NOT in top-left/top-right corner.
- PPRA stamp in a corner (opposite the logo if possible) — always.
- Palette: blue
#203462, yellow#F8A538, white. One accent colour max per design. - Fonts: Helvetica Neue LT Std — 95 Black headlines, 75 Bold subs, 55 Roman body (all three supplied and installed at
/opt/data/fonts/meridian/). Kindness Things only for small decorative accents. 45 Light (the PPRA-statement weight) and 46 Light Italic were supplied on 2026-10-26 and are in the bundle atcorp-identity/Fonts/but not yet installed on the host; the condensed weights and Addington CF are still not on file — substitute the nearest supplied weight and note it. - Photos from the approved set only (Headshots/ or Photos/).
- CTA at the end of the copy: call/WhatsApp 082 560 5347, or DM.
Post formats that work for Sebastiaan
| Format | Visual | Copy angle | Use |
|---|---|---|---|
| Listing reveal | property photo + logo + price badge | hook on the suburb, key features, open-home date | new mandate / listing |
| Market update | stat card on blue bg, yellow accent | "Menlo Park / Waterkloof — what sold this month" | authority building, monthly |
| Personal brand | bust photo (DSCF) + quote | market insight or client-first story | trust building, 2-3x/month |
| Testimonial | quote card, yellow accent | client words (with POPIA consent) | social proof |
| Open home | property photo + date/time card | invite, RSVP line | viewing week |
| Community | suburb photo + flag | local news/event (Menlo Park / Waterkloof) | local relevance |
| Tip / checklist | numbered card (PDF-style) | one useful tip | engagement |
Copy structure (English for now)
- Hook (first line, stops the scroll) — suburb name + what makes it special.
- Body — 2-4 short sentences, plain language, no jargon.
- CTA — one clear next step (call, WhatsApp, DM).
- Hashtags (FB/IG): 3-5, e.g. #MenloPark #Waterkloof #PretoriaEstateAgent #MeridianRealty.
- Compliance: PPRA on the image; no client names/photos without consent; no unsubstantiated claims ("best price" etc.).
Post templates
See post-templates.md for copy-paste skeletons in English and Afrikaans.
Concept banner (no-text brand frame)
Concept for a reusable Facebook post banner for property-news posts: a fixed brand frame with a flexible image well, so any post picture can be dropped in while the Meridian + Sebastiaan identity stays constant.
Location: inside this bundle — assets/generated/banners/ (concepts + demos). Generator script: scripts/build_banner_concept.py.
Layout: light image well at top (post picture goes here), blue brand band at bottom with yellow accent line, light Meridian logo centred, PPRA stamp in the bottom-left corner, Sebastiaan's bust photo as a circular yellow-ringed badge overlapping the band edge on the right (face = personal brand, no text needed). No text on the banner by design — it scales across sizes.
Catchy images for the well (image model via LiteLLM)
The banner well takes a simple picture per post (property, suburb, stat card). AI-generated "catchy" imagery goes through the local LiteLLM proxy (http://litellm:4000, team key = config.yaml → model.api_key).
Reusable generator (brand-safe prompt defaults, ratios 4:5 / 1:1 / 16:9 / 9:16) — writes into this bundle's assets/generated/ai-images/:
/opt/hermes/.venv/bin/python /opt/data/knowledge/Client-C01/okf-kamstra-handbook/C.Purpose/c2.Marketing/brandkit/scripts/generate_ai_image.py "<prompt>" <ratio> <output.png>
Model alias caveat: the old gemini-3.1-flash-image alias was retired (2026-10-15) and Nostics_Image has refused with "LLM Provider NOT provided". Check GET http://litellm:4000/v1/models and pass the working alias via the BRAND_IMAGE_MODEL environment variable. If no image alias works, reuse an existing image from assets/generated/ai-images/ — do not stall the post on image generation.
Example prompts: Menlo Park / Waterkloof upmarket suburb scenes, bright natural light, navy #203462 accents + amber #F8A538 highlights, white dominant, NO text/logos/watermarks/people, negative space for a headline area.
Keep AI images generic (no real properties, no client identity) — use them for market-update/news posts; real listings use the actual property photo in the well.
- Draft + visual → two-stage approval with Sebastiaan before any publish (never auto-publish).
- Facebook: Meridian page via the Facebook publishing skill (headless Chromium profile).
- Log every published post in the follow-up tracker for the content calendar.