Skip to content

Commit ab63978

Browse files
waleedlatif1waleed
authored andcommitted
fix(blog): rename building to blogs with redirect (#1604)
1 parent e697e50 commit ab63978

File tree

18 files changed

+35
-46
lines changed

18 files changed

+35
-46
lines changed

apps/sim/app/(landing)/building/layout.tsx renamed to apps/sim/app/(landing)/blog/layout.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import { Footer, Nav } from '@/app/(landing)/components'
22

3-
/**
4-
* Layout for the building/blog section with navigation and footer
5-
*/
6-
export default function BuildingLayout({ children }: { children: React.ReactNode }) {
3+
export default function BlogLayout({ children }: { children: React.ReactNode }) {
74
return (
85
<>
96
<Nav hideAuthButtons={false} variant='landing' />

apps/sim/app/(landing)/building/openai-vs-n8n-vs-sim/openai-n8n-sim.tsx renamed to apps/sim/app/(landing)/blog/openai-vs-n8n-vs-sim/openai-n8n-sim.tsx

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,17 @@ import Image from 'next/image'
22
import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'
33
import { soehne } from '@/app/fonts/soehne/soehne'
44

5-
/**
6-
* Blog post component comparing OpenAI AgentKit, n8n, and Sim workflow builders for building AI agents.
7-
* Layout inspired by Anthropic's engineering blog posts.
8-
* Includes structured data (JSON-LD) for enhanced SEO and LLM discoverability.
9-
*/
105
export default function OpenAiN8nSim() {
116
const baseUrl = 'https://sim.ai'
12-
const articleUrl = `${baseUrl}/building/openai-vs-n8n-vs-sim`
7+
const articleUrl = `${baseUrl}/blog/openai-vs-n8n-vs-sim`
138

149
const articleStructuredData = {
1510
'@context': 'https://schema.org',
1611
'@type': 'TechArticle',
1712
headline: 'OpenAI AgentKit vs n8n vs Sim: AI Agent Workflow Builder Comparison',
1813
description:
1914
'Compare OpenAI AgentKit, n8n, and Sim for building AI agent workflows. Explore key differences in capabilities, integrations, collaboration, and which platform best fits your production AI agent needs.',
20-
image: `${baseUrl}/building/openai-vs-n8n-vs-sim/workflow.png`,
15+
image: `${baseUrl}/blog/openai-vs-n8n-vs-sim/workflow.png`,
2116
datePublished: '2025-10-06T00:00:00.000Z',
2217
dateModified: '2025-10-06T00:00:00.000Z',
2318
author: {
@@ -80,8 +75,8 @@ export default function OpenAiN8nSim() {
8075
{
8176
'@type': 'ListItem',
8277
position: 2,
83-
name: 'Building',
84-
item: `${baseUrl}/building`,
78+
name: 'Blog',
79+
item: `${baseUrl}/blog`,
8580
},
8681
{
8782
'@type': 'ListItem',
@@ -120,7 +115,7 @@ export default function OpenAiN8nSim() {
120115
<div className='h-[180px] w-full flex-shrink-0 sm:h-[200px] md:h-auto md:w-[300px]'>
121116
<div className='relative h-full w-full overflow-hidden rounded-lg md:aspect-[5/4]'>
122117
<Image
123-
src='/building/openai-vs-n8n-vs-sim/workflow.png'
118+
src='/blog/openai-vs-n8n-vs-sim/workflow.png'
124119
alt='Sim AI agent workflow builder interface'
125120
width={300}
126121
height={240}
@@ -149,7 +144,7 @@ export default function OpenAiN8nSim() {
149144
>
150145
<Avatar className='size-6'>
151146
<AvatarImage
152-
src='/building/openai-vs-n8n-vs-sim/emir-karabeg.png'
147+
src='/blog/openai-vs-n8n-vs-sim/emir-karabeg.png'
153148
alt='Emir Karabeg'
154149
/>
155150
<AvatarFallback>EK</AvatarFallback>
@@ -195,7 +190,7 @@ export default function OpenAiN8nSim() {
195190
>
196191
<Avatar className='size-6'>
197192
<AvatarImage
198-
src='/building/openai-vs-n8n-vs-sim/emir-karabeg.png'
193+
src='/blog/openai-vs-n8n-vs-sim/emir-karabeg.png'
199194
alt='Emir Karabeg'
200195
/>
201196
<AvatarFallback>EK</AvatarFallback>
@@ -253,7 +248,7 @@ export default function OpenAiN8nSim() {
253248

254249
<figure className='my-8 overflow-hidden rounded-lg'>
255250
<Image
256-
src='/building/openai-vs-n8n-vs-sim/openai.png'
251+
src='/blog/openai-vs-n8n-vs-sim/openai.png'
257252
alt='OpenAI AgentKit workflow interface'
258253
width={800}
259254
height={450}
@@ -288,7 +283,7 @@ export default function OpenAiN8nSim() {
288283

289284
<figure className='my-8 overflow-hidden rounded-lg'>
290285
<Image
291-
src='/building/openai-vs-n8n-vs-sim/widgets.png'
286+
src='/blog/openai-vs-n8n-vs-sim/widgets.png'
292287
alt='OpenAI AgentKit custom widgets interface'
293288
width={800}
294289
height={450}
@@ -371,7 +366,7 @@ export default function OpenAiN8nSim() {
371366

372367
<figure className='my-8 overflow-hidden rounded-lg'>
373368
<Image
374-
src='/building/openai-vs-n8n-vs-sim/n8n.png'
369+
src='/blog/openai-vs-n8n-vs-sim/n8n.png'
375370
alt='n8n workflow automation interface'
376371
width={800}
377372
height={450}
@@ -489,7 +484,7 @@ export default function OpenAiN8nSim() {
489484

490485
<figure className='my-8 overflow-hidden rounded-lg'>
491486
<Image
492-
src='/building/openai-vs-n8n-vs-sim/sim.png'
487+
src='/blog/openai-vs-n8n-vs-sim/sim.png'
493488
alt='Sim visual workflow builder with AI agent blocks'
494489
width={800}
495490
height={450}
@@ -515,7 +510,7 @@ export default function OpenAiN8nSim() {
515510

516511
<figure className='my-8 overflow-hidden rounded-lg'>
517512
<Image
518-
src='/building/openai-vs-n8n-vs-sim/copilot.png'
513+
src='/blog/openai-vs-n8n-vs-sim/copilot.png'
519514
alt='Sim AI Copilot assisting with workflow development'
520515
width={800}
521516
height={450}
@@ -540,7 +535,7 @@ export default function OpenAiN8nSim() {
540535

541536
<figure className='my-8 overflow-hidden rounded-lg'>
542537
<Image
543-
src='/building/openai-vs-n8n-vs-sim/templates.png'
538+
src='/blog/openai-vs-n8n-vs-sim/templates.png'
544539
alt='Sim workflow templates gallery'
545540
width={800}
546541
height={450}
@@ -621,7 +616,7 @@ export default function OpenAiN8nSim() {
621616

622617
<figure className='my-8 overflow-hidden rounded-lg'>
623618
<Image
624-
src='/building/openai-vs-n8n-vs-sim/logs.png'
619+
src='/blog/openai-vs-n8n-vs-sim/logs.png'
625620
alt='Sim execution logs and monitoring dashboard'
626621
width={800}
627622
height={450}

apps/sim/app/(landing)/building/openai-vs-n8n-vs-sim/page.tsx renamed to apps/sim/app/(landing)/blog/openai-vs-n8n-vs-sim/page.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type { Metadata } from 'next'
22
import OpenAiN8nSim from './openai-n8n-sim'
33

44
const baseUrl = 'https://sim.ai'
5-
const canonicalUrl = `${baseUrl}/building/openai-vs-n8n-vs-sim`
5+
const canonicalUrl = `${baseUrl}/blog/openai-vs-n8n-vs-sim`
66

77
export const metadata: Metadata = {
88
title: 'OpenAI AgentKit vs n8n vs Sim: AI Agent Workflow Builder Comparison | Sim',
@@ -106,7 +106,7 @@ export const metadata: Metadata = {
106106
],
107107
images: [
108108
{
109-
url: `${baseUrl}/building/openai-vs-n8n-vs-sim/workflow.png`,
109+
url: `${baseUrl}/blog/openai-vs-n8n-vs-sim/workflow.png`,
110110
width: 1200,
111111
height: 630,
112112
alt: 'Sim AI agent workflow builder interface comparison',
@@ -118,7 +118,7 @@ export const metadata: Metadata = {
118118
title: 'OpenAI AgentKit vs n8n vs Sim: AI Agent Workflow Builder Comparison',
119119
description:
120120
'Compare OpenAI AgentKit, n8n, and Sim for building AI agent workflows. Explore key differences in capabilities, integrations, and which platform fits your production needs.',
121-
images: ['/building/openai-vs-n8n-vs-sim/workflow.png'],
121+
images: ['/blog/openai-vs-n8n-vs-sim/workflow.png'],
122122
creator: '@karabegemir',
123123
site: '@simai',
124124
},
@@ -130,10 +130,6 @@ export const metadata: Metadata = {
130130
},
131131
}
132132

133-
/**
134-
* Blog post page comparing OpenAI AgentKit, n8n, and Sim workflow builders for AI agents.
135-
* Optimized for SEO with structured data, canonical URLs, and comprehensive metadata.
136-
*/
137133
export default function Page() {
138134
return <OpenAiN8nSim />
139135
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { redirect } from 'next/navigation'
2+
3+
export default function BlogPage() {
4+
redirect('/blog/openai-vs-n8n-vs-sim')
5+
}

apps/sim/app/(landing)/building/page.tsx

Lines changed: 0 additions & 8 deletions
This file was deleted.

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,10 +216,10 @@ export default function Footer({ fullWidth = false }: FooterProps) {
216216
Enterprise
217217
</Link>
218218
<Link
219-
href='/building'
219+
href='/blog'
220220
className='text-[14px] text-muted-foreground transition-colors hover:text-foreground'
221221
>
222-
Building
222+
Blog
223223
</Link>
224224
<Link
225225
href='/changelog'

apps/sim/app/sitemap.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,12 @@ export default function sitemap(): MetadataRoute.Sitemap {
4040
// Blog posts and content pages
4141
const blogPages = [
4242
{
43-
url: `${baseUrl}/building/openai-vs-n8n-vs-sim`,
44-
lastModified: new Date('2025-10-06'),
43+
url: `${baseUrl}/blog/openai-vs-n8n-vs-sim`,
44+
lastModified: new Date('2025-10-11'),
4545
changeFrequency: 'monthly' as const,
4646
priority: 0.9,
4747
},
4848
]
4949

50-
// You can add dynamic pages here by fetching from database
51-
// const dynamicPages = await fetchDynamicPages()
52-
5350
return [...staticPages, ...blogPages]
5451
}

apps/sim/app/theme-provider.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
2020
pathname.startsWith('/verify') ||
2121
pathname.startsWith('/changelog') ||
2222
pathname.startsWith('/chat') ||
23-
pathname.startsWith('/building')
23+
pathname.startsWith('/blog')
2424
? 'light'
2525
: undefined
2626

apps/sim/next.config.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,13 @@ const nextConfig: NextConfig = {
209209
async redirects() {
210210
const redirects = []
211211

212+
// Redirect /building to /blog (legacy URL support)
213+
redirects.push({
214+
source: '/building/:path*',
215+
destination: '/blog/:path*',
216+
permanent: true,
217+
})
218+
212219
// Only enable domain redirects for the hosted version
213220
if (isHosted) {
214221
redirects.push(

apps/sim/public/building/openai-vs-n8n-vs-sim/copilot.png renamed to apps/sim/public/blog/openai-vs-n8n-vs-sim/copilot.png

File renamed without changes.

0 commit comments

Comments
 (0)