Skip to content

Commit ae1037a

Browse files
committed
Fix residual docs metadata from audit
1 parent c37a109 commit ae1037a

20 files changed

Lines changed: 268 additions & 274 deletions

File tree

web/app/[locale]/(landing)/docs/agent-integrations/oh-my-opencode/page.tsx

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,18 @@ import { useTranslations } from "next-intl";
22
import { getTranslations } from "next-intl/server";
33
import { CodeBlock } from "@/app/[locale]/components/code-block";
44
import { DocsHeading } from "@/app/[locale]/components/docs-heading";
5-
import { buildAlternates, openGraphDefaults, seoDescription, twitterSummary } from "@/i18n/seo";
5+
import { auditedDocsMetadata } from "../../audited-docs-metadata";
66
import { DocsSchema } from "../../docs-schema";
77

88
export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }) {
99
const { locale } = await params;
1010
const t = await getTranslations({ locale, namespace: "docs.ohMyOpenCode" });
11-
const alternates = buildAlternates(locale, "/docs/agent-integrations/oh-my-opencode");
12-
const title = t("metaTitle");
13-
const description = seoDescription(locale, t("metaDescription"));
14-
return {
15-
title,
16-
description,
17-
alternates,
18-
openGraph: {
19-
...openGraphDefaults(locale, "article"),
20-
title,
21-
description,
22-
url: alternates.canonical,
23-
},
24-
twitter: twitterSummary(locale, title, description),
25-
};
11+
return auditedDocsMetadata({
12+
locale,
13+
pageKey: "ohMyOpenCode",
14+
path: "/docs/agent-integrations/oh-my-opencode",
15+
messages: t,
16+
});
2617
}
2718

2819
export default function OhMyOpenCodePage() {

web/app/[locale]/(landing)/docs/api/page.tsx

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useTranslations } from "next-intl";
22
import { getTranslations } from "next-intl/server";
3-
import { buildAlternates, openGraphDefaults, seoDescription, twitterSummary } from "@/i18n/seo";
3+
import { auditedDocsMetadata } from "../audited-docs-metadata";
44
import { DocsSchema } from "../docs-schema";
55
import { CodeBlock } from "@/app/[locale]/components/code-block";
66
import { Callout } from "@/app/[locale]/components/callout";
@@ -9,21 +9,12 @@ import { DocsHeading } from "@/app/[locale]/components/docs-heading";
99
export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }) {
1010
const { locale } = await params;
1111
const t = await getTranslations({ locale, namespace: "docs.api" });
12-
const alternates = buildAlternates(locale, "/docs/api");
13-
const title = t("metaTitle");
14-
const description = seoDescription(locale, t("metaDescription"));
15-
return {
16-
title,
17-
description,
18-
alternates,
19-
openGraph: {
20-
...openGraphDefaults(locale, "article"),
21-
title,
22-
description,
23-
url: alternates.canonical,
24-
},
25-
twitter: twitterSummary(locale, title, description),
26-
};
12+
return auditedDocsMetadata({
13+
locale,
14+
pageKey: "api",
15+
path: "/docs/api",
16+
messages: t,
17+
});
2718
}
2819

2920
function Cmd({
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { getTranslations } from "next-intl/server";
2+
import type { Locale } from "@/i18n/routing";
3+
import {
4+
type AuditedDocsPageKey,
5+
docsPageSeoCopy,
6+
type SeoMessageLookup,
7+
} from "@/i18n/audited-seo";
8+
import {
9+
buildAlternates,
10+
openGraphDefaults,
11+
twitterSummary,
12+
} from "@/i18n/seo";
13+
14+
export async function auditedDocsMetadata({
15+
locale,
16+
pageKey,
17+
path,
18+
messages,
19+
availableLocales,
20+
}: {
21+
locale: string;
22+
pageKey: AuditedDocsPageKey;
23+
path: string;
24+
messages: SeoMessageLookup;
25+
availableLocales?: readonly Locale[];
26+
}) {
27+
const siteMeta = await getTranslations({ locale, namespace: "meta" });
28+
const alternates = buildAlternates(locale, path, availableLocales);
29+
const { title, description } = docsPageSeoCopy(
30+
locale,
31+
pageKey,
32+
messages,
33+
siteMeta,
34+
);
35+
return {
36+
title: { absolute: title },
37+
description,
38+
alternates,
39+
openGraph: {
40+
...openGraphDefaults(locale, "article"),
41+
title,
42+
description,
43+
url: alternates.canonical,
44+
},
45+
twitter: twitterSummary(locale, title, description),
46+
};
47+
}

web/app/[locale]/(landing)/docs/browser-automation/page.tsx

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,19 @@
11
import { useTranslations } from "next-intl";
22
import { getTranslations } from "next-intl/server";
3-
import { buildAlternates, openGraphDefaults, seoDescription, twitterSummary } from "@/i18n/seo";
3+
import { auditedDocsMetadata } from "../audited-docs-metadata";
44
import { DocsSchema } from "../docs-schema";
55
import { CodeBlock } from "@/app/[locale]/components/code-block";
66
import { DocsHeading } from "@/app/[locale]/components/docs-heading";
77

88
export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }) {
99
const { locale } = await params;
1010
const t = await getTranslations({ locale, namespace: "docs.browserAutomation" });
11-
const alternates = buildAlternates(locale, "/docs/browser-automation");
12-
const title = t("metaTitle");
13-
const description = seoDescription(locale, t("metaDescription"));
14-
return {
15-
title,
16-
description,
17-
alternates,
18-
openGraph: {
19-
...openGraphDefaults(locale, "article"),
20-
title,
21-
description,
22-
url: alternates.canonical,
23-
},
24-
twitter: twitterSummary(locale, title, description),
25-
};
11+
return auditedDocsMetadata({
12+
locale,
13+
pageKey: "browserAutomation",
14+
path: "/docs/browser-automation",
15+
messages: t,
16+
});
2617
}
2718

2819
export default function BrowserAutomationPage() {

web/app/[locale]/(landing)/docs/concepts/page.tsx

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useTranslations } from "next-intl";
22
import { getTranslations } from "next-intl/server";
3-
import { buildAlternates, openGraphDefaults, seoDescription, twitterSummary } from "@/i18n/seo";
3+
import { auditedDocsMetadata } from "../audited-docs-metadata";
44
import { DocsSchema } from "../docs-schema";
55
import { Link } from "@/i18n/navigation";
66
import { CodeBlock } from "@/app/[locale]/components/code-block";
@@ -9,21 +9,12 @@ import { DocsHeading } from "@/app/[locale]/components/docs-heading";
99
export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }) {
1010
const { locale } = await params;
1111
const t = await getTranslations({ locale, namespace: "docs.concepts" });
12-
const alternates = buildAlternates(locale, "/docs/concepts");
13-
const title = t("metaTitle");
14-
const description = seoDescription(locale, t("metaDescription"));
15-
return {
16-
title,
17-
description,
18-
alternates,
19-
openGraph: {
20-
...openGraphDefaults(locale, "article"),
21-
title,
22-
description,
23-
url: alternates.canonical,
24-
},
25-
twitter: twitterSummary(locale, title, description),
26-
};
12+
return auditedDocsMetadata({
13+
locale,
14+
pageKey: "concepts",
15+
path: "/docs/concepts",
16+
messages: t,
17+
});
2718
}
2819

2920
export default function ConceptsPage() {

web/app/[locale]/(landing)/docs/configuration/page.tsx

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useLocale, useTranslations } from "next-intl";
22
import { getTranslations } from "next-intl/server";
3-
import { buildAlternates, openGraphDefaults, seoDescription, twitterSummary } from "@/i18n/seo";
3+
import { auditedDocsMetadata } from "../audited-docs-metadata";
44
import { DocsSchema } from "../docs-schema";
55
import { Link } from "@/i18n/navigation";
66
import { CodeBlock } from "@/app/[locale]/components/code-block";
@@ -152,21 +152,12 @@ function buildSettingsFileExample(t: ConfigurationTranslation) {
152152
export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }) {
153153
const { locale } = await params;
154154
const t = await getTranslations({ locale, namespace: "docs.configuration" });
155-
const alternates = buildAlternates(locale, "/docs/configuration");
156-
const title = t("metaTitle");
157-
const description = seoDescription(locale, t("metaDescription"));
158-
return {
159-
title,
160-
description,
161-
alternates,
162-
openGraph: {
163-
...openGraphDefaults(locale, "article"),
164-
title,
165-
description,
166-
url: alternates.canonical,
167-
},
168-
twitter: twitterSummary(locale, title, description),
169-
};
155+
return auditedDocsMetadata({
156+
locale,
157+
pageKey: "configuration",
158+
path: "/docs/configuration",
159+
messages: t,
160+
});
170161
}
171162

172163
function shortcutToConfig(shortcut: { combos: string[][]; configValue?: string }) {

web/app/[locale]/(landing)/docs/custom-commands/page.tsx

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { ReactNode } from "react";
22
import { useTranslations } from "next-intl";
33
import { getTranslations } from "next-intl/server";
4-
import { buildAlternates, openGraphDefaults, seoDescription, twitterSummary } from "@/i18n/seo";
4+
import { auditedDocsMetadata } from "../audited-docs-metadata";
55
import { DocsSchema } from "../docs-schema";
66
import { CodeBlock } from "@/app/[locale]/components/code-block";
77
import { Callout } from "@/app/[locale]/components/callout";
@@ -42,21 +42,12 @@ function inlineCode(chunks: string, key: number) {
4242
export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }) {
4343
const { locale } = await params;
4444
const t = await getTranslations({ locale, namespace: "docs.customCommands" });
45-
const alternates = buildAlternates(locale, "/docs/custom-commands");
46-
const title = t("metaTitle");
47-
const description = seoDescription(locale, t("metaDescription"));
48-
return {
49-
title,
50-
description,
51-
alternates,
52-
openGraph: {
53-
...openGraphDefaults(locale, "article"),
54-
title,
55-
description,
56-
url: alternates.canonical,
57-
},
58-
twitter: twitterSummary(locale, title, description),
59-
};
45+
return auditedDocsMetadata({
46+
locale,
47+
pageKey: "customCommands",
48+
path: "/docs/custom-commands",
49+
messages: t,
50+
});
6051
}
6152

6253
export default function CustomCommandsPage() {

web/app/[locale]/(landing)/docs/dock/page.tsx

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useTranslations } from "next-intl";
22
import { getTranslations } from "next-intl/server";
3-
import { buildAlternates, openGraphDefaults, seoDescription, twitterSummary } from "@/i18n/seo";
3+
import { auditedDocsMetadata } from "../audited-docs-metadata";
44
import { DocsSchema } from "../docs-schema";
55
import { CodeBlock } from "@/app/[locale]/components/code-block";
66
import { Callout } from "@/app/[locale]/components/callout";
@@ -13,21 +13,12 @@ export async function generateMetadata({
1313
}) {
1414
const { locale } = await params;
1515
const t = await getTranslations({ locale, namespace: "docs.dock" });
16-
const alternates = buildAlternates(locale, "/docs/dock");
17-
const title = t("metaTitle");
18-
const description = seoDescription(locale, t("metaDescription"));
19-
return {
20-
title,
21-
description,
22-
alternates,
23-
openGraph: {
24-
...openGraphDefaults(locale, "article"),
25-
title,
26-
description,
27-
url: alternates.canonical,
28-
},
29-
twitter: twitterSummary(locale, title, description),
30-
};
16+
return auditedDocsMetadata({
17+
locale,
18+
pageKey: "dock",
19+
path: "/docs/dock",
20+
messages: t,
21+
});
3122
}
3223

3324
export default function DockPage() {

web/app/[locale]/(landing)/docs/getting-started/page.tsx

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useTranslations } from "next-intl";
22
import { getTranslations } from "next-intl/server";
3-
import { buildAlternates, openGraphDefaults, seoDescription, twitterSummary } from "@/i18n/seo";
3+
import { auditedDocsMetadata } from "../audited-docs-metadata";
44
import { DocsSchema } from "../docs-schema";
55
import { Link } from "@/i18n/navigation";
66
import { CodeBlock } from "@/app/[locale]/components/code-block";
@@ -11,21 +11,12 @@ import { DocsHeading } from "@/app/[locale]/components/docs-heading";
1111
export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }) {
1212
const { locale } = await params;
1313
const t = await getTranslations({ locale, namespace: "docs.gettingStarted" });
14-
const alternates = buildAlternates(locale, "/docs/getting-started");
15-
const title = t("metaTitle");
16-
const description = seoDescription(locale, t("metaDescription"));
17-
return {
18-
title,
19-
description,
20-
alternates,
21-
openGraph: {
22-
...openGraphDefaults(locale, "article"),
23-
title,
24-
description,
25-
url: alternates.canonical,
26-
},
27-
twitter: twitterSummary(locale, title, description),
28-
};
14+
return auditedDocsMetadata({
15+
locale,
16+
pageKey: "gettingStarted",
17+
path: "/docs/getting-started",
18+
messages: t,
19+
});
2920
}
3021

3122
export default function GettingStartedPage() {

web/app/[locale]/(landing)/docs/ios/page.tsx

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,20 @@
11
import { useTranslations } from "next-intl";
22
import { getTranslations } from "next-intl/server";
33
import { Link } from "@/i18n/navigation";
4-
import { buildAlternates, openGraphDefaults, seoDescription, twitterSummary } from "@/i18n/seo";
4+
import { auditedDocsMetadata } from "../audited-docs-metadata";
55
import { DocsSchema } from "../docs-schema";
66
import { Callout } from "@/app/[locale]/components/callout";
77
import { DocsHeading } from "@/app/[locale]/components/docs-heading";
88

99
export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }) {
1010
const { locale } = await params;
1111
const t = await getTranslations({ locale, namespace: "docs.ios" });
12-
const alternates = buildAlternates(locale, "/docs/ios");
13-
const title = t("metaTitle");
14-
const description = seoDescription(locale, t("metaDescription"));
15-
return {
16-
title,
17-
description,
18-
alternates,
19-
openGraph: {
20-
...openGraphDefaults(locale, "article"),
21-
title,
22-
description,
23-
url: alternates.canonical,
24-
},
25-
twitter: twitterSummary(locale, title, description),
26-
};
12+
return auditedDocsMetadata({
13+
locale,
14+
pageKey: "ios",
15+
path: "/docs/ios",
16+
messages: t,
17+
});
2718
}
2819

2920
const linkClass =

0 commit comments

Comments
 (0)