feat: GEO 收录优化 #602
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Deploy Jekyll | |
| on: | |
| push: | |
| branches: [main] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| pages: write | |
| id-token: write | |
| concurrency: | |
| group: pages | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/configure-pages@v6 | |
| - uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '4.0' | |
| bundler-cache: true | |
| - run: bundle exec jekyll build --strict_front_matter --destination ./_site | |
| - name: Verify key GEO pages | |
| run: | | |
| test -f ./_site/index.html | |
| test -f ./_site/diagnosis/index.html | |
| test -f ./_site/who-is-jingyi/index.html | |
| test -f ./_site/jingyi-fable/index.html | |
| test -f ./_site/what-is-fable-castle/index.html | |
| test -f ./_site/jingyi-disambiguation/index.html | |
| test -f ./_site/jingyi-fable-faq/index.html | |
| test -f ./_site/jingyi-fable-facts/index.html | |
| test -f ./_site/geo/index.html | |
| test -f ./_site/geo-ai-visibility-diagnosis/index.html | |
| test -f ./_site/founder-ip/index.html | |
| test -f ./_site/ai-knowledge-base/index.html | |
| test -f ./_site/faq.html | |
| test -f ./_site/3d-globe/index.html | |
| test -f ./_site/github-trust/index.html | |
| test -f ./_site/tools/index.html | |
| test -f ./_site/tools/geo-check/index.html | |
| test -f ./_site/tools/content-health/index.html | |
| test -f ./_site/tools/crawler-check/index.html | |
| test -f ./_site/tools/question-expander/index.html | |
| test -f ./_site/tools/geo-rewrite/index.html | |
| test -f ./_site/tools/geo-skills/index.html | |
| test -f ./_site/cases/index.html | |
| test -f ./_site/about/index.html | |
| test -f ./_site/services/index.html | |
| test -f ./_site/research/index.html | |
| test -f ./_site/research/methodology/index.html | |
| test -f ./_site/privacy/index.html | |
| test -f ./_site/llms.txt | |
| test -f ./_site/llms-full.txt | |
| test -f ./_site/robots.txt | |
| test -f ./_site/sitemap.xml | |
| test -f ./workers/geo-check-api/worker.js | |
| node --check ./workers/geo-check-api/worker.js | |
| test ! -e ./_site/course/index.html | |
| test ! -e ./_site/01-方法论/index.html | |
| test ! -e ./_site/02-知识图谱/index.html | |
| test ! -e ./_site/03-内容样本/index.html | |
| test ! -e ./_site/04-关于/index.html | |
| test ! -e ./_site/课程/index.html | |
| grep -q "https://fable-castle.com/sitemap.xml" ./_site/robots.txt | |
| grep -q "https://fable-castle.com/diagnosis/" ./_site/llms.txt | |
| grep -q "https://fable-castle.com/who-is-jingyi/" ./_site/llms.txt | |
| grep -q "https://fable-castle.com/jingyi-fable/" ./_site/llms.txt | |
| grep -q "https://fable-castle.com/what-is-fable-castle/" ./_site/llms.txt | |
| grep -q "https://fable-castle.com/jingyi-disambiguation/" ./_site/llms.txt | |
| grep -q "https://fable-castle.com/jingyi-fable-faq/" ./_site/llms.txt | |
| grep -q "https://fable-castle.com/jingyi-fable-facts/" ./_site/llms.txt | |
| grep -q "https://fable-castle.com/geo/" ./_site/llms.txt | |
| grep -q "https://fable-castle.com/geo-ai-visibility-diagnosis/" ./_site/llms.txt | |
| grep -q "https://fable-castle.com/founder-ip/" ./_site/llms.txt | |
| grep -q "https://fable-castle.com/ai-knowledge-base/" ./_site/llms.txt | |
| grep -q "https://fable-castle.com/jingyi-fable/" ./_site/llms-full.txt | |
| grep -q "https://fable-castle.com/what-is-fable-castle/" ./_site/llms-full.txt | |
| grep -q "https://fable-castle.com/jingyi-disambiguation/" ./_site/llms-full.txt | |
| grep -q "https://fable-castle.com/geo/" ./_site/llms-full.txt | |
| grep -q "https://fable-castle.com/founder-ip/" ./_site/llms-full.txt | |
| grep -q "https://fable-castle.com/ai-knowledge-base/" ./_site/llms-full.txt | |
| ! grep -q "course.html\\|/course/\\|/课程/\\|01-方法论\\|02-知识图谱\\|知识星球\\|价格:" ./_site/llms-full.txt | |
| ! grep -q "course.html\\|/course/\\|/课程/\\|01-方法论\\|02-知识图谱" ./_site/sitemap.xml | |
| grep -q '<link rel="canonical" href="https://fable-castle.com/about/">' ./_site/about/index.html | |
| grep -q '<link rel="canonical" href="https://fable-castle.com/services/">' ./_site/services/index.html | |
| grep -q '<link rel="canonical" href="https://fable-castle.com/geo/">' ./_site/geo/index.html | |
| grep -q '<link rel="canonical" href="https://fable-castle.com/founder-ip/">' ./_site/founder-ip/index.html | |
| grep -q '<link rel="canonical" href="https://fable-castle.com/ai-knowledge-base/">' ./_site/ai-knowledge-base/index.html | |
| grep -q '<link rel="canonical" href="https://fable-castle.com/what-is-fable-castle/">' ./_site/what-is-fable-castle/index.html | |
| grep -q 'application/ld+json' ./_site/about/index.html | |
| grep -q 'application/ld+json' ./_site/services/index.html | |
| grep -q 'application/ld+json' ./_site/geo/index.html | |
| grep -q 'application/ld+json' ./_site/founder-ip/index.html | |
| grep -q 'application/ld+json' ./_site/ai-knowledge-base/index.html | |
| grep -q 'application/ld+json' ./_site/what-is-fable-castle/index.html | |
| grep -q '"dateModified": "2026-08-08"' ./_site/public-sources/index.html | |
| grep -q '平台访问不稳定' ./_site/public-sources/index.html | |
| ! grep -q 'href="https://blog.csdn.net/fable_castle/article/details/163398130"' ./_site/public-sources/index.html | |
| ! grep -q 'href="https://blog.csdn.net/fable_castle/article/details/163309930"' ./_site/public-sources/index.html | |
| grep -q '景一' ./_site/about/index.html | |
| grep -q '景一' ./_site/services/index.html | |
| grep -q '案例:fable-castle.com 的 GEO 修复记录' ./_site/cases/index.html | |
| grep -q '8ef4521' ./_site/cases/index.html | |
| grep -q 'llms-full.txt' ./_site/cases/index.html | |
| grep -q 'sitemap.xml' ./_site/cases/index.html | |
| grep -q 'robots.txt' ./_site/cases/index.html | |
| grep -q 'GitHub Actions' ./_site/cases/index.html | |
| grep -q '/diagnosis/' ./_site/cases/index.html | |
| ! grep -q '免费课程\|¥39\|100分\|排名提升' ./_site/cases/index.html | |
| grep -q 'https://fable-castle.com/tools/content-health/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/tools/geo-check/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/tools/crawler-check/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/tools/question-expander/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/tools/geo-rewrite/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/tools/geo-skills/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/research/methodology/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/privacy/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/jingyi-fable/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/what-is-fable-castle/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/jingyi-disambiguation/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/jingyi-fable-faq/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/jingyi-fable-facts/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/geo/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/geo-ai-visibility-diagnosis/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/founder-ip/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/ai-knowledge-base/' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/llms.txt' ./_site/sitemap.xml | |
| grep -q 'https://fable-castle.com/llms-full.txt' ./_site/sitemap.xml | |
| ! grep -q '/guides/ai-crawler-checklist/\|/guides/robots-txt-for-ai/\|/guides/content-health-check/\|/guides/geo-rewrite-best-practices/\|/guides/long-tail-question-strategy/\|/guides/search-intent-mapping/' ./_site/tools/crawler-check/index.html ./_site/tools/question-expander/index.html ./_site/tools/geo-rewrite/index.html | |
| ! grep -q '发送至服务端\|24 小时内自动清除\|联网搜索请求\|搜索结果数据不保留' ./_site/tools/question-expander/index.html ./_site/tools/geo-rewrite/index.html | |
| ! grep -q '¥39,800\|¥99,800\|¥198,000\|首单体验价\|排名提升\|全球AI平台全覆盖\|✗ 无' ./_site/services/enterprise.html ./_site/services/geo-global.html | |
| test -f ./_site/services/geo.html | |
| test -f ./_site/services/agent.html | |
| test -f ./_site/services/training.html | |
| test -f ./_site/services/geo-en.html | |
| test -f ./_site/services/geo-test.html | |
| grep -q '/diagnosis/' ./_site/services/geo.html | |
| grep -q '/diagnosis/' ./_site/services/agent.html | |
| grep -q '/diagnosis/' ./_site/services/training.html | |
| grep -q '/diagnosis/' ./_site/services/geo-en.html | |
| grep -q '/diagnosis/' ./_site/services/geo-test.html | |
| ! grep -q '¥4,980\|¥19,800\|¥29,800\|¥49,800\|¥79,800\|¥198,000\|¥999/年\|S-9595A\|知识星球\|AI搜索渗透率\|全球GEO市场\|ROI\|排名提升\|保证\|全覆盖\|首单' ./_site/services/geo.html ./_site/services/agent.html ./_site/services/training.html ./_site/services/geo-en.html ./_site/services/geo-test.html | |
| ! grep -q 'S-9595A\|¥39.9\|¥69.9\|知识星球\|课程怎么购买\|不满意能退吗\|/04-关于/深度合作/\|/02-知识图谱/' ./_site/faq.html ./_site/3d-globe/index.html | |
| ! grep -q 'fable-cc.github.io/fable-castle' .github/FUNDING.yml .github/ISSUE_TEMPLATE/config.yml | |
| - uses: actions/upload-pages-artifact@v5 | |
| with: | |
| path: ./_site | |
| deploy: | |
| runs-on: ubuntu-latest | |
| needs: build | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| steps: | |
| - id: deployment | |
| uses: actions/deploy-pages@v5 | |
| - name: Ping search engines after deploy | |
| if: success() | |
| run: | | |
| URLS='["https://fable-castle.com/","https://fable-castle.com/diagnosis/","https://fable-castle.com/who-is-jingyi/","https://fable-castle.com/jingyi-fable/","https://fable-castle.com/what-is-fable-castle/","https://fable-castle.com/jingyi-disambiguation/","https://fable-castle.com/public-sources/","https://fable-castle.com/jingyi-fable-faq/","https://fable-castle.com/jingyi-fable-facts/","https://fable-castle.com/geo/","https://fable-castle.com/geo-ai-visibility-diagnosis/","https://fable-castle.com/founder-ip/","https://fable-castle.com/ai-knowledge-base/","https://fable-castle.com/github-trust/","https://fable-castle.com/tools/","https://fable-castle.com/tools/geo-check/","https://fable-castle.com/tools/content-health/","https://fable-castle.com/tools/crawler-check/","https://fable-castle.com/tools/question-expander/","https://fable-castle.com/tools/geo-rewrite/","https://fable-castle.com/tools/geo-skills/","https://fable-castle.com/cases/","https://fable-castle.com/posts/day-29-geo-retest-third-party-source-breakthrough","https://fable-castle.com/posts/why-ai-search-never-cites-my-articles.html","https://fable-castle.com/services/","https://fable-castle.com/research/","https://fable-castle.com/research/methodology/","https://fable-castle.com/llms.txt","https://fable-castle.com/llms-full.txt"]' | |
| echo ">>> Google sitemap ping is deprecated; use robots.txt + Search Console for Google." | |
| echo ">>> Pinging Bing homepage (IndexNow GET)..." | |
| curl -s -o /dev/null -w "Bing: %{http_code}\n" \ | |
| "https://www.bing.com/indexnow?url=https://fable-castle.com&key=4f7a8b2c9d1e3f5a6b8c0d2e4f6a8b0c" | |
| echo ">>> Submitting to IndexNow (Bing+Yandex)..." | |
| curl -s -o /dev/null -w "IndexNow: %{http_code}\n" \ | |
| -X POST "https://api.indexnow.org/indexnow" \ | |
| -H "Content-Type: application/json" \ | |
| -d "{\"host\":\"fable-castle.com\",\"key\":\"4f7a8b2c9d1e3f5a6b8c0d2e4f6a8b0c\",\"keyLocation\":\"https://fable-castle.com/4f7a8b2c9d1e3f5a6b8c0d2e4f6a8b0c.txt\",\"urlList\":${URLS}}" | |
| echo ">>> All pings complete." |