Modules Documentation
SEO / AEO requirements
Meta, structured data, hreflang per page.
Complete
Coverage articles are some of the highest-AEO-value pages on the platform — recap and pitch-result URLs target high-intent search queries ("RiseUp 2025 recap", "Numu demo day winners"). The details page emits NewsArticle (for recap/highlights), Article (for analysis/sponsor-spotlight), or BlogPosting JSON-LD depending on the kind, with full author, publisher, datePublished, image, articleSection, and mentions schema.
JSON-LD per kind
- recap → NewsArticle
- Maps to journalistic event reporting. Fields: headline, alternativeHeadline (=dek), datePublished, dateModified, articleBody (sanitised bodyHtml), author (Person), publisher (Organization=StartupHub), image, mentions (Person + Organization items from mentionedFounderIds/mentionedStartupIds), about (the parent Event).
- highlights → NewsArticle
- Same NewsArticle schema, with one additional ImageGallery node if there are 3+ inline figures.
- analysis → Article
- Maps to opinion / interpretive writing. Same field set as NewsArticle but @type=Article, which signals SERP that this isn’t hard news.
- pitch-result → NewsArticle + Event subEvent
- NewsArticle with an additional Event node for the pitch competition itself (subEvent of the parent Event), with offers (prizes) and competitor (Person/Organization) properties.
- sponsor-spotlight → BlogPosting
- Maps to clearly-labelled sponsored content. @type=BlogPosting (not NewsArticle, intentionally — sponsored content shouldn’t carry hard-news authority signals). Includes a sponsor property pointing to the Organization that funded the piece.
Per-page metadata
- metaTitle: "[Title] | StartupHub Coverage". Auto-truncated to ≤60 chars.
- metaDescription: dek (already ≤200 chars by editorial standard).
- Open Graph: og:type="article", og:title=title, og:description=dek, og:image=coverImageUrl (or generated SVG fallback), article:published_time=publishedAt, article:author=author.
- Twitter card: summary_large_image with same image asset as OG.
- Canonical URL: /:lang/coverage/:slug. hreflang alternates between en + ar variants.
