diff --git a/linkinator.config.json b/linkinator.config.json index e1a1fbe..4af52f1 100644 --- a/linkinator.config.json +++ b/linkinator.config.json @@ -6,6 +6,7 @@ "github.com/hellocoop/hello.dev/*", "http://localhost:3000", "https://blog.hello.dev/*", - "https://blog.hello.coop/*" + "https://blog.hello.coop/*", + "https://github.com/*" ] } diff --git a/pages/docs/sdks.mdx b/pages/docs/sdks.mdx index 1ce9c33..84d39de 100644 --- a/pages/docs/sdks.mdx +++ b/pages/docs/sdks.mdx @@ -25,7 +25,7 @@ Quick links to our framework SDKs: } title="Vue" href="/docs/sdks/vue" /> -## Coming +## Coming Soon } title="SvelteKit" href="mailto:contact@hello.coop/subject=Interest+in+SvelteKit"/> } title="Remix" href="mailto:contact@hello.coop/subject=Interest+in+Remix"/> diff --git a/public/ai-sitemap.xml b/public/ai-sitemap.xml index 493c966..6845df5 100644 --- a/public/ai-sitemap.xml +++ b/public/ai-sitemap.xml @@ -6,157 +6,157 @@ https://www.hello.dev/markdown/docs/docs.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 1.0 + + https://www.hello.dev/markdown/docs/docs/admin-mcp.md + 2025-07-29T15:05:57.286Z + 0.7 + + https://www.hello.dev/markdown/docs/docs/apis/admin.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.8 https://www.hello.dev/markdown/docs/docs/apis/invite.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.8 https://www.hello.dev/markdown/docs/docs/apis/quickstart.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.8 https://www.hello.dev/markdown/docs/docs/apis/wallet.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.8 https://www.hello.dev/markdown/docs/docs/apis/web-client.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.8 https://www.hello.dev/markdown/docs/docs/buttons.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.8 https://www.hello.dev/markdown/docs/docs/getting-started.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.9 - - https://www.hello.dev/markdown/docs/docs/mcp.md - 2025-07-20T09:53:09.984Z - 0.7 - - https://www.hello.dev/markdown/docs/docs/quickstarts.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.9 https://www.hello.dev/markdown/docs/docs/quickstarts/express.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.8 https://www.hello.dev/markdown/docs/docs/quickstarts/fastify.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.8 https://www.hello.dev/markdown/docs/docs/quickstarts/nextjs.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.8 https://www.hello.dev/markdown/docs/docs/quickstarts/wordpress.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.8 https://www.hello.dev/markdown/docs/docs/scopes.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.8 https://www.hello.dev/markdown/docs/docs/sdks/config.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.7 https://www.hello.dev/markdown/docs/docs/sdks/environment.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.7 https://www.hello.dev/markdown/docs/docs/sdks/express.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.7 https://www.hello.dev/markdown/docs/docs/sdks/faqs.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.7 https://www.hello.dev/markdown/docs/docs/sdks/fastify.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.7 https://www.hello.dev/markdown/docs/docs/sdks/helper.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.7 https://www.hello.dev/markdown/docs/docs/sdks/nextjs.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.7 https://www.hello.dev/markdown/docs/docs/sdks/quickstart.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.7 https://www.hello.dev/markdown/docs/docs/sdks/react.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.7 https://www.hello.dev/markdown/docs/docs/sdks/svelte.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.7 https://www.hello.dev/markdown/docs/docs/sdks/vue.md - 2025-07-20T09:53:09.984Z + 2025-07-29T15:05:57.286Z 0.7 diff --git a/public/sitemap.xml b/public/sitemap.xml index 64ff288..e374204 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -1,46 +1,46 @@ -https://www.hello.dev/2025-07-20T09:53:09.789Zdaily0.7 -https://www.hello.dev/docs/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/apis/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/apis/admin/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/apis/invite/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/apis/quickstart/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/apis/wallet/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/apis/web-client/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/buttons/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/comparison/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/getting-started/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/mcp/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/mockin/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/oidc/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/oidc/config/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/oidc/device/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/oidc/errors/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/oidc/request/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/oidc/response/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/oidc/token/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/oidc/unsupported/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/oidc/verification/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/quickstarts/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/quickstarts/express/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/quickstarts/fastify/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/quickstarts/nextjs/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/quickstarts/wordpress/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/roadmap/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/scopes/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/sdks/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/sdks/config/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/sdks/environment/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/sdks/express/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/sdks/faqs/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/sdks/fastify/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/sdks/helper/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/sdks/nextjs/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/sdks/quickstart/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/sdks/react/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/sdks/svelte/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/docs/sdks/vue/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/faqs/2025-07-20T09:53:09.790Zdaily0.7 -https://www.hello.dev/pricing/2025-07-20T09:53:09.790Zdaily0.7 +https://www.hello.dev/2025-07-29T15:01:10.953Zdaily0.7 +https://www.hello.dev/docs/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/admin-mcp/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/apis/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/apis/admin/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/apis/invite/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/apis/quickstart/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/apis/wallet/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/apis/web-client/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/buttons/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/comparison/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/getting-started/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/mockin/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/oidc/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/oidc/config/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/oidc/device/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/oidc/errors/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/oidc/request/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/oidc/response/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/oidc/token/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/oidc/unsupported/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/oidc/verification/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/quickstarts/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/quickstarts/express/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/quickstarts/fastify/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/quickstarts/nextjs/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/quickstarts/wordpress/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/roadmap/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/scopes/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/sdks/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/sdks/config/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/sdks/environment/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/sdks/express/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/sdks/faqs/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/sdks/fastify/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/sdks/helper/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/sdks/nextjs/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/sdks/quickstart/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/sdks/react/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/sdks/svelte/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/docs/sdks/vue/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/faqs/2025-07-29T15:01:10.954Zdaily0.7 +https://www.hello.dev/pricing/2025-07-29T15:01:10.954Zdaily0.7 \ No newline at end of file diff --git a/scripts/generate-markdown.mjs b/scripts/generate-markdown.mjs index 316374a..c38edd8 100644 --- a/scripts/generate-markdown.mjs +++ b/scripts/generate-markdown.mjs @@ -46,6 +46,116 @@ turndownService.addRule('removeScripts', { } }); +turndownService.addRule('removeBreadcrumbs', { + filter: function (node) { + return node.className && node.className.includes('nextra-breadcrumb'); + }, + replacement: function () { + return ''; + } +}); + +turndownService.addRule('removeNavigation', { + filter: function (node) { + // Remove navigation elements with specific classes that indicate prev/next navigation + return node.className && ( + node.className.includes('nx-mb-8') && + node.className.includes('nx-flex') && + node.className.includes('nx-items-center') && + node.className.includes('nx-border-t') + ); + }, + replacement: function () { + return ''; + } +}); + +turndownService.addRule('removeTabs', { + filter: function (node) { + // Remove tab navigation elements + return node.className && ( + node.className.includes('nx-mt-4') && + node.className.includes('nx-flex') && + node.className.includes('nx-w-max') && + node.className.includes('nx-min-w-full') && + node.className.includes('nx-border-b') && + node.className.includes('nx-pb-px') && + node.getAttribute('role') === 'tablist' + ); + }, + replacement: function () { + return ''; + } +}); + +turndownService.addRule('convertCardsToBullets', { + filter: function (node) { + return node.className && node.className.includes('nextra-cards'); + }, + replacement: function (content, node) { + // Convert card links to bullet points and clean up duplicated text + const links = content.match(/\[([^\]]+)\]\(([^)]+)\)/g); + if (links) { + return links.map(link => { + // Clean up duplicated text in link labels + let cleanLink = link + .replace(/OpenIDOpenID/g, 'OpenID') + .replace(/ExpressExpress/g, 'Express') + .replace(/FastifyFastify/g, 'Fastify') + .replace(/Next\.jsNext\.js/g, 'Next.js') + .replace(/WordPressWordPress/g, 'WordPress') + .replace(/ReactReact/g, 'React') + .replace(/SvelteSvelte/g, 'Svelte') + .replace(/Vue\.jsVue/g, 'Vue.js') + .replace(/SvelteKitSvelteKit/g, 'SvelteKit') + .replace(/RemixRemix/g, 'Remix') + .replace(/Nuxt\.jsNuxt/g, 'Nuxt.js'); + return `- ${cleanLink}`; + }).join('\n') + '\n\n'; + } + return content; + } +}); + +turndownService.addRule('convertTables', { + filter: 'table', + replacement: function (content, node) { + const rows = node.querySelectorAll('tr'); + if (rows.length === 0) return ''; + + let markdown = ''; + + // Process each row + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + const cells = row.querySelectorAll('td, th'); + const rowData = []; + + for (let j = 0; j < cells.length; j++) { + const cell = cells[j]; + // Get cell content and clean it up + let cellContent = cell.textContent.trim(); + // Remove extra whitespace and newlines + cellContent = cellContent.replace(/\s+/g, ' '); + rowData.push(cellContent); + } + + if (i === 0) { + // Header row + markdown += `| ${rowData.join(' | ')} |\n`; + markdown += `| ${rowData.map(() => '---').join(' | ')} |\n`; + } else { + // Data row + markdown += `| ${rowData.join(' | ')} |\n`; + } + } + + return markdown + '\n'; + } +}); + + + /** * Extract main content from HTML */ @@ -83,7 +193,10 @@ function convertHtmlToMarkdown(htmlPath, outputPath) { let cleanMarkdown = markdown .replace(/\n{3,}/g, '\n\n') // Remove excessive newlines .replace(/^\s+|\s+$/g, '') // Trim whitespace - .replace(/\\([*_~`#])/g, '$1'); // Remove unnecessary escaping + .replace(/\\([*_~`#])/g, '$1') // Remove unnecessary escaping + .replace(/\[\]\(#[^)]+\)/g, '') // Remove anchor links from headings + .replace(/ \(opens in a new tab\)/g, '') // Remove "(opens in a new tab)" from links + // Ensure output directory exists const outputDir = path.dirname(outputPath);