Skip to content

Latest commit

 

History

History
506 lines (363 loc) · 12.6 KB

File metadata and controls

506 lines (363 loc) · 12.6 KB

SEO Deployment Checklist

Quick verification guide to ensure all SEO improvements are working correctly.


✅ Pre-Deployment Checklist

1. Verify Files Were Created

# Check all SEO files exist
ls -la layouts/partials/seo_meta.html
ls -la layouts/partials/structured_data.html
ls -la layouts/partials/head_custom.html
ls -la static/robots.txt
ls -la SEO_IMPROVEMENTS.md
ls -la SEO_KEYWORDS_REFERENCE.md

Expected output: All files should exist (no "No such file" errors)

2. Test Local Build

# Navigate to project root
cd /Users/tommytang/githup_repo/DivingIntoGeneticsAndGenomics

# Start Hugo server
hugo server -D

# Should see: "Web Server is available at http://localhost:1313/"

3. Verify Local SEO Implementation

Open browser to: http://localhost:1313

Check Homepage:

  • View source (Ctrl+U or Cmd+Option+U)
  • Search for <meta name="description" - should exist
  • Search for <script type="application/ld+json"> - should exist (Organization schema)
  • Search for @type.*Organization - should exist

Check a Blog Post:

  • Open any post: http://localhost:1313/post/[any-post]/
  • View source
  • Search for <meta name="description" - should exist with post summary
  • Search for @type.*TechArticle - should exist
  • Search for @type.*BreadcrumbList - should exist
  • Search for og:description - should exist

Check robots.txt:

Check sitemap.xml:

  • Visit: http://localhost:1313/sitemap.xml
  • Should see XML with <urlset> tags
  • Should list blog posts, publications, talks

📦 Deployment Steps

Step 1: Review Changes

git status

# Expected output:
# modified:   config.toml
# new file:   layouts/partials/head_custom.html
# new file:   layouts/partials/seo_meta.html
# new file:   layouts/partials/structured_data.html
# new file:   static/robots.txt
# new file:   SEO_IMPROVEMENTS.md
# new file:   SEO_KEYWORDS_REFERENCE.md
# new file:   SEO_DEPLOYMENT_CHECKLIST.md

Step 2: Review Config Changes

git diff config.toml

# Should show:
# + enableGitInfo = true
# + enableRobotsTXT = true
# + description = "Learn bioinformatics..."
# + [sitemap]
# + series = "series"

Step 3: Commit Changes

git add layouts/partials/seo_meta.html
git add layouts/partials/structured_data.html
git add layouts/partials/head_custom.html
git add static/robots.txt
git add config.toml
git add SEO_IMPROVEMENTS.md
git add SEO_KEYWORDS_REFERENCE.md
git add SEO_DEPLOYMENT_CHECKLIST.md

git commit -m "Add comprehensive SEO improvements

- Add auto-generated meta descriptions for all posts
- Add TechArticle structured data for technical content
- Add BreadcrumbList schema for better navigation
- Add Organization schema for homepage
- Add enhanced Open Graph and Twitter Card meta tags
- Add robots.txt for efficient search engine crawling
- Enable sitemap generation with weekly update frequency
- Enable Git-based lastmod dates for content freshness
- Add site-wide description with primary keywords
- Add series taxonomy for tutorial organization
- Create SEO documentation and keyword reference guides

All improvements work with existing content without requiring
.Rmd re-rendering. Meta descriptions auto-generate from post
summaries, ensuring all 231 posts benefit immediately."

git push origin master

Step 4: Monitor Netlify Deployment

# Netlify will automatically:
# 1. Detect the push
# 2. Run: hugo
# 3. Deploy public/ directory

# Check Netlify dashboard:
# https://app.netlify.com/sites/[your-site-name]/deploys

# Wait for "Published" status (usually 1-2 minutes)

✅ Post-Deployment Verification

Immediate Checks (5 minutes after deploy)

1. Check robots.txt

curl https://divingintogeneticsandgenomics.com/robots.txt

# Expected output:
# User-agent: *
# Allow: /
# Sitemap: https://divingintogeneticsandgenomics.com/sitemap.xml
# Disallow: /rmarkdown-libs/
# ...

Pass: robots.txt content displays correctly ❌ Fail: 404 error or incorrect content → Check static/robots.txt exists and redeploy

2. Check sitemap.xml

curl https://divingintogeneticsandgenomics.com/sitemap.xml | head -50

# Expected: XML starting with <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
# Should list URLs like:
# <loc>https://divingintogeneticsandgenomics.com/post/...</loc>

Pass: Sitemap XML with URLs ❌ Fail: 404 or empty → Check config.toml sitemap section

3. Verify Meta Tags on Homepage

curl -s https://divingintogeneticsandgenomics.com/ | grep -A 1 'meta name="description"'

# Expected:
# <meta name="description" content="Learn bioinformatics, genomics...">

Pass: Description tag with site description ❌ Fail: No output → Check if head_custom.html is being loaded

4. Verify Structured Data on Blog Post

Pick any recent post URL and test:

# Replace [POST-URL] with actual post slug
curl -s https://divingintogeneticsandgenomics.com/post/[POST-URL]/ | grep '@type'

# Expected output includes:
# "@type": "TechArticle"
# "@type": "BreadcrumbList"
# "@type": "Person"

Pass: Multiple @type entries found ❌ Fail: No output → Check structured_data.html partial

5. Test Social Media Cards

Visit:

https://cards-dev.twitter.com/validator

Enter: https://divingintogeneticsandgenomics.com/post/[any-post]/

Pass: Card preview shows title, description, image ❌ Fail: Generic card → Check Open Graph meta tags


🔍 SEO Testing Tools

1. Google Rich Results Test

URL: https://search.google.com/test/rich-results

Test: Enter any blog post URL

Expected Results:

  • ✅ "Page is eligible for rich results"
  • ✅ "TechArticle" detected
  • ✅ "BreadcrumbList" detected
  • ✅ No errors

If errors occur:

  • Check for missing required fields (headline, datePublished, image)
  • Verify image URL is absolute (includes https://)
  • Check date format is ISO 8601 (YYYY-MM-DD)

2. Schema Markup Validator

URL: https://validator.schema.org/

Test: Paste HTML source of a blog post

Expected Results:

  • ✅ TechArticle schema detected
  • ✅ All required properties present
  • ✅ No warnings

3. Facebook Debugger

URL: https://developers.facebook.com/tools/debug/

Test: Enter blog post URL

Expected Results:

  • ✅ og:title displays correctly
  • ✅ og:description shows post summary
  • ✅ og:image shows (default icon or custom image)

4. LinkedIn Post Inspector

URL: https://www.linkedin.com/post-inspector/

Test: Enter blog post URL

Expected Results:

  • ✅ Title, description, image all display
  • ✅ No errors

📊 Google Search Console Setup (Within 24 hours)

1. Verify Site Ownership

  1. Go to: https://search.google.com/search-console
  2. Add property: https://divingintogeneticsandgenomics.com
  3. Verify via:
    • Recommended: HTML tag (add to head_custom.html)
    • Alternative: DNS record
    • Alternative: Google Analytics

2. Submit Sitemap

  1. In Search Console, go to: Sitemaps (left sidebar)
  2. Enter: sitemap.xml
  3. Click "Submit"
  4. Status should show: "Success" (may take 24-48 hours)

3. Request Indexing for Top Posts

  1. Go to: URL Inspection (left sidebar)
  2. Enter URLs of top 10 blog posts
  3. Click "Request Indexing" for each
  4. This speeds up discovery of SEO improvements

📈 Monitoring (Ongoing)

Week 1: Verify Everything Works

  • Check Search Console for crawl errors
  • Verify sitemap was processed (Coverage report)
  • Check if structured data is detected (Enhancements report)
  • Monitor any errors in Rich Results report

Month 1: Early Signals

Check in Google Search Console:

  1. Performance Report

    • Total clicks (should stay same or increase)
    • Total impressions (should increase 10-20%)
    • Average CTR (should increase 0.5-1%)
    • Average position (may fluctuate initially)
  2. Coverage Report

    • Valid pages indexed (should be 250+)
    • Excluded pages (should be *_files, *_cache)
    • No errors
  3. Enhancements Report

    • Check if structured data is detected
    • No errors in Article markup
    • No errors in Breadcrumb markup

Month 3: Measure Impact

Expected Improvements:

Metric Baseline Target Actual
Organic Traffic [current] +30-40% _____
Average CTR [current] +1-2% _____
Impressions [current] +50% _____
Featured Snippets 0-5 10-15 _____
Avg Position [current] -5 to -10 _____

🐛 Common Issues & Solutions

Issue 1: Meta descriptions still not showing in Google

Symptoms: Google search results show "..." instead of description

Causes:

  • Google is still using cached version (takes 1-2 weeks to update)
  • Google chose to rewrite description (this is normal, happens 30% of time)

Solution:

  • Wait 2 weeks for re-crawl
  • Use Search Console "Request Indexing" to speed up
  • If persists, description might be too short/long (aim for 150-160 chars)

Issue 2: Structured data errors in Search Console

Symptoms: "Unparseable structured data" errors

Causes:

  • Invalid JSON-LD syntax
  • Missing required fields
  • Wrong date format

Solution:

# Test locally first
curl -s http://localhost:1313/post/[post-slug]/ | grep -A 50 '@type.*TechArticle'

# Validate JSON at https://jsonlint.com/
# Check required fields: headline, datePublished, author, image

Issue 3: Sitemap shows 0 URLs

Symptoms: sitemap.xml is empty or shows very few URLs

Causes:

  • Hugo didn't regenerate sitemap
  • Posts are in draft mode
  • permalinks are broken

Solution:

# Check for draft posts
grep -r "draft: true" content/post/

# Regenerate site
hugo --gc --minify

# Check public/sitemap.xml
cat public/sitemap.xml | grep -c "<loc>"
# Should show 250+ URLs

Issue 4: robots.txt not found after deployment

Symptoms: https://divingintogeneticsandgenomics.com/robots.txt shows 404

Causes:

  • File not in static/ directory
  • Netlify build didn't copy it
  • Hugo config not enabling it

Solution:

# Verify file exists locally
ls -la static/robots.txt

# Verify config has:
grep "enableRobotsTXT" config.toml
# Should show: enableRobotsTXT = true

# Redeploy
git push origin master

🎯 Success Criteria

✅ Deployment Successful If:

  1. Technical

    • robots.txt accessible at /robots.txt
    • sitemap.xml accessible at /sitemap.xml with 250+ URLs
    • Meta descriptions appear in page source
    • Structured data validates with no errors
    • Open Graph tags present on all pages
  2. Search Console (within 1 week)

    • Sitemap submitted and processed
    • No critical crawl errors
    • Structured data detected (Enhancements report)
    • Coverage shows 250+ valid pages
  3. SEO Tools

    • Rich Results Test shows "Eligible for rich results"
    • Schema validator shows no errors
    • Social media cards display correctly
  4. Early Metrics (Month 1)

    • Impressions increase 10-20%
    • CTR stable or increases
    • No drop in rankings
    • At least 1-2 featured snippets captured

📞 Need Help?

If Something Goes Wrong:

  1. Check this checklist - most issues are covered here
  2. Review SEO_IMPROVEMENTS.md - detailed troubleshooting section
  3. Test locally first - always verify with hugo server before deploying
  4. Check Netlify build logs - look for Hugo errors during build
  5. Validate HTML - use https://validator.w3.org/

Files to Check:

# SEO partials (Hugo templates)
layouts/partials/seo_meta.html
layouts/partials/structured_data.html
layouts/partials/head_custom.html

# Config and robots
config.toml (lines 34-47, 57-58, 323)
static/robots.txt

# Generated output (after hugo build)
public/robots.txt
public/sitemap.xml
public/index.html (check <head> section)
public/post/*/index.html (check <head> section)

🎉 Ready to Deploy!

If all pre-deployment checks pass, you're ready to:

git add -A
git commit -m "Add comprehensive SEO improvements"
git push origin master

Then complete the post-deployment verification above.

Estimated time: 15-20 minutes total

  • 5 min: Commit and push
  • 2 min: Netlify build
  • 10 min: Verification checks
  • 3 min: Google Search Console setup

Last Updated: January 2025 Status: Ready for deployment No .Rmd files modified: ✅ Safe to deploy without re-rendering