Skip to content

Commit 7714663

Browse files
authored
improvement(landing): SEO copy and metadata rewrite across marketing pages (#5689)
* improvement(landing): SEO copy and metadata rewrite across marketing pages * improvement(landing): remove em dashes from marketing copy * fix(landing): name Sim in the knowledge base H1
1 parent 4d0973f commit 7714663

40 files changed

Lines changed: 239 additions & 158 deletions

File tree

apps/sim/app/(landing)/careers/components/job-board/job-groups.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { CareerPosting } from '@/lib/ashby/jobs'
44
import type { DepartmentGroup } from '@/app/(landing)/careers/components/job-board/utils'
55

66
/** Empty-state copy: distinguishes a truly empty board from a filtered-to-zero view. */
7-
const NO_OPEN_ROLES_MESSAGE = 'No open roles right now — check back soon.'
7+
const NO_OPEN_ROLES_MESSAGE = 'No open roles right now. Check back soon.'
88
const NO_MATCHING_ROLES_MESSAGE =
99
'No roles match these filters right now. Try clearing them, or check back soon.'
1010

apps/sim/app/(landing)/components/features/components/build-callout/components/build-chat-animation/build-chat-animation.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { ThinkingLoader } from '@/components/ui'
88

99
const PROMPT = 'Build a workflow to schedule and publish posts to my X account.'
1010
const REPLY =
11-
'On it — building a workflow with a schedule trigger, a drafting agent, and an X publish step.'
11+
'On it. Building a workflow with a schedule trigger, a drafting agent, and an X publish step.'
1212
const REPLY_WORDS = REPLY.split(' ')
1313

1414
const TYPE_START_MS = 900

apps/sim/app/(landing)/components/features/features.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export function Features() {
5454
<FeatureCard
5555
eyebrow='Context'
5656
title='Give Sim data it can reason over.'
57-
description='Sim stores your data semantically in tables, files, and knowledge bases your agents read from to ground every answer in your own data.'
57+
description='Sim stores your data in tables, files, and knowledge bases, the semantic memory agents read to ground every answer.'
5858
backdropSrc='/landing/feature-context-backdrop.jpg'
5959
mediaSide='right'
6060
>
@@ -65,7 +65,7 @@ export function Features() {
6565
<FeatureCard
6666
eyebrow='Build'
6767
title='Build agents that solve real problems.'
68-
description='Wire blocks, models, and integrations into agent logic on a visual builder, from one agent to many working in parallel.'
68+
description="Wire blocks, models, and integrations into agent logic on Sim's visual builder, from one agent to many working in parallel."
6969
href='/workflows'
7070
linkLabel='Explore the workflow builder'
7171
>
@@ -76,7 +76,7 @@ export function Features() {
7676
<FeatureCard
7777
eyebrow='Monitor'
7878
title='Watch every run, end to end.'
79-
description='Trace each run block by block, with full logs and the real cost, so you always know what ran and why.'
79+
description='Sim traces each run block by block, with full logs and the real cost.'
8080
backdropSrc='/landing/feature-monitor-backdrop.jpg'
8181
mediaSide='right'
8282
flushBottom

apps/sim/app/(landing)/components/footer/footer.tsx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,20 @@ interface FooterItem {
2727
external?: boolean
2828
}
2929

30+
/**
31+
* Platform modules link to their local landing pages (internal link equity
32+
* stays on the ranking pages); docs-only surfaces (MCP, API, Self Hosting)
33+
* and Status remain external.
34+
*/
3035
const PRODUCT_LINKS: FooterItem[] = [
3136
{ label: 'Enterprise', href: '/enterprise' },
32-
{ label: 'Mothership', href: 'https://docs.sim.ai/mothership', external: true },
33-
{ label: 'Workflows', href: 'https://docs.sim.ai', external: true },
34-
{ label: 'Knowledge Base', href: 'https://docs.sim.ai/knowledgebase', external: true },
35-
{ label: 'Tables', href: 'https://docs.sim.ai/tables', external: true },
37+
{ label: 'Chat', href: 'https://docs.sim.ai/mothership', external: true },
38+
{ label: 'Workflows', href: '/workflows' },
39+
{ label: 'Knowledge Base', href: '/knowledge' },
40+
{ label: 'Tables', href: '/tables' },
41+
{ label: 'Files', href: '/files' },
42+
{ label: 'Logs', href: '/logs' },
43+
{ label: 'Scheduled Tasks', href: '/scheduled-tasks' },
3644
{ label: 'MCP', href: 'https://docs.sim.ai/agents/mcp', external: true },
3745
{ label: 'API', href: 'https://docs.sim.ai/api-reference/getting-started', external: true },
3846
{ label: 'Self Hosting', href: 'https://docs.sim.ai/platform/self-hosting', external: true },

apps/sim/app/(landing)/components/hero/hero.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ export function Hero() {
8686
headingId='hero-heading'
8787
heading={
8888
<>
89-
Sim is your AI workspace <br />
90-
for building agentic workflows.
89+
Sim is the AI workspace <br />
90+
for building AI agents.
9191
</>
9292
}
93-
description='The open-source workspace where teams build, deploy, and manage AI agents.'
93+
description='Open source, with 1,000+ integrations and every major LLM. Build, deploy, and manage agents visually, conversationally, or with code.'
9494
/>
9595

9696
<div

apps/sim/app/(landing)/components/home-structured-data/home-structured-data.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ import { JsonLd } from '@/app/(landing)/components/json-ld'
1616
* - All claims must also appear as visible text on the page.
1717
* - Do not add `aggregateRating` without real, verifiable review data.
1818
*/
19+
/**
20+
* The home page's canonical description - the single string shared by the
21+
* `<meta name="description">`, OG/Twitter cards (`page.tsx`), and the JSON-LD
22+
* `WebPage.description` below, so the three surfaces never drift.
23+
*/
24+
export const HOME_PAGE_DESCRIPTION =
25+
'Sim is the open-source AI workspace where teams build, deploy, and manage AI agents across 1,000+ integrations and every major LLM, visually or with code.'
26+
1927
const HOME_JSON_LD = {
2028
'@context': 'https://schema.org',
2129
'@graph': [
@@ -27,8 +35,7 @@ const HOME_JSON_LD = {
2735
isPartOf: { '@id': `${SITE_URL}#website` },
2836
about: { '@id': `${SITE_URL}#software` },
2937
datePublished: '2024-01-01T00:00:00+00:00',
30-
description:
31-
'Sim is the open-source AI workspace where teams build, deploy, and manage AI agents. Connect 1,000+ integrations and every major LLM to create agents that automate real work.',
38+
description: HOME_PAGE_DESCRIPTION,
3239
breadcrumb: { '@id': `${SITE_URL}#breadcrumb` },
3340
inLanguage: 'en-US',
3441
speakable: {
@@ -93,7 +100,7 @@ const HOME_JSON_LD = {
93100
],
94101
featureList: [
95102
'AI workspace for teams',
96-
'Mothership: natural language agent creation',
103+
'Chat: build and manage agents in natural language',
97104
'Visual workflow builder',
98105
'1,000+ integrations',
99106
'LLM orchestration (OpenAI, Anthropic, Google, xAI, Mistral, Perplexity)',
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export { HomeStructuredData } from './home-structured-data'
1+
export { HOME_PAGE_DESCRIPTION, HomeStructuredData } from './home-structured-data'

apps/sim/app/(landing)/components/mothership/mothership.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const AREAS: Area[] = [
4545
size: 180,
4646
definition: (
4747
<>
48-
One catalog of 1,000+ integrations
48+
Sim&apos;s catalog of 1,000+ integrations
4949
<br />
5050
your agents act through.
5151
</>
@@ -55,7 +55,7 @@ const AREAS: Area[] = [
5555
word: 'Context',
5656
Mark: IsoIngestIllustration,
5757
size: 170,
58-
definition: 'Your data, stored semantically as the memory your agents reason over.',
58+
definition: 'Your data, stored semantically in Sim as the memory your agents reason over.',
5959
},
6060
{
6161
word: 'Build',
@@ -67,7 +67,7 @@ const AREAS: Area[] = [
6767
word: 'Monitor',
6868
Mark: IsoMonitorIllustration,
6969
size: 174,
70-
definition: 'See inside every run with live traces, logs, and real cost.',
70+
definition: 'See inside every run in Sim: live traces, logs, and real cost.',
7171
},
7272
]
7373

apps/sim/app/(landing)/components/product-demo/product-demo.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export function ProductDemo() {
4646
</h2>
4747
<p className='mt-3 text-pretty text-[15px] text-[var(--text-muted)] leading-[1.6]'>
4848
Tell Sim what you need in plain English and it wires blocks, models, and integrations
49-
into a working agent, ready to run.
49+
into a working agent.
5050
</p>
5151
</div>
5252
</div>

apps/sim/app/(landing)/components/solutions-page/components/solutions-structured-data/solutions-structured-data.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ interface SolutionsStructuredDataProps {
2222
}
2323

2424
export function SolutionsStructuredData({ config }: SolutionsStructuredDataProps) {
25-
const { module, path, hero, rows } = config
25+
const { module, path, seoDescription, offersFreeTier = true, hero, rows } = config
2626
const url = `${SITE_URL}${path}`
2727
const featureList = Array.from(
2828
new Set(rows.flatMap((row) => row.cards.map((card) => card.title)))
@@ -36,7 +36,7 @@ export function SolutionsStructuredData({ config }: SolutionsStructuredDataProps
3636
'@id': `${url}#webpage`,
3737
url,
3838
name: hero.heading,
39-
description: hero.summary,
39+
description: seoDescription ?? hero.summary,
4040
isPartOf: { '@id': `${SITE_URL}#website` },
4141
about: { '@id': `${url}#application` },
4242
breadcrumb: { '@id': `${url}#breadcrumb` },
@@ -59,7 +59,9 @@ export function SolutionsStructuredData({ config }: SolutionsStructuredDataProps
5959
operatingSystem: 'Web',
6060
url,
6161
featureList,
62-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
62+
...(offersFreeTier && {
63+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
64+
}),
6365
},
6466
],
6567
}

0 commit comments

Comments
 (0)