share og image

This commit is contained in:
Jay V
2025-06-09 16:42:13 -05:00
parent fcb972de19
commit b97b15e0fe
3 changed files with 41 additions and 2 deletions

View File

@@ -64,6 +64,7 @@
"ai": "catalog:", "ai": "catalog:",
"astro": "5.7.13", "astro": "5.7.13",
"diff": "8.0.2", "diff": "8.0.2",
"js-base64": "3.7.7",
"luxon": "3.6.1", "luxon": "3.6.1",
"marked": "15.0.12", "marked": "15.0.12",
"rehype-autolink-headings": "7.1.0", "rehype-autolink-headings": "7.1.0",
@@ -938,6 +939,8 @@
"joycon": ["joycon@3.1.1", "", {}, "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw=="], "joycon": ["joycon@3.1.1", "", {}, "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw=="],
"js-base64": ["js-base64@3.7.7", "", {}, "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw=="],
"js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],
"js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="],

View File

@@ -20,6 +20,7 @@
"ai": "catalog:", "ai": "catalog:",
"astro": "5.7.13", "astro": "5.7.13",
"diff": "8.0.2", "diff": "8.0.2",
"js-base64": "3.7.7",
"luxon": "3.6.1", "luxon": "3.6.1",
"marked": "15.0.12", "marked": "15.0.12",
"rehype-autolink-headings": "7.1.0", "rehype-autolink-headings": "7.1.0",

View File

@@ -1,4 +1,5 @@
--- ---
import { Base64 } from "js-base64";
import config from "virtual:starlight/user-config"; import config from "virtual:starlight/user-config";
import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro';
@@ -12,15 +13,49 @@ const data = await res.json();
console.log(data.info) console.log(data.info)
--- const title = "Share";
const encodedTitle = encodeURIComponent(
Base64.encode(
// Convert to ASCII
encodeURIComponent(
// Truncate to fit S3's max key size
title.substring(0, 700)
)
)
)
const cardService = "https://social-cards.sst.dev";
const cost = "$0.12";
const model = "claude-sonnet-4-20250514,claude-opus-4-20250514";
const version = "v0.1.1";
// ?cost=$0.12&model=claude-sonnet-4-20250514,claude-opus-4-20250514&version=v0.1.1&id=43120e6b
const ogImageUrl = `${cardService}/opencode-share/${encodedTitle}.png?cost=${cost}&model=${model}&version=${version}&id=${id}`;
---
<StarlightPage <StarlightPage
hasSidebar={false} hasSidebar={false}
frontmatter={{ frontmatter={{
title: "Share", title: title,
pagefind: false, pagefind: false,
template: "splash", template: "splash",
tableOfContents: false, tableOfContents: false,
head: [
{
tag: "meta",
attrs: {
property: "og:image",
content: ogImageUrl,
},
},
{
tag: "meta",
attrs: {
name: "twitter:image",
content: ogImageUrl,
},
},
],
}} }}
> >
<Share api={apiUrl} data={data.messages} client:only="solid" /> <Share api={apiUrl} data={data.messages} client:only="solid" />