diff --git a/convex/http.ts b/convex/http.ts index 9497ec9..7355d38 100644 --- a/convex/http.ts +++ b/convex/http.ts @@ -6,7 +6,7 @@ import { rssFeed, rssFullFeed } from "./rss"; const http = httpRouter(); // Site configuration -const SITE_URL = process.env.SITE_URL || "https://markdowncms.netlify.app"; +const SITE_URL = process.env.SITE_URL || "https://markdown.fast"; const SITE_NAME = "markdown sync framework"; // RSS feed endpoint (descriptions only) @@ -72,7 +72,8 @@ http.route({ const response = { site: SITE_NAME, url: SITE_URL, - description: "An open-source publishing framework for AI agents and developers. Write markdown, sync from the terminal. Your content is instantly available to browsers, LLMs, and AI agents. Built on Convex and Netlify.", + description: + "An open-source publishing framework for AI agents and developers. Write markdown, sync from the terminal. Your content is instantly available to browsers, LLMs, and AI agents. Built on Convex and Netlify.", posts: posts.map((post) => ({ title: post.title, slug: post.slug, @@ -194,7 +195,8 @@ http.route({ const response = { site: SITE_NAME, url: SITE_URL, - description: "An open-source publishing framework for AI agents and developers. Write markdown, sync from the terminal. Your content is instantly available to browsers, LLMs, and AI agents. Built on Convex and Netlify.", + description: + "An open-source publishing framework for AI agents and developers. Write markdown, sync from the terminal. Your content is instantly available to browsers, LLMs, and AI agents. Built on Convex and Netlify.", exportedAt: new Date().toISOString(), totalPosts: fullPosts.length, posts: fullPosts, @@ -230,7 +232,7 @@ function generateMetaHtml(content: { image?: string; type?: "post" | "page"; }): string { - const siteUrl = process.env.SITE_URL || "https://markdowncms.netlify.app"; + const siteUrl = process.env.SITE_URL || "https://markdown.fast"; const siteName = "markdown sync framework"; const defaultImage = `${siteUrl}/images/og-default.svg`; const canonicalUrl = `${siteUrl}/${content.slug}`; @@ -266,8 +268,12 @@ function generateMetaHtml(content: { - ${content.date ? ` - ` : ""} + ${ + content.date + ? ` + ` + : "" + } @@ -284,8 +290,12 @@ function generateMetaHtml(content: {

${safeTitle}

-

${safeDescription}

${content.date ? ` -

${content.date}${content.readTime ? ` · ${content.readTime}` : ""}

` : ""} +

${safeDescription}

${ + content.date + ? ` +

${content.date}${content.readTime ? ` · ${content.readTime}` : ""}

` + : "" + }

Redirecting to full ${contentType}...

`; diff --git a/convex/rss.ts b/convex/rss.ts index 50bdd6c..40adb50 100644 --- a/convex/rss.ts +++ b/convex/rss.ts @@ -2,7 +2,7 @@ import { httpAction } from "./_generated/server"; import { api } from "./_generated/api"; // Site configuration for RSS feed -const SITE_URL = process.env.SITE_URL || "https://markdowncms.netlify.app"; +const SITE_URL = process.env.SITE_URL || "https://markdown.fast"; const SITE_TITLE = "markdown sync framework"; const SITE_DESCRIPTION = "An open-source publishing framework for AI agents and developers. Write markdown, sync from the terminal. Your content is instantly available to browsers, LLMs, and AI agents. Built on Convex and Netlify."; diff --git a/index.html b/index.html index 85f50dd..08d84d5 100644 --- a/index.html +++ b/index.html @@ -10,7 +10,7 @@ name="description" content="An open-source publishing framework for AI agents and developers. Write markdown, sync from the terminal. Your content is instantly available to browsers, LLMs, and AI agents. Built on Convex and Netlify." /> - + - + - - + + - - - + + + @@ -71,16 +74,16 @@ "@context": "https://schema.org", "@type": "WebSite", "name": "markdown sync framework", - "url": "https://markdowncms.netlify.app", + "url": "https://www.markdown.fast", "description": "An open-source publishing framework for AI agents and developers. Write markdown, sync from the terminal. Your content is instantly available to browsers, LLMs, and AI agents. Built on Convex and Netlify.", "author": { "@type": "Organization", "name": "markdown sync framework", - "url": "https://markdowncms.netlify.app" + "url": "https://www.markdown.fast" }, "potentialAction": { "@type": "SearchAction", - "target": "https://markdowncms.netlify.app/?q={search_term_string}", + "target": "https://www.markdown.fast/?q={search_term_string}", "query-input": "required name=search_term_string" } } diff --git a/public/images/og-default.png b/public/images/og-default.png new file mode 100644 index 0000000..8862cad Binary files /dev/null and b/public/images/og-default.png differ diff --git a/public/llms.txt b/public/llms.txt index 859cfcf..df79417 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -5,7 +5,7 @@ # Site Information - Name: markdown sync framework -- URL: https://markdowncms.netlify.app +- URL: https://markdown.fast - Description: An open-source publishing framework for AI agents and developers. Write markdown, sync from the terminal. Your content is instantly available to browsers, LLMs, and AI agents. Built on Convex and Netlify. - Topics: Markdown, Convex, React, TypeScript, Netlify, Open Source, AI, LLM, AEO, GEO diff --git a/public/openapi.yaml b/public/openapi.yaml index de406a4..e7ed421 100644 --- a/public/openapi.yaml +++ b/public/openapi.yaml @@ -9,7 +9,7 @@ info: url: https://github.com/waynesutton/markdown-site servers: - - url: https://markdowncms.netlify.app + - url: https://markdown.fast description: Production server paths: @@ -31,7 +31,7 @@ paths: example: markdown sync framework url: type: string - example: https://markdowncms.netlify.app + example: https://markdown.fast posts: type: array items: @@ -164,10 +164,10 @@ components: example: [tutorial, markdown] url: type: string - example: https://markdowncms.netlify.app/how-to-build-blog + example: https://markdown.fast/how-to-build-blog markdownUrl: type: string - example: https://markdowncms.netlify.app/api/post?slug=how-to-build-blog + example: https://markdown.fast/api/post?slug=how-to-build-blog Post: type: object diff --git a/public/robots.txt b/public/robots.txt index 475b533..161a18f 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -5,7 +5,7 @@ User-agent: * Allow: / # Sitemaps -Sitemap: https://markdowncms.netlify.app/sitemap.xml +Sitemap: https://markdown.fast/sitemap.xml # AI and LLM crawlers User-agent: GPTBot diff --git a/src/config/siteConfig.ts b/src/config/siteConfig.ts index 0fedb75..ebebfd9 100644 --- a/src/config/siteConfig.ts +++ b/src/config/siteConfig.ts @@ -107,15 +107,15 @@ export const siteConfig: SiteConfig = { }, { src: "/images/logos/markdown.svg", - href: "https://markdowncms.netlify.app/docs", + href: "https://markdown.fast/docs", }, { src: "/images/logos/react.svg", - href: "https://markdowncms.netlify.app/setup-guide", + href: "https://markdown.fast/setup-guide", }, { src: "/images/logos/sample-logo-5.svg", - href: "https://markdowncms.netlify.app/setup-guide", + href: "https://markdown.fast/setup-guide", }, ], position: "above-footer", diff --git a/src/pages/Post.tsx b/src/pages/Post.tsx index 3c82caf..98f79c5 100644 --- a/src/pages/Post.tsx +++ b/src/pages/Post.tsx @@ -8,7 +8,7 @@ import { ArrowLeft, Link as LinkIcon, Twitter, Rss } from "lucide-react"; import { useState, useEffect } from "react"; // Site configuration -const SITE_URL = "https://markdowncms.netlify.app"; +const SITE_URL = "https://markdown.fast"; const SITE_NAME = "markdown sync framework"; const DEFAULT_OG_IMAGE = "/images/og-default.svg"; @@ -25,7 +25,7 @@ export default function Post() { useEffect(() => { if (!location.hash) return; if (page === undefined && post === undefined) return; - + // Small delay to ensure content is rendered const timer = setTimeout(() => { const id = location.hash.slice(1); @@ -34,7 +34,7 @@ export default function Post() { element.scrollIntoView({ behavior: "smooth" }); } }, 100); - + return () => clearTimeout(timer); }, [location.hash, page, post]);