Skip to content

Commit 0beb53b

Browse files
committed
feat: SEO — structured data, sitemap, keywords, canonical, OG/Twitter meta
1 parent fb5395f commit 0beb53b

3 files changed

Lines changed: 62 additions & 9 deletions

File tree

nuxt.config.ts

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,55 @@ export default defineNuxtConfig({
88
baseURL: '/GremMigrate/',
99
head: {
1010
htmlAttrs: { lang: 'en' },
11-
title: 'GremMigrate — Joystick Gremlin Profile Converter',
11+
title: 'GremMigrate — Joystick Gremlin R13 to R14 Profile Converter',
1212
link: [
1313
{ rel: 'icon', type: 'image/x-icon', href: '/GremMigrate/favicon.ico' },
14+
{ rel: 'canonical', href: 'https://drrakendu78.github.io/GremMigrate/' },
15+
{ rel: 'apple-touch-icon', href: '/GremMigrate/og-image.png' },
1416
],
1517
meta: [
16-
{ name: 'description', content: 'Convert Joystick Gremlin R13 profiles to R14 format. Free, fast, fully client-side.' },
17-
{ 'http-equiv': 'Content-Security-Policy', content: "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https://flagcdn.com; font-src 'self'; connect-src 'none'; frame-ancestors 'none'" },
18-
{ 'http-equiv': 'X-Content-Type-Options', content: 'nosniff' },
19-
{ property: 'og:title', content: 'GremMigrate — Joystick Gremlin Profile Converter' },
20-
{ property: 'og:description', content: 'Convert Joystick Gremlin R13 profiles to R14 format. Free, fast, fully client-side.' },
18+
// SEO
19+
{ name: 'description', content: 'Convert Joystick Gremlin R13 profiles to R14 format instantly. Free, open-source, fully client-side. Supports remaps, macros, response curves, virtual buttons, and more.' },
20+
{ name: 'keywords', content: 'joystick gremlin, profile converter, R13 to R14, joystick gremlin migration, flight sim, HOTAS, vJoy, joystick profile, gremlin converter' },
21+
{ name: 'author', content: 'Drrakendu78' },
22+
{ name: 'robots', content: 'index, follow' },
23+
{ name: 'theme-color', content: '#09090b' },
24+
// Open Graph
25+
{ property: 'og:title', content: 'GremMigrate — Joystick Gremlin R13 to R14 Profile Converter' },
26+
{ property: 'og:description', content: 'Convert Joystick Gremlin R13 profiles to R14 format instantly. Free, open-source, fully client-side.' },
2127
{ property: 'og:type', content: 'website' },
22-
{ property: 'og:image', content: '/GremMigrate/og-image.png' },
28+
{ property: 'og:url', content: 'https://drrakendu78.github.io/GremMigrate/' },
29+
{ property: 'og:image', content: 'https://drrakendu78.github.io/GremMigrate/og-image.png' },
30+
{ property: 'og:image:width', content: '1200' },
31+
{ property: 'og:image:height', content: '630' },
32+
{ property: 'og:site_name', content: 'GremMigrate' },
33+
{ property: 'og:locale', content: 'en_US' },
34+
// Twitter
2335
{ name: 'twitter:card', content: 'summary_large_image' },
36+
{ name: 'twitter:title', content: 'GremMigrate — Joystick Gremlin Profile Converter' },
37+
{ name: 'twitter:description', content: 'Convert R13 profiles to R14 format. Free, open-source, client-side.' },
38+
{ name: 'twitter:image', content: 'https://drrakendu78.github.io/GremMigrate/og-image.png' },
39+
// Security
40+
{ 'http-equiv': 'Content-Security-Policy', content: "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https://flagcdn.com; font-src 'self'; connect-src 'none'; frame-ancestors 'none'" },
41+
{ 'http-equiv': 'X-Content-Type-Options', content: 'nosniff' },
42+
],
43+
script: [
44+
// JSON-LD Structured Data
45+
{
46+
type: 'application/ld+json',
47+
innerHTML: JSON.stringify({
48+
'@context': 'https://schema.org',
49+
'@type': 'WebApplication',
50+
'name': 'GremMigrate',
51+
'url': 'https://drrakendu78.github.io/GremMigrate/',
52+
'description': 'Convert Joystick Gremlin R13 profiles to R14 format. Free, open-source, fully client-side.',
53+
'applicationCategory': 'UtilitiesApplication',
54+
'operatingSystem': 'Any',
55+
'offers': { '@type': 'Offer', 'price': '0', 'priceCurrency': 'USD' },
56+
'author': { '@type': 'Person', 'name': 'Drrakendu78', 'url': 'https://github.com/drrakendu78' },
57+
'license': 'https://opensource.org/licenses/MIT',
58+
}),
59+
},
2460
],
2561
},
2662
},

public/robots.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
User-Agent: *
2-
Disallow:
1+
User-agent: *
2+
Allow: /
3+
4+
Sitemap: https://drrakendu78.github.io/GremMigrate/sitemap.xml

public/sitemap.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3+
<url>
4+
<loc>https://drrakendu78.github.io/GremMigrate/</loc>
5+
<lastmod>2026-03-02</lastmod>
6+
<changefreq>monthly</changefreq>
7+
<priority>1.0</priority>
8+
</url>
9+
<url>
10+
<loc>https://drrakendu78.github.io/GremMigrate/privacy</loc>
11+
<lastmod>2026-03-02</lastmod>
12+
<changefreq>yearly</changefreq>
13+
<priority>0.3</priority>
14+
</url>
15+
</urlset>

0 commit comments

Comments
 (0)