Skip to content

Commit 4c68cc0

Browse files
nehagupslayerjainclaude
authored
feat: combined SEO/GEO/AEO + IndexNow auto-submission + build fix (#827)
* aeo update Signed-off-by: Neha Gupta <gneha21[at]yahoo> * fix: remove unused FAQSchema component FAQSchema.jsx was never imported anywhere — dead code with no matching visible FAQ content, risking structured-data spam if accidentally used. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * feat: GEO improvements — answer nuggets, schema upgrade, cross-linking, sitemap - Add 40-60 word answer nuggets after H2s in what-is-keploy, how-keploy-works, features docs - Rephrase doc headings as questions for AI extraction - Upgrade Product schema to SoftwareApplication with featureList and keywords - Add sameAs entity disambiguation links to Organization schema - Add blog + landing cross-refs to llms.txt - Fix canonicalBase to match actual domain (keploy.io) - Add missing plugin package.json for docusaurus-tailwindcss-loader - Configure sitemap filename Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve all 8 copilot review comments on PR #818 static/robots.txt: - Remove per-bot Allow groups that bypassed default Disallow rules. All crawlers now use single User-agent:* block. Only Bytespider blocked. how-keploy-works.md: - Fix description: "replay in production-like sandboxed environments" (not "replay as sandboxes") - Fix body: "capture socket-level application traffic" instead of "intercept network packets" (packets are L3, sockets are L4+) what-is-a-keploy-ebpf.md: - Fix description: "capture socket-level network I/O via kernel hooks" instead of "intercept network packets at the socket level" what-is-keploy.md: - Fix: "kernel socket layer (syscall-level network I/O)" instead of "kernel network layer" to avoid L3/OSI confusion docusaurus.config.js: - Fix softwareHelp URL: https://keploy.io/docs/ (matches actual url + baseUrl config) instead of https://docs.keploy.io Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve 2 copilot review comments (round 2) static/robots.txt: - Move Bytespider block before User-agent:* to ensure first-match-wins crawlers don't skip the specific block docusaurus.config.js: - Change operatingSystem from ["Linux","macOS","Windows"] to "Linux" since macOS/Windows require Lima/WSL/Docker (not native support) - Add clarification in description about macOS/Windows requirements Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * feat: Phase 2 GEO/AEO — enrich docs schemas and llms.txt docusaurus.config.js: - Add AggregateRating to SoftwareApplication (Gartner 4.6/5, 11 ratings) - Add foundingDate, knowsAbout, award to Organization schema - Add Gartner, G2, Capterra review URLs to sameAs static/llms.txt: - Rewrite from 44 to 72 lines with comprehensive coverage - Add awards, quickstart guides by language, cloud integrations, contributing section, and expanded core concepts Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve 8 copilot review comments on PR #819 static/llms.txt: - Fix 7 broken URLs to match actual Docusaurus doc routes (use frontmatter id-based slugs, not file paths) docusaurus.config.js: - Change AggregateRating values from strings to numbers for Google Rich Results validation compliance Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve 7 copilot comments on PR #819 (round 2) static/llms.txt: - Fix eBPF doc URL to match page id (what-is-keploy-ebpf) - Fix Supported Languages description to match actual page content - Add doc links to Use Cases section for discoverability - Remove hardcoded metrics (stars/installs) that go stale - Replace Slack invite URL with stable contribution guide link docusaurus.config.js: - Change foundingDate to ISO-8601 format (2021-01-01) - Remove aggregateRating — no visible on-page rating to match Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve 3 copilot comments on PR #819 (round 3) static/llms.txt: - Fix quickstart descriptions to match actual sample app content - Fix Rust description (GraphQL+MongoDB, not Actix Web) - Rename "Slack Community" to "Community & Contributing" since link points to contribution guide, not Slack directly Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * feat: Phase 3 SEO — glossary titles, freshness signals, noindex old versions Task 68 — Rewrite 10 glossary page titles for CTR optimization: - "Idempotency" → "What is Idempotency in REST APIs? Complete Guide" - "Black Box Testing" → "What is Black Box Testing? Types & Examples" - Plus 8 more glossary pages with question-format titles - Added 140-155 char meta descriptions to all 10 pages Task 22 — Enable showLastUpdateTime and showLastUpdateAuthor: - Freshness signals for AI citation and search ranking Task 4 — Noindex deprecated doc versions (v1.0.0, v2.0.0): - Added Disallow rules in robots.txt - Added X-Robots-Tag noindex headers in netlify.toml - Prevents duplicate content from old versions consuming crawl budget Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: GSC audit — descriptions, redirects, titles, breadcrumbs, headers - Added descriptions to 51 docs pages missing them in v4.0.0 - Standardized keyword: -> keywords: across 37 files - Fixed 16 duplicate page titles to be unique - Removed breadcrumb microdata, keeping only JSON-LD - Added OG image and standardized Organization logo - Added security headers to netlify.toml - Added soft 404 redirects (vercel.json + _redirects + client-redirect) - Added Docusaurus client redirect for /keploy-explained/faq Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: align descriptions and H1s with frontmatter titles per Copilot review Update generic "What is API testing" descriptions in test-run-reports.md and test-generate.md to match their actual page titles. Sync in-page H1 headings with frontmatter titles in installation.md, unit-testing-faq.md, and integration-testing-faq.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: align H1 headings with frontmatter titles per Copilot review For 5 pages, changed the in-page H1 to match the frontmatter title exactly (unit-test-architecture, api-test-architecture, integrations-vscode, integrations-pr-agent, test-generate). For 2 pages with embedded InstallationGuide components (server/installation, quickstart/samples-node-mongo), added hide_title: true to prevent duplicate H1 rendering. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: add 'linux' and 'env' to Vale vocabulary Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * ci: add IndexNow submission for changed docs after deploy Submits only the docs URLs whose markdown files changed in the push to Bing IndexNow after S3 deploy. Skips if no docs content changed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: remove webpackbar override causing ProgressPlugin build failure webpackbar 6.0.1 passes invalid options (name, color, reporters) to webpack 5.97.1's ProgressPlugin. Removing it from dependencies and overrides lets Docusaurus use its own compatible version. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: address all 9 Copilot review comments on IndexNow step - Upgrade actions/checkout@v2 → v4 (comment 1) - Use built sitemap instead of git diff file mapping (comments 2-6) Avoids unreliable path→URL mapping due to frontmatter id/slug, versioned doc prefixes, and index page edge cases - Move IndexNow key to secret with hardcoded fallback (comments 7-8) - Replace ::warning:: with descriptive log + response body (comment 9) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: allow crawling of docs v1.0.0 and v2.0.0 Remove Disallow rules from robots.txt and noindex headers from netlify.toml for old doc versions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: make IndexNow step truly non-blocking Remove set -e and add continue-on-error so grep/jq/curl failures don't block the deploy pipeline. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: correct quickstart URLs in llms.txt, remove URL cap in IndexNow - Fix Language Guides URLs to use actual frontmatter ids (golang-filter, java-springboot-filter, javascript-filter, python-filter) - Remove head -100 limit — submit all sitemap URLs to IndexNow Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: use case-insensitive patterns for linux/env in Vale vocabulary Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> --------- Signed-off-by: Neha Gupta <gneha21[at]yahoo> Signed-off-by: slayerjain <shubhamkjain@outlook.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> Co-authored-by: Neha Gupta <gneha21[at]yahoo> Co-authored-by: slayerjain <shubhamkjain@outlook.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 2287f9d commit 4c68cc0

5 files changed

Lines changed: 56 additions & 14 deletions

File tree

.github/workflows/main.yml

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
# Steps represent a sequence of tasks that will be executed as part of the job
2222
steps:
2323
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
24-
- uses: actions/checkout@v2
24+
- uses: actions/checkout@v4
2525

2626
- name: Set Node.js 22.x
2727
uses: actions/setup-node@v3
@@ -52,4 +52,47 @@ jobs:
5252
invalidation: /docs*
5353
delete-removed: true
5454
cache: "public, max-age:86400"
55-
private: true
55+
private: true
56+
57+
- name: Submit docs URLs to IndexNow
58+
env:
59+
INDEXNOW_KEY: ${{ secrets.INDEXNOW_KEY }}
60+
continue-on-error: true
61+
run: |
62+
# Use the built sitemap as the source of truth for URLs.
63+
SITEMAP="build/docs/sitemap.xml"
64+
if [ ! -f "$SITEMAP" ]; then
65+
echo "Sitemap not found at $SITEMAP, skipping IndexNow"
66+
exit 0
67+
fi
68+
69+
URLS=$(grep -oP '<loc>\K[^<]+' "$SITEMAP" || true)
70+
71+
if [ -z "$URLS" ]; then
72+
echo "No URLs found in sitemap, skipping"
73+
exit 0
74+
fi
75+
76+
URL_COUNT=$(echo "$URLS" | wc -l)
77+
echo "Submitting $URL_COUNT docs URLs to IndexNow"
78+
79+
KEY="${INDEXNOW_KEY:-9ded60b43b8b40578588fc42b04c3e5d}"
80+
JSON_URLS=$(echo "$URLS" | jq -R -s 'split("\n") | map(select(length > 0))' || true)
81+
82+
if [ -z "$JSON_URLS" ]; then
83+
echo "Failed to build JSON URL list, skipping"
84+
exit 0
85+
fi
86+
87+
RESPONSE_FILE=$(mktemp)
88+
HTTP_CODE=$(curl -s -o "$RESPONSE_FILE" -w "%{http_code}" -X POST "https://api.indexnow.org/indexnow" \
89+
-H "Content-Type: application/json" \
90+
-d "{\"host\":\"keploy.io\",\"key\":\"$KEY\",\"urlList\":$JSON_URLS}" || echo "000")
91+
92+
echo "IndexNow response: $HTTP_CODE"
93+
if [ "$HTTP_CODE" -ge 400 ] || [ "$HTTP_CODE" = "000" ]; then
94+
echo "IndexNow submission failed (HTTP $HTTP_CODE) — will not block deployment."
95+
echo "Verify the key file is hosted at https://keploy.io/${KEY}.txt"
96+
cat "$RESPONSE_FILE" 2>/dev/null || true
97+
fi
98+
rm -f "$RESPONSE_FILE"

netlify.toml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,6 @@
99
## Note: if you are looking for Redirects
1010
# they have been moved to /static/_redirects to make it more manageable - swyx
1111

12-
[[headers]]
13-
for = "/docs/1.0.0/*"
14-
[headers.values]
15-
X-Robots-Tag = "noindex, nofollow"
16-
17-
[[headers]]
18-
for = "/docs/2.0.0/*"
19-
[headers.values]
20-
X-Robots-Tag = "noindex, nofollow"
21-
2212
# Security headers for all pages
2313
[[headers]]
2414
for = "/*"

package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
"@docusaurus/core": "3.9.2",
2626
"@docusaurus/plugin-sitemap": "3.9.2",
2727
"@docusaurus/preset-classic": "3.9.2",
28-
"webpackbar": "6.0.1",
2928
"@mdx-js/react": "^3.0.0",
3029
"ajv": "^6.12.6",
3130
"ajv-keywords": "^3.5.2",
@@ -76,7 +75,6 @@
7675
"node": ">=18.0"
7776
},
7877
"overrides": {
79-
"webpackbar": "6.0.1",
8078
"webpack": "5.97.1"
8179
}
8280
}

static/llms.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
For comprehensive details, see: /docs/llms-full.txt
66

7+
78
## About Keploy
89
Keploy (founded 2021) is a CNCF Landscape project and open-source testing platform with a growing open-source community and widely used VS Code extension. It uses eBPF kernel hooks to capture real API traffic and replay it as auto-generated tests with dependency mocks and stubs — no code instrumentation required. Keploy handles non-deterministic data (timestamps, IDs) via time-freezing and AI noise detection, eliminating flaky tests.
910

@@ -35,6 +36,13 @@ Keploy (founded 2021) is a CNCF Landscape project and open-source testing platfo
3536
- [C# / .NET](https://keploy.io/docs/quickstart/samples-csharp/): .NET + PostgreSQL sample
3637
- [Code Coverage](https://keploy.io/docs/quickstart/code-coverage/): Measure coverage of Keploy-generated tests
3738

39+
40+
## Language Guides
41+
- [Go Quick Start](https://keploy.io/docs/quickstart/golang-filter/): Gin, Echo, Fiber, Chi
42+
- [Java Quick Start](https://keploy.io/docs/quickstart/java-springboot-filter/): Spring Boot, Quarkus, Micronaut
43+
- [Node.js Quick Start](https://keploy.io/docs/quickstart/javascript-filter/): Express, Fastify, NestJS
44+
- [Python Quick Start](https://keploy.io/docs/quickstart/python-filter/): Django, Flask, FastAPI
45+
3846
## CI/CD Integration
3947
- [GitHub Actions](https://keploy.io/docs/ci-cd/github/): Continuous validation in GitHub CI
4048
- [GitLab CI](https://keploy.io/docs/ci-cd/gitlab/): Continuous validation in GitLab CI
@@ -54,6 +62,7 @@ Keploy (founded 2021) is a CNCF Landscape project and open-source testing platfo
5462
- [VS Code Extension](https://keploy.io/docs/keploy-explained/integrations-vscode/): IDE integration for test generation
5563
- [PR Agent Integration](https://keploy.io/docs/keploy-explained/integrations-pr-agent/): Automated test suggestions on pull requests
5664

65+
5766
## FAQ
5867
- [Unit Testing FAQ](https://keploy.io/docs/keploy-explained/unit-testing-faq/): Auto-generated unit tests, mock generation, coverage
5968
- [API Testing FAQ](https://keploy.io/docs/keploy-explained/api-testing-faq/): Traffic-based API test generation, regression detection

vale_styles/config/vocabularies/Base/accept.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,5 @@ total_amount
103103
created_at
104104
updated_at
105105
shipping_address_id
106+
[Ll]inux
107+
[Ee]nv

0 commit comments

Comments
 (0)