PondPilot SEO Audit Report

PondPilot SEO Audit Report

Date: 2026-02-17
Auditor: Automated
Site: https://pondpilot.io
pSEO Pages: 41 pages in /pseo/


Overall Score: 62/100


πŸ”΄ Critical Issues (Blocking SEO)

1. No robots.txt (CRITICAL)

  • https://pondpilot.io/robots.txt returns 404
  • No robots.txt file exists in the repo
  • Search engines have no crawl directives; sitemap URL not discoverable via robots.txt
  • Fix: Create robots.txt with Sitemap: https://pondpilot.io/sitemap.xml

2. No sitemap.xml (CRITICAL)

  • https://pondpilot.io/sitemap.xml returns 404
  • jekyll-sitemap plugin is configured in _config.yml but output is not being generated/deployed
  • Fix: Verify jekyll-sitemap is actually generating output. May need gems instead of plugins depending on Jekyll version, or GitHub Pages may not support this plugin.

3. No Twitter Card meta tags (CRITICAL)

  • Zero twitter: meta tags on any page
  • Missing: twitter:card, twitter:title, twitter:description, twitter:image
  • Sharing on Twitter/X will show plain links with no preview
  • Fix: Add to _layouts/default.html:
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:title" content="..." />
    <meta name="twitter:description" content="..." />
    <meta name="twitter:image" content="..." />
    

4. No canonical URLs (CRITICAL)

  • No <link rel="canonical"> tag on any page
  • Duplicate content risk between /page and /page/ (trailing slash)
  • jekyll-seo-tag plugin is configured but its output is NOT present in the rendered HTML
  • Fix: Either make jekyll-seo-tag work (add `
PondPilot SEO Audit Report | PondPilot Blog

` to head), or add canonical manually:

  <link rel="canonical" href="https://pondpilot.io/SEO-AUDIT/" />

5. No 404 page

  • No 404.html or 404.md in the repo
  • The live 404 shows GitHub Pages’ default error β€” unbranded, no navigation back to site
  • Fix: Create 404.html with layout, branding, and links back to homepage

6. Blog posts missing meta descriptions

  • ALL 10 blog posts lack description in front matter
  • The default.html layout falls back to page.excerpt (first paragraph), but this is uncontrolled and often too long/irrelevant
  • Fix: Add description: to every blog post’s front matter

🟑 Warnings (Hurting SEO)

7. No structured data / schema markup

  • No JSON-LD, Microdata, or RDFa on any page
  • Missing Organization, SoftwareApplication, WebSite, BlogPosting schemas
  • Rich snippets won’t appear in search results
  • Fix: Add JSON-LD for Organization (homepage) and BlogPosting (blog posts)

8. OG image is an SVG

  • og:image points to /assets/images/polly.svg
  • Many social platforms (Facebook, LinkedIn, Twitter) don’t render SVG OG images
  • Fix: Create a proper PNG/JPG OG image (1200Γ—630px recommended)

9. jekyll-seo-tag plugin configured but not used

  • Plugin is in _config.yml under plugins
  • But `
PondPilot SEO Audit Report | PondPilot Blog

` tag is NOT in default.html head β€” the plugin does nothing

  • This means canonical URLs, JSON-LD, and twitter cards that jekyll-seo-tag would auto-generate are all missing
  • Fix: Add `
PondPilot SEO Audit Report | PondPilot Blog

` to the <head> in default.html (this alone fixes issues 3, 4, and 7 partially)

10. Homepage H1 is the logo text β€œPondPilot”

  • The visible H1 is inside the header/logo, not in page content
  • First content heading is H2 (β€œData tools that respect your privacy”)
  • Fix: Make the main value proposition an H1 in page content

11. Font Awesome loaded from CDN

  • Full Font Awesome CSS loaded from cdnjs.cloudflare.com (~80KB)
  • Likely only using a few icons β€” render-blocking external CSS
  • Fix: Subset to only needed icons, or use inline SVGs

12. Three external font sources

  • Google Fonts, Fontshare, and Google Fonts again (JetBrains Mono)
  • Three separate DNS lookups + CSS downloads = render delay
  • Fix: Self-host fonts or consolidate sources

13. Some pSEO pages below 300 word target

  • duckdb-json-query.md (247 words), sql-data-cleaning-tool.md (243 words), parquet-to-csv-converter.md (263 words), local-data-analysis-tool.md (266 words)
  • Thin content risk for these pages
  • Fix: Expand to 300+ words each

14. No internal cross-linking between pSEO pages

  • pSEO pages link to app.pondpilot.io, /widget, /flowscope but NOT to each other
  • Internal linking between related pSEO pages would boost topical authority
  • Fix: Add 2-3 β€œRelated” links at the bottom of each pSEO page

🟒 Good (What’s Working)

βœ… Title tags on all pages

  • Homepage, /app, /widget, /flowscope, /blog all have unique, descriptive titles
  • All 41 pSEO pages have unique title tags in front matter

βœ… Meta descriptions on core pages

  • Homepage has a proper meta description
  • Product pages (/app, /widget, /flowscope) have descriptions via layout template

βœ… All 41 pSEO pages have complete front matter

  • Every page has: title, description, permalink, layout
  • No missing fields

βœ… Proper H1 structure on pSEO pages

  • All 41 pages have a clear H1 matching the target keyword
  • Organized by category: /use-cases/, /privacy/, /alternatives/, /tools/, /audience/, /duckdb/
  • Clean, keyword-rich URLs

βœ… Mobile viewport meta tag present

  • <meta name="viewport" content="width=device-width, initial-scale=1.0" /> βœ“

βœ… Open Graph tags on all pages

  • og:title, og:description, og:type, og:url, og:image present

βœ… Blog has consistent front matter

  • All posts have title, date, author, image
  • Blog layout differentiates og:type as β€œarticle” for posts

βœ… Clean Jekyll config

  • url properly set to https://pondpilot.io
  • Proper permalink structure for blog

βœ… Content quality is high

  • pSEO pages are well-written, unique, and substantive
  • Good use of SQL code examples throughout
  • Natural keyword usage without stuffing
  • Accessibility best practice present

βœ… Analytics present (Cloudflare Web Analytics)

  • Privacy-friendly, no Google Analytics β€” on-brand

πŸ“‹ Recommendations (Prioritized)

P0 β€” Do immediately (biggest SEO impact)

  1. **Add `
PondPilot SEO Audit Report | PondPilot Blog

` tag to default.html <head>** β€” This single change enables canonical URLs, Twitter cards, and JSON-LD from the already-configured jekyll-seo-tag plugin. Remove the manually-written OG tags to avoid duplication (or keep them and let jekyll-seo-tag handle the rest).

  1. Create robots.txt:
    User-agent: *
    Allow: /
    Sitemap: https://pondpilot.io/sitemap.xml
    
  2. Fix jekyll-sitemap plugin β€” Verify it’s generating sitemap.xml. If GitHub Pages doesn’t support it, generate manually or use a CI step.

  3. Create 404.html with site branding, navigation, and a search/link to homepage.

  4. Add description: to all 10 blog posts β€” Write 150-160 char descriptions for each.

P1 β€” Do this week

  1. Create a proper OG image (PNG, 1200Γ—630) instead of the SVG logo.

  2. Expand thin pSEO pages β€” Add 50-80 more words to the 4 pages under 270 words.

  3. Add internal cross-links between related pSEO pages (e.g., β€œSee also: DuckDB CSV Query”).

  4. Add JSON-LD structured data:

    • Organization schema on homepage
    • SoftwareApplication schema on /app
    • BlogPosting schema on blog posts (if jekyll-seo-tag doesn’t handle it)

P2 β€” Do this month

  1. Self-host fonts to eliminate 3 external font DNS lookups.

  2. Subset Font Awesome to only used icons.

  3. Add blog post dates to structured data for freshness signals.

  4. Submit sitemap to Google Search Console once it exists.

  5. Create a β€œhub” page linking to all pSEO pages (e.g., /resources/ or /guides/) for crawl discovery.


πŸ”‘ Keyword Coverage Analysis

All 41 pSEO Target Keywords

Category Keywords
DuckDB-specific (6) duckdb browser tool, duckdb csv query, duckdb json query, duckdb online playground, duckdb parquet viewer, duckdb wasm sql editor
Use cases (12) analyze csv in browser, browser sql analytics, compare datasets in browser, csv to sql online, explore json data locally, interactive sql tutorial embed, open source sql editor, parquet to csv converter, personal finance data analysis, query parquet files online, sql data cleaning tool, sql playground no signup
Privacy-focused (6) air-gapped data analysis, data analysis without uploading, gdpr compliant data tool, local data analysis tool, no-cloud sql editor, offline data analysis tool, private data exploration
Alternatives (5) datasette alternative, db fiddle alternative, excel alternative data analysis, google sheets alternative private, jupyter notebook alternative sql, mode analytics alternative
Tools (5) column-level lineage tool, data quality check tool, embed sql in documentation, interactive sql blog widget, sql editor for documentation, sql lineage visualization
Audience (4) data analysis for startups, data tools for journalists, sql explorer for students, sql tool for product managers

Notable Keyword Gaps

  1. β€œduckdb tutorial” β€” high-volume search, not targeted
  2. β€œsql editor online free” β€” very high volume, no exact match page
  3. β€œcsv viewer online” β€” common query, no page
  4. β€œparquet viewer online” β€” close to existing but not exact match
  5. β€œwasm database” or β€œbrowser database” β€” technical audience terms
  6. β€œanalyze excel files with sql” β€” Excel is mentioned but .xlsx file support isn’t targeted
  7. β€œsql ide browser” β€” developer-oriented term
  8. β€œdata anonymization tool” β€” privacy adjacent, good fit
  9. β€œsql formatter online” β€” tangential but high traffic
  10. β€œcompare csv files” β€” simpler version of existing page keyword

Keyword Strategy Score: 7.5/10

Strong long-tail targeting across privacy, DuckDB, and use-case categories. Good competitor alternative pages. Missing some high-volume head terms and a few obvious DuckDB-adjacent keywords.


πŸ“Š pSEO Page-by-Page Checklist

Filename Title Description Permalink H1 Words Status
air-gapped-data-analysis.md βœ… βœ… βœ… βœ… 284 βœ… OK
analyze-csv-in-browser.md βœ… βœ… βœ… βœ… 297 βœ… OK
browser-sql-analytics.md βœ… βœ… βœ… βœ… 277 βœ… OK
column-level-lineage-tool.md βœ… βœ… βœ… βœ… 296 βœ… OK
compare-datasets-in-browser.md βœ… βœ… βœ… βœ… 291 βœ… OK
csv-to-sql-online.md βœ… βœ… βœ… βœ… 277 βœ… OK
data-analysis-for-startups.md βœ… βœ… βœ… βœ… 303 βœ… OK
data-analysis-without-uploading.md βœ… βœ… βœ… βœ… 291 βœ… OK
data-quality-check-tool.md βœ… βœ… βœ… βœ… 280 βœ… OK
data-tools-for-journalists.md βœ… βœ… βœ… βœ… 304 βœ… OK
datasette-alternative.md βœ… βœ… βœ… βœ… 299 βœ… OK
db-fiddle-alternative.md βœ… βœ… βœ… βœ… 303 βœ… OK
duckdb-browser-tool.md βœ… βœ… βœ… βœ… 296 βœ… OK
duckdb-csv-query.md βœ… βœ… βœ… βœ… 283 βœ… OK
duckdb-json-query.md βœ… βœ… βœ… βœ… 247 ⚠️ Thin (<270)
duckdb-online-playground.md βœ… βœ… βœ… βœ… 274 βœ… OK
duckdb-parquet-viewer.md βœ… βœ… βœ… βœ… 289 βœ… OK
duckdb-wasm-sql-editor.md βœ… βœ… βœ… βœ… 291 βœ… OK
embed-sql-in-documentation.md βœ… βœ… βœ… βœ… 287 βœ… OK
excel-alternative-data-analysis.md βœ… βœ… βœ… βœ… 335 βœ… OK
explore-json-data-locally.md βœ… βœ… βœ… βœ… 271 βœ… OK
gdpr-compliant-data-tool.md βœ… βœ… βœ… βœ… 292 βœ… OK
google-sheets-alternative-private.md βœ… βœ… βœ… βœ… 320 βœ… OK
interactive-sql-blog-widget.md βœ… βœ… βœ… βœ… 317 βœ… OK
interactive-sql-tutorial-embed.md βœ… βœ… βœ… βœ… 295 βœ… OK
jupyter-notebook-alternative-sql.md βœ… βœ… βœ… βœ… 299 βœ… OK
local-data-analysis-tool.md βœ… βœ… βœ… βœ… 266 ⚠️ Thin (<270)
mode-analytics-alternative.md βœ… βœ… βœ… βœ… 306 βœ… OK
no-cloud-sql-editor.md βœ… βœ… βœ… βœ… 287 βœ… OK
offline-data-analysis-tool.md βœ… βœ… βœ… βœ… 283 βœ… OK
open-source-sql-editor.md βœ… βœ… βœ… βœ… 285 βœ… OK
parquet-to-csv-converter.md βœ… βœ… βœ… βœ… 263 ⚠️ Thin (<270)
personal-finance-data-analysis.md βœ… βœ… βœ… βœ… 290 βœ… OK
private-data-exploration.md βœ… βœ… βœ… βœ… 284 βœ… OK
query-parquet-files-online.md βœ… βœ… βœ… βœ… 272 βœ… OK
sql-data-cleaning-tool.md βœ… βœ… βœ… βœ… 243 ⚠️ Thin (<270)
sql-editor-for-documentation.md βœ… βœ… βœ… βœ… 282 βœ… OK
sql-explorer-for-students.md βœ… βœ… βœ… βœ… 308 βœ… OK
sql-lineage-visualization.md βœ… βœ… βœ… βœ… 280 βœ… OK
sql-playground-no-signup.md βœ… βœ… βœ… βœ… 293 βœ… OK
sql-tool-for-product-managers.md βœ… βœ… βœ… βœ… 336 βœ… OK

Summary: 41/41 have title, description, permalink, H1. 4/41 flagged as thin content. 0 duplicates found. All CTAs link to valid URLs (app.pondpilot.io, /widget, /flowscope).


TL;DR

The pSEO pages are excellent β€” well-structured, unique, good keywords. The site infrastructure has critical gaps: no robots.txt, no sitemap, no canonical URLs, no Twitter cards. The fastest fix is adding `

PondPilot SEO Audit Report | PondPilot Blog

` to the layout head (the plugin is already configured but unused) and creating robots.txt + 404 page. These 3 changes would move the score from 62 to ~80.