2
0

feat(pages): serve social preview on custom domains
Some checks failed
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 4m1s
Build and Release / Unit Tests (push) Successful in 4m35s
Build and Release / Lint (push) Failing after 5m58s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been skipped
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been skipped
Build and Release / Build Binary (linux/arm64) (push) Has been skipped

Add /social-preview.png endpoint for custom domain/subdomain landing pages. Generates social card using same logic as repo social preview but accessible on custom domains. Adds .png extension to social preview URLs for better compatibility with social media crawlers. Updates og:image and twitter:image meta tags to use domain-relative URLs on custom domains. Includes ETag caching with 30min max-age.
This commit is contained in:
2026-03-16 02:46:41 -04:00
parent c24d329a6a
commit e8b6303971
4 changed files with 102 additions and 7 deletions

View File

@@ -61,7 +61,7 @@
{{end}}
{{end}}
<meta property="og:type" content="object">
<meta property="og:image" content="{{AppUrl}}{{.Repository.OwnerName}}/{{.Repository.Name}}/social-preview">
<meta property="og:image" content="{{AppUrl}}{{.Repository.OwnerName}}/{{.Repository.Name}}/social-preview.png">
{{if or (eq .Repository.SocialCardTheme "solid") (eq .Repository.SocialCardTheme "image")}}
<meta property="og:image:width" content="1080">
<meta property="og:image:height" content="1350">
@@ -71,7 +71,7 @@
{{end}}
<meta property="og:image:type" content="image/png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="{{AppUrl}}{{.Repository.OwnerName}}/{{.Repository.Name}}/social-preview">
<meta name="twitter:image" content="{{AppUrl}}{{.Repository.OwnerName}}/{{.Repository.Name}}/social-preview.png">
{{else}}
<meta property="og:title" content="{{AppName}}">
<meta property="og:type" content="website">

View File

@@ -22,8 +22,8 @@
<meta name="twitter:image" content="{{.BlogPost.FeaturedImage.DownloadURL}}">
<meta name="twitter:card" content="summary_large_image">
{{else if .Config.SEO.UseMediaKitOG}}
<meta property="og:image" content="{{AppUrl}}{{.Repository.OwnerName}}/{{.Repository.Name}}/social-preview">
<meta name="twitter:image" content="{{AppUrl}}{{.Repository.OwnerName}}/{{.Repository.Name}}/social-preview">
<meta property="og:image" content="{{.SocialPreviewURL}}">
<meta name="twitter:image" content="{{.SocialPreviewURL}}">
<meta name="twitter:card" content="summary_large_image">
{{else if .Config.SEO.OGImage}}
<meta property="og:image" content="{{.Config.SEO.OGImage}}">
@@ -40,8 +40,8 @@
<meta name="twitter:title" content="{{if .Config.SEO.Title}}{{.Config.SEO.Title}}{{else if .Config.Hero.Headline}}{{.Config.Hero.Headline}}{{else}}{{.Repository.Name}}{{end}}">
<meta name="twitter:description" content="{{if .Config.SEO.Description}}{{.Config.SEO.Description}}{{else if .Config.Hero.Subheadline}}{{.Config.Hero.Subheadline}}{{else}}{{.Repository.Description}}{{end}}">
{{if .Config.SEO.UseMediaKitOG}}
<meta property="og:image" content="{{AppUrl}}{{.Repository.OwnerName}}/{{.Repository.Name}}/social-preview">
<meta name="twitter:image" content="{{AppUrl}}{{.Repository.OwnerName}}/{{.Repository.Name}}/social-preview">
<meta property="og:image" content="{{.SocialPreviewURL}}">
<meta name="twitter:image" content="{{.SocialPreviewURL}}">
<meta name="twitter:card" content="summary_large_image">
{{else if .Config.SEO.OGImage}}
<meta property="og:image" content="{{.Config.SEO.OGImage}}">