Skip to content

seo: sync sitemap with real routes + auto-deploy workflow - #10

Draft
jetforgedev wants to merge 1 commit into
mainfrom
claude/jetforge-sitemap-sync-o6xp6g
Draft

jetforgedev wants to merge 1 commit into
mainfrom
claude/jetforge-sitemap-sync-o6xp6g

Conversation

@jetforgedev

Copy link
Copy Markdown
Owner

Summary

Two changes bundled together:

1. Sitemap / robots sync

The live sitemap listed a lot of routes that hurt more than they help, and missed some that would help. Cleanup:

  • Dropped /token/[mint] from sitemap.ts. Token pages are thin, near-duplicate structures keyed by opaque base58 mint addresses. With thousands of them (many spam / rugs), they dilute crawl budget and lower perceived domain quality. Pump.fun, Moonshot etc. don't index individual token pages either.
  • Added /creators/[wallet] to sitemap.ts — top 50 by volume, pulled from GET /api/creators?metric=volume&limit=50. These are keyword-rich (display name, bio) and are real SEO wins.
  • Added noindex metadata to /token/[mint] (follow kept so link equity flows) and /r/[code] (nofollow — pure redirect). /portfolio/[wallet] already had noindex,nofollow.
  • robots.txt: added Disallow: /token/, /portfolio/, /r/. Cleaner signal to Googlebot to skip crawling them entirely.

2. Auto-deploy workflow

New .github/workflows/deploy.yml:

  • Runs on push to main (and manual workflow_dispatch with frontend / backend / both targets).
  • SSHes into the VPS via appleboy/ssh-action, does git reset --hard origin/main, npm ci + build + pm2 restart for the selected apps.
  • concurrency group ensures deploys queue rather than race.

Required repo secrets before this runs successfully (Settings → Secrets and variables → Actions):

  • VPS_HOST — 187.77.143.74
  • VPS_USER — root
  • VPS_SSH_KEY — a private SSH key whose public half is in /root/.ssh/authorized_keys on the VPS
  • VPS_PORT — optional, defaults to 22

Files changed

  • frontend/src/app/sitemap.ts
  • frontend/src/app/token/[mint]/page.tsx
  • frontend/src/app/r/[code]/page.tsx
  • frontend/public/robots.txt
  • .github/workflows/deploy.yml

Test plan

  • Merge and let the deploy workflow run (or trigger it manually once secrets are in place).
  • After deploy: curl -s https://jetforge.io/sitemap.xml | grep -c token should be 0; grep -c creators/ should be > 1.
  • curl -sI https://jetforge.io/token/<any-mint> — response HTML should include <meta name="robots" content="noindex,follow">.
  • curl -s https://jetforge.io/robots.txt shows the three new Disallow lines.
  • In Google Search Console → Sitemaps → resubmit sitemap.xml so Google recrawls immediately.

🤖 Generated with Claude Code

https://claude.ai/code/session_013M79BQfnQFQ5CpVxQKUpi7


Generated by Claude Code

- sitemap: drop /token/[mint] (thin, opaque base58 URLs dilute crawl
  budget); add /creators/[wallet] pulled from the creators API so real,
  keyword-rich profile pages get indexed instead.
- Add noindex to /token/[mint] and /r/[code] (portfolio already had it).
- robots.txt: Disallow /token/, /portfolio/, /r/ so Googlebot doesn't
  crawl them at all.
- Add .github/workflows/deploy.yml: SSH-based auto-deploy to the VPS
  on push to main, with a workflow_dispatch trigger and per-app targets.
  Requires repo secrets VPS_HOST, VPS_USER, VPS_SSH_KEY (VPS_PORT optional).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013M79BQfnQFQ5CpVxQKUpi7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants