Generating a Story
Every country brief can be exported as a shareable story containing:- Country name and flag
- CII score (0β100 with color-coded ring)
- Threat counts (protests, conflicts, military activity)
- Theater posture (NORMAL, ELEVATED, CRITICAL)
- Active signals (chips showing signal types and counts)
- Top prediction markets (Polymarket contracts with probabilities)
Platform-Specific Formatting
World Monitor generates platform-appropriate formatting for each social network:- Twitter/X
- LinkedIn
- WhatsApp
- Telegram
- Reddit
- Facebook
Character limit: 280 charactersFormat:Features:
- Emoji-heavy for visual appeal
- Hashtags:
#OSINT #Geopolitics #Ukraine - Link to full brief with OG image
Dynamic Open Graph Images
When you share a story link, social platforms display a rich preview card with a dynamically generated image.How It Works
Story URL is generated
Format:
https://worldmonitor.app/story?c=<country>&t=briefExample: https://worldmonitor.app/story?c=UA&t=briefSocial crawler requests the page
When Twitter, Facebook, LinkedIn, etc. preview the link, they send a request with a bot user-agent:
Bot detection triggers OG image endpoint
World Monitor detects the bot user-agent (10+ known signatures) and serves an HTML page with
og:image meta tags pointing to:SVG card is generated on-the-fly
The
/api/og-story endpoint generates a 1200Γ630px SVG card containing:- Country name and flag
- CII score gauge arc (color-coded by severity)
- 0β100 score bar
- Signal indicator chips (threats, military, markets, convergence)
OG Image Example
Canvas-Based Image Export
You can also export a country brief as a PNG image for offline sharing:Canvas rendering begins
The entire brief is rendered to an HTML5
<canvas> element:- CII score ring (SVG β Canvas)
- Signal chips
- Top news headlines
- 7-day timeline chart
- QR code linking back to live dashboard
Use Cases
- Reports: Embed in PowerPoint or Keynote
- Social sharing: Post to Instagram, Twitter, etc.
- Archival: Save snapshots for historical comparison
- Print: High-resolution output suitable for printing
Deep Links
Every story generates a unique deep link that encodes:- Country code (
c=UA) - Story type (
t=brief)
- Ukraine brief:
?c=UA&t=brief - Iran analysis:
?c=IR&t=brief - Taiwan threat assessment:
?c=TW&t=brief
Social Platform Support
World Monitorβs OG image endpoint is tested against these social crawlers:β Full Support
- Twitter/X (Twitterbot)
- Facebook (facebookexternalhit)
- LinkedIn (LinkedInBot)
- Telegram (TelegramBot)
- Discord (Discordbot)
- Reddit (redditbot)
- WhatsApp (WhatsApp)
β οΈ Partial Support
- Instagram (requires Business accounts for link previews)
- Snapchat (no link preview API)
- TikTok (no OG tag support)
If a platform doesnβt support OG images, users will see a plain link. The deep link still works β they just wonβt see a preview card.
Troubleshooting
OG image not showing on Twitter/Facebook
OG image not showing on Twitter/Facebook
Social platforms cache OG images aggressively. If you update a brief:
- Twitter: Use the Card Validator to refresh
- Facebook: Use the Sharing Debugger to scrape again
- LinkedIn: Use the Post Inspector to refresh
?c=UA&t=brief&v=2PNG export is blank or incomplete
PNG export is blank or incomplete
This usually happens if the canvas renders before all data loads:
- Wait until the brief fully loads (all charts and signals visible)
- Try again β the export will include all content
- Check browser console for Canvas API errors
Share text is truncated on Twitter
Share text is truncated on Twitter
Deep link redirects to homepage
Deep link redirects to homepage
This means the country code is invalid or missing:
- Ensure the URL has
?c=<ISO-2>(e.g.,?c=UA) - Use 2-letter ISO country codes (not 3-letter or names)
- Check for typos:
?c=US(correct) vs?c=USA(incorrect)
Related Features
- Country Analysis β Understanding CII scores and signals
- World Brief β AI-generated global summaries
- Localization β Sharing briefs in multiple languages