Repository navigation
SEO and Meta Tags
The Portfolio CMS uses global SEO defaults plus per-content overrides for Blog posts and Projects.
When the SEO fields are still untouched:
- Blog SEO Title follows the Blog Title.
- Blog SEO Description follows the Excerpt.
- Project SEO Title follows the Project Title.
- Project SEO Description follows the Short description.
Once an SEO field is edited manually, that field becomes independent and remains freely editable.
The Admin editor reports Good, Medium or Poor using a practical editorial heuristic.
It checks for useful signals such as:
- a descriptive SEO title;
- reasonable title length;
- a meaningful description;
- reasonable description length;
- a readable slug;
- a featured/share image.
This is an editorial helper, not a Google ranking score. Search engines can rewrite titles and snippets based on the query and page content.
Google does not define a strict character limit for <meta name="description">. Snippets are rendered according to available display width and may be generated from page content.
Use the CMS length guidance as a writing aid, not as a guaranteed SERP rule.
Open Graph metadata is commonly consumed by Facebook, LinkedIn, Discord and many other social/chat preview clients.
Typical markup:
<meta property="og:title" content="Page title">
<meta property="og:description" content="Page summary">
<meta property="og:image" content="https://example.com/share.jpg">
<meta property="og:url" content="https://example.com/page">The Homepage Admin can define a default social image and an Open Graph-specific image override.
Typical X metadata:
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Page title">
<meta name="twitter:description" content="Page summary">
<meta name="twitter:image" content="https://example.com/share-x.jpg">The Homepage Admin can define a dedicated X/Twitter image override.
The intended fallback chain is:
Open Graph image -> Default social image -> Global SEO image
X/Twitter image -> Default social image -> Global SEO image
This avoids forcing editors to maintain separate copies of the same image for every social platform.
Homepage Admin accepts structured custom tags instead of raw HTML.
name:application-name=Necrotix Lab
name:theme-color=#0a0a0f
name:author=Dr Necrotix
Equivalent output:
<meta name="application-name" content="Necrotix Lab">property:profile:username=drnecrotix
Equivalent output:
<meta property="profile:username" content="drnecrotix">- One tag per line.
- Use
name:key=valueorproperty:key=value. - Do not paste raw
<meta>HTML. - Avoid duplicating metadata already generated by the application.
- Unsupported metadata may simply be ignored by search engines or social clients.
- Never put passwords, API keys, tokens or private data in metadata.
Blog and Project detail pages should emit canonical URLs derived from the public site URL and content slug.
Make sure NEXT_PUBLIC_SITE_URL is the final production HTTPS URL. A wrong value can create incorrect canonical and social-share URLs.
Global SEO can provide robots/index/follow directives. Use noindex deliberately for content that should not appear in search results.
Do not use robots metadata as an access-control mechanism. Private content must still be protected by authentication/authorization.
Blog and Project editors include an unsaved Preview so authors can inspect layout/content before the final database write.
Preview does not publish the page and does not guarantee how Google or social platforms will render the final snippet/card. Use the SEO preview as an editorial approximation.
Google Search documentation:
- Title links: https://developers.google.com/search/docs/appearance/title-link
- Snippets/meta descriptions: https://developers.google.com/search/docs/appearance/snippet
- JavaScript SEO basics: https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics