Commit Graph

22 Commits

Author SHA1 Message Date
Wayne Sutton
1257fa220f Canonical URL fix for search engines (GitHub Issue #6) and other seo fixes" 2026-01-07 21:48:41 -08:00
Wayne Sutton
98916899a3 fix(seo): resolve 7 SEO issues from GitHub Issue #4
SEO improvements for better search engine optimization:

  1. Canonical URL - Added client-side dynamic canonical link tags for posts and pages
  2. Single H1 per page - Markdown H1s demoted to H2 with .blog-h1-demoted class (maintains H1 visual styling)
  3. DOM order fix - Article now loads before sidebar in DOM for SEO (CSS order property maintains visual layout)
  4. X-Robots-Tag - HTTP header added via netlify.toml (index, follow for public; noindex for dashboard/api routes)
  5. Hreflang tags - Self-referencing hreflang (en, x-default) for language targeting
  6. og:url consistency - Uses same canonicalUrl variable as canonical link tag
  7. twitter:site - New TwitterConfig in siteConfig.ts for Twitter Cards meta tags

  Files modified:
  - src/config/siteConfig.ts: Added TwitterConfig interface with site/creator fields
  - src/pages/Post.tsx: SEO meta tags for posts/pages, DOM order optimization
  - src/components/BlogPost.tsx: H1 to H2 demotion in markdown renderer
  - src/styles/global.css: .blog-h1-demoted class, CSS order properties
  - convex/http.ts: hreflang and twitter:site in generateMetaHtml()
  - netlify.toml: X-Robots-Tag headers for public, dashboard, API routes
  - index.html: canonical, hreflang, twitter:site placeholder tags
  - fork-config.json.example: twitter configuration fields

  Closes #4

  Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 11:31:55 -08:00
Wayne Sutton
c1f041fc66 fix: updated Netlify headers Content-Type to plain text 2026-01-03 21:02:55 -08:00
Wayne Sutton
01ac2a01c7 feat: added HTTP-Based MCP Server on Netlify 2025-12-27 22:18:03 -08:00
Wayne Sutton
27847327fd fix: standardize URLs to www.markdown.fast to resolve RSS feed validation errors 2025-12-24 23:45:58 -08:00
Wayne Sutton
e2eaa9c43b fix: disable AI service links due to Netlify edge function issues
- Remove /api/raw Netlify Function that caused build failures
- Comment out ChatGPT/Claude/Perplexity buttons in CopyPageDropdown
- Keep Copy page, View as Markdown, Download as SKILL.md options
- Update blog post with detailed log of attempted solutions
- Clean up netlify.toml by removing broken redirect rule

Users can still copy markdown and paste into AI tools manually.
The raw markdown files work in browsers but AI crawlers cannot
fetch them reliably due to Netlify edge function interception.
2025-12-24 01:44:00 -08:00
Wayne Sutton
b43f8ff2f4 fix(api): use JS Netlify Function with query param for /api/raw endpoint 2025-12-24 00:55:55 -08:00
Wayne Sutton
c98049c411 feat(api): add /api/raw/:slug endpoint for AI tools (ChatGPT, Claude, Perplexity)
- Create netlify/functions/raw.ts Netlify Function
- Returns text/plain with minimal headers for reliable AI ingestion
- Reads from dist/raw/ (production) or public/raw/ (dev/preview)
- Update CopyPageDropdown to use /api/raw/:slug for AI services
- Keep /raw/:slug.md for View as Markdown browser viewing
- Add @netlify/functions dev dependency
2025-12-24 00:35:02 -08:00
Wayne Sutton
6ac6098668 fix(ai): remove Link header from /raw/* and use window.location.origin for raw URLs
- Remove Link header from global headers scope, apply only to /index.html
- Remove X-Robots-Tag noindex from /raw/* to allow AI crawler indexing
- Use window.location.origin instead of props.url for raw markdown URL construction
- Ensures correct URLs even when props.url points to canonical/deploy preview domains
- Fixes ChatGPT/Perplexity fetch failures on /raw/*.md endpoints
2025-12-24 00:13:10 -08:00
Wayne Sutton
6a49583da5 fix(edge): let AI crawlers bypass botMeta OG interception for /raw/*.md 2025-12-23 23:19:40 -08:00
Wayne Sutton
d47062bb32 fix: use correct excludedPath syntax for Netlify edge functions 2025-12-22 02:04:56 -08:00
Wayne Sutton
1798be1047 fix: use correct excluded_paths syntax for Netlify edge functions 2025-12-22 01:58:11 -08:00
Wayne Sutton
e9ff238abf fix: exclude raw files from edge function so AI crawlers can access markdown 2025-12-22 01:35:38 -08:00
Wayne Sutton
94ba8fe184 fix: SEO/AEO/GEO improvements for AI crawlers and search engines 2025-12-22 00:07:24 -08:00
Wayne Sutton
4a912fd345 docs: add visitor map configuration to README and update docs.md
- Added visitor map section to README.md after GitHub Contributions Graph
- Updated visitor map description in content/pages/docs.md with privacy details
- Documents configuration options in src/config/siteConfig.ts
- Explains Netlify geo detection and theme-aware colors
2025-12-21 15:58:43 -08:00
Wayne Sutton
87e02d00dc feat: add featured section, logo gallery, Firecrawl import, and API export
Featured Section
- Frontmatter-controlled featured items with featured: true and featuredOrder
- Card view with excerpts and list/card toggle button
- View preference saved to localStorage
- New Convex queries for featured posts and pages with by_featured index

Logo Gallery
- Continuous marquee scroll with clickable logos
- CSS animation, grayscale with color on hover
- Configurable speed, position, and title
- 5 sample logos included

Firecrawl Content Importer
- npm run import <url> scrapes external URLs to markdown drafts
- Creates local files in content/blog/ with frontmatter
- Then sync to dev or prod (no separate import:prod command)

API Enhancements
- New /api/export endpoint for batch content fetching
- AI plugin discovery at /.well-known/ai-plugin.json
- OpenAPI 3.0 spec at /openapi.yaml
- Enhanced llms.txt documentation

Documentation
- AGENTS.md with codebase instructions for AI agents
- Updated all sync vs deploy tables to include import workflow
- Renamed content/pages/changelog.md to changelog-page.md

Technical
- New components: FeaturedCards.tsx, LogoMarquee.tsx
- New script: scripts/import-url.ts
- New dependency: @mendable/firecrawl-js
- Schema updates with featured, featuredOrder, excerpt fields
2025-12-18 12:28:25 -08:00
Wayne Sutton
078fbe6698 fix: add edge functions for dynamic RSS, sitemap, and API proxying to Convex HTTP endpoints 2025-12-14 17:00:46 -08:00
Wayne Sutton
d73f49db65 fix: force devDeps install with npm ci --include=dev and use npx vite build 2025-12-14 12:13:20 -08:00
Wayne Sutton
59e9c655d4 fix: ensure vite installs and builds correctly on Netlify 2025-12-14 12:06:11 -08:00
Wayne Sutton
ad7f07ffe1 fix: ensure npm install runs before convex deploy on Netlify 2025-12-14 11:56:17 -08:00
Wayne Sutton
1efa55b5d7 fix: update Netlify build command to use convex deploy 2025-12-14 11:43:59 -08:00
Wayne Sutton
462729de58 chore: prepare v1.0.0 for Netlify deployment
Update version to 1.0.0 across package.json and changelog. Configure netlify.toml with Convex deployment URL (agreeable-trout-200.convex.site). Verify TypeScript type-safety for src and convex directories. Confirm Netlify build passes with SPA 404 fallback configured. Update TASK.md with deployment steps and files.md with complete file structure.
2025-12-14 11:30:22 -08:00