From 4f6afecdf4cce9e733b484a0d8cc9d37460bc1cd Mon Sep 17 00:00:00 2001 From: Techit Thawiang Date: Tue, 7 Oct 2025 16:18:57 +0700 Subject: [PATCH] change seo for all pages --- app/pages/collections.vue | 18 +++++++++++------- app/pages/contact.vue | 18 +++++++++++------- app/pages/fonts.vue | 18 +++++++++++------- app/pages/index.vue | 22 +++++++++++++--------- app/pages/portal.vue | 18 +++++++++++------- app/pages/posts/[...slug].vue | 8 ++++---- app/pages/posts/index.vue | 18 +++++++++++------- app/pages/terminal.vue | 18 +++++++++++------- 8 files changed, 83 insertions(+), 55 deletions(-) diff --git a/app/pages/collections.vue b/app/pages/collections.vue index a505073..aa72092 100644 --- a/app/pages/collections.vue +++ b/app/pages/collections.vue @@ -21,13 +21,17 @@ const TITLE = "Collections" const DESC = "Techit's personal-public collections" -useHead({ +useSeoMeta({ title: TITLE, - meta: [ - { name: 'description', content: DESC }, - { property: 'og:title', content: TITLE }, - { property: 'og:description', content: DESC }, - { property: 'og:type', content: 'website' } - ] + description: DESC, + ogTitle: TITLE + ' / ' + config.public.siteName, + ogDescription: DESC, + ogImage: post.value?.coverImage || undefined, + ogSiteName: config.public.siteName, + twitterCard: 'summary_large_image', + twitterTitle: TITLE + ' / ' + config.public.siteName, + twitterDescription: DESC, + twitterImage: post.value?.coverImage || undefined, + twitterSite: '@' + config.public.twitterUsername }) \ No newline at end of file diff --git a/app/pages/contact.vue b/app/pages/contact.vue index 4368b74..d240c60 100644 --- a/app/pages/contact.vue +++ b/app/pages/contact.vue @@ -49,13 +49,17 @@ const TITLE = "Contact" const DESC = "How to contact Techit" -useHead({ +useSeoMeta({ title: TITLE, - meta: [ - { name: 'description', content: DESC }, - { property: 'og:title', content: TITLE }, - { property: 'og:description', content: DESC }, - { property: 'og:type', content: 'website' } - ] + description: DESC, + ogTitle: TITLE + ' / ' + config.public.siteName, + ogDescription: DESC, + ogImage: post.value?.coverImage || undefined, + ogSiteName: config.public.siteName, + twitterCard: 'summary_large_image', + twitterTitle: TITLE + ' / ' + config.public.siteName, + twitterDescription: DESC, + twitterImage: post.value?.coverImage || undefined, + twitterSite: '@' + config.public.twitterUsername }) \ No newline at end of file diff --git a/app/pages/fonts.vue b/app/pages/fonts.vue index c722aaf..4a80f13 100644 --- a/app/pages/fonts.vue +++ b/app/pages/fonts.vue @@ -49,13 +49,17 @@ const fontUrl = config.public?.fontUrl || 'https://fonts.thawiang.com/'; const fontListFile = 'api/typefaces.json'; const { fonts, error, pending } = useFontLists(fontUrl, fontListFile); -useHead({ +useSeoMeta({ title: TITLE, - meta: [ - { name: 'description', content: DESC }, - { property: 'og:title', content: TITLE }, - { property: 'og:description', content: DESC }, - { property: 'og:type', content: 'website' } - ] + description: DESC, + ogTitle: TITLE + ' / ' + config.public.siteName, + ogDescription: DESC, + ogImage: post.value?.coverImage || undefined, + ogSiteName: config.public.siteName, + twitterCard: 'summary_large_image', + twitterTitle: TITLE + ' / ' + config.public.siteName, + twitterDescription: DESC, + twitterImage: post.value?.coverImage || undefined, + twitterSite: '@' + config.public.twitterUsername }) \ No newline at end of file diff --git a/app/pages/index.vue b/app/pages/index.vue index 576fbb9..e1df544 100644 --- a/app/pages/index.vue +++ b/app/pages/index.vue @@ -26,13 +26,13 @@

As I said above, I usually spend my free time learning more about software engineering. This includes server administration for dailitation.xyz. Over time, small and large projects have born and died.

Let's go take a look of my projects collection!

- +
@@ -59,13 +59,17 @@ const baseUrl = config.public.baseUrl const TITLE = "Home" const DESC = "Techit Thawiang is a 10th grader hobbyist developer, a math lover and a self-hoster who's exploring computer science." -useHead({ +useSeoMeta({ title: TITLE, - meta: [ - { name: 'description', content: DESC }, - { property: 'og:title', content: TITLE }, - { property: 'og:description', content: DESC }, - { property: 'og:type', content: 'website' } - ] + description: DESC, + ogTitle: TITLE + ' / ' + config.public.siteName, + ogDescription: DESC, + ogImage: post.value?.coverImage || undefined, + ogSiteName: config.public.siteName, + twitterCard: 'summary_large_image', + twitterTitle: TITLE + ' / ' + config.public.siteName, + twitterDescription: DESC, + twitterImage: post.value?.coverImage || undefined, + twitterSite: '@' + config.public.twitterUsername }) diff --git a/app/pages/portal.vue b/app/pages/portal.vue index c4768b5..ebff56e 100644 --- a/app/pages/portal.vue +++ b/app/pages/portal.vue @@ -35,13 +35,17 @@ const TITLE = "Portal" const DESC = "Choose your way wisely." const baseUrl = config.public.baseUrl -useHead({ +useSeoMeta({ title: TITLE, - meta: [ - { name: 'description', content: DESC }, - { property: 'og:title', content: TITLE }, - { property: 'og:description', content: DESC }, - { property: 'og:type', content: 'website' } - ] + description: DESC, + ogTitle: TITLE + ' / ' + config.public.siteName, + ogDescription: DESC, + ogImage: post.value?.coverImage || undefined, + ogSiteName: config.public.siteName, + twitterCard: 'summary_large_image', + twitterTitle: TITLE + ' / ' + config.public.siteName, + twitterDescription: DESC, + twitterImage: post.value?.coverImage || undefined, + twitterSite: '@' + config.public.twitterUsername }) diff --git a/app/pages/posts/[...slug].vue b/app/pages/posts/[...slug].vue index 21e6957..08504f5 100644 --- a/app/pages/posts/[...slug].vue +++ b/app/pages/posts/[...slug].vue @@ -37,16 +37,16 @@ useSeoMeta({ title: post.value?.title, description: post.value?.description || 'Content from our blog', keywords: post.value?.tags?.join(', ') || 'blog, article, post', - ogTitle: post.value?.title + ' / thawia.ng', + ogTitle: post.value?.title + ' / ' + config.public.siteName, ogDescription: post.value?.description, ogType: 'article', ogUrl: ogUrl, - ogImage: post.value?.coverImage ? baseUrl + '/portal/f/assets/' + post.value?.coverImage : undefined, + ogImage: post.value?.coverImage || undefined, ogSiteName: config.public.siteName, twitterCard: 'summary_large_image', - twitterTitle: post.value?.title + ' / thawia.ng', + twitterTitle: post.value?.title + ' / ' + config.public.siteName, twitterDescription: post.value?.description, - twitterImage: post.value?.coverImage ? `${baseUrl}/portal/f/assets/${post.value?.coverImage}` : undefined, + twitterImage: post.value?.coverImage || undefined, twitterSite: '@' + config.public.twitterUsername }) diff --git a/app/pages/posts/index.vue b/app/pages/posts/index.vue index 20a5420..9413623 100644 --- a/app/pages/posts/index.vue +++ b/app/pages/posts/index.vue @@ -17,13 +17,17 @@ const TITLE = "Posts" const DESC = "Techit's posts and writings." -useHead({ +useSeoMeta({ title: TITLE, - meta: [ - { name: 'description', content: DESC }, - { property: 'og:title', content: TITLE }, - { property: 'og:description', content: DESC }, - { property: 'og:type', content: 'website' } - ] + description: DESC, + ogTitle: TITLE + ' / ' + config.public.siteName, + ogDescription: DESC, + ogImage: post.value?.coverImage || undefined, + ogSiteName: config.public.siteName, + twitterCard: 'summary_large_image', + twitterTitle: TITLE + ' / ' + config.public.siteName, + twitterDescription: DESC, + twitterImage: post.value?.coverImage || undefined, + twitterSite: '@' + config.public.twitterUsername }) \ No newline at end of file diff --git a/app/pages/terminal.vue b/app/pages/terminal.vue index 78b5dde..e3fd25e 100644 --- a/app/pages/terminal.vue +++ b/app/pages/terminal.vue @@ -22,13 +22,17 @@ const TITLE = "Terminal" const DESC = "Terminal Emulator Simulator on thawia.ng by Techit Thawiang" const baseUrl = config.public.baseUrl -useHead({ +useSeoMeta({ title: TITLE, - meta: [ - { name: 'description', content: DESC }, - { property: 'og:title', content: TITLE }, - { property: 'og:description', content: DESC }, - { property: 'og:type', content: 'website' } - ] + description: DESC, + ogTitle: TITLE + ' / ' + config.public.siteName, + ogDescription: DESC, + ogImage: post.value?.coverImage || undefined, + ogSiteName: config.public.siteName, + twitterCard: 'summary_large_image', + twitterTitle: TITLE + ' / ' + config.public.siteName, + twitterDescription: DESC, + twitterImage: post.value?.coverImage || undefined, + twitterSite: '@' + config.public.twitterUsername }) \ No newline at end of file