Skip to content

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)

  1. 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.
  2. Logo NOT in top-left/top-right corner.
  3. PPRA stamp in a corner (opposite the logo if possible) — always.
  4. Palette: blue #203462, yellow #F8A538, white. One accent colour max per design.
  5. 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 at corp-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.
  6. Photos from the approved set only (Headshots/ or Photos/).
  7. 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)

  1. Hook (first line, stops the scroll) — suburb name + what makes it special.
  2. Body — 2-4 short sentences, plain language, no jargon.
  3. CTA — one clear next step (call, WhatsApp, DM).
  4. Hashtags (FB/IG): 3-5, e.g. #MenloPark #Waterkloof #PretoriaEstateAgent #MeridianRealty.
  5. 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.