docs: plan baidu indexing frontend fix
This commit is contained in:
@@ -0,0 +1,215 @@
|
||||
# Baidu Indexing Frontend Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** Correct the public indexing contract for `www.scs8888.cn` and make the homepage and free-article template expose useful SEO metadata without changing backend behavior.
|
||||
|
||||
**Architecture:** Static crawl directives and homepage semantics live in their existing files. `CommonUtil.freeArticleHref` remains the owner of the public free-article URL, while `html/mianfei.html` derives page metadata from the fetched article. A dependency-free Node regression script verifies the contract; deployment-only requirements are documented separately.
|
||||
|
||||
**Tech Stack:** Static HTML, browser JavaScript, XML, robots.txt, Node.js built-ins.
|
||||
|
||||
## Global Constraints
|
||||
|
||||
- Do not modify backend APIs, databases, or production Nginx configuration.
|
||||
- Keep all existing JavaScript data fetching and interaction behavior.
|
||||
- Index only the homepage and public free articles.
|
||||
- Public free-article URLs use `/mianfei/{id}.html`.
|
||||
- Do not include paid, authentication, publishing, user, or finance pages in sitemap.
|
||||
|
||||
---
|
||||
|
||||
### Task 1: Encode and test the indexing contract
|
||||
|
||||
**Files:**
|
||||
- Create: `tmp/seo-indexing-test.js`
|
||||
- Modify: `robots.txt`
|
||||
- Modify: `sitemap.xml`
|
||||
|
||||
**Interfaces:**
|
||||
- Consumes: public origin `https://www.scs8888.cn`
|
||||
- Produces: crawl directives and a homepage-only static sitemap
|
||||
|
||||
- [ ] **Step 1: Write the failing regression test**
|
||||
|
||||
Create a Node script that reads `robots.txt`, `sitemap.xml`, `html/index.html`, `html/mianfei.html`, and `utils/CommonUtil.js`. Assert that the old origin is absent, the new sitemap URL and homepage URL exist, only the new origin appears in `<loc>`, private routes are absent from sitemap, homepage metadata/static copy exist, the article template exposes metadata hooks, and `freeArticleHref` owns `/mianfei/{id}.html`.
|
||||
|
||||
- [ ] **Step 2: Run the test and verify RED**
|
||||
|
||||
Run: `node tmp/seo-indexing-test.js`
|
||||
|
||||
Expected: FAIL because `robots.txt` and `sitemap.xml` still contain `3d.3dyjs.cn`.
|
||||
|
||||
- [ ] **Step 3: Implement the minimal crawl-file correction**
|
||||
|
||||
Set the sitemap directive to:
|
||||
|
||||
```text
|
||||
Sitemap: https://www.scs8888.cn/sitemap.xml
|
||||
```
|
||||
|
||||
Make `sitemap.xml` contain exactly the confirmed indexable static URL:
|
||||
|
||||
```xml
|
||||
<url>
|
||||
<loc>https://www.scs8888.cn/</loc>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
```
|
||||
|
||||
Use `/html/...` paths in robots for the actual private frontend files, while also retaining root-form rules where the deployment rewrite may expose them.
|
||||
|
||||
- [ ] **Step 4: Run the focused test**
|
||||
|
||||
Run: `node tmp/seo-indexing-test.js`
|
||||
|
||||
Expected: crawl-file assertions pass; later homepage/article assertions remain RED until their tasks.
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add tmp/seo-indexing-test.js robots.txt sitemap.xml
|
||||
git commit -m "fix: correct baidu crawl configuration"
|
||||
```
|
||||
|
||||
### Task 2: Add crawlable homepage semantics
|
||||
|
||||
**Files:**
|
||||
- Modify: `html/index.html`
|
||||
- Test: `tmp/seo-indexing-test.js`
|
||||
|
||||
**Interfaces:**
|
||||
- Consumes: existing homepage dynamic renderers
|
||||
- Produces: useful initial HTML without changing dynamic containers
|
||||
|
||||
- [ ] **Step 1: Tighten the failing homepage assertions**
|
||||
|
||||
Assert the homepage contains:
|
||||
|
||||
```html
|
||||
<meta name="description"
|
||||
<link rel="canonical" href="https://www.scs8888.cn/"
|
||||
<h1 class="seo-heading">神彩算彩票数据分析与免费预测文章</h1>
|
||||
```
|
||||
|
||||
Also assert a static paragraph mentions开奖数据、走势分析和免费文章 without being inside an HTML comment.
|
||||
|
||||
- [ ] **Step 2: Run the test and verify RED**
|
||||
|
||||
Run: `node tmp/seo-indexing-test.js`
|
||||
|
||||
Expected: FAIL on missing homepage description/canonical/active H1.
|
||||
|
||||
- [ ] **Step 3: Add minimal homepage metadata and copy**
|
||||
|
||||
Add a unique description and canonical in `<head>`. Add a visually integrated SEO introduction near the existing hero content, including one active H1 and a short factual description. Do not duplicate dynamic article or draw data and do not add keyword stuffing.
|
||||
|
||||
- [ ] **Step 4: Run verification**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
node tmp/seo-indexing-test.js
|
||||
node tmp/topbar-navigation-mode-test.js
|
||||
```
|
||||
|
||||
Expected: homepage assertions and existing navigation checks pass.
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add html/index.html tmp/seo-indexing-test.js
|
||||
git commit -m "fix: add crawlable homepage metadata"
|
||||
```
|
||||
|
||||
### Task 3: Keep free-article metadata synchronized
|
||||
|
||||
**Files:**
|
||||
- Modify: `html/mianfei.html`
|
||||
- Test: `tmp/seo-indexing-test.js`
|
||||
|
||||
**Interfaces:**
|
||||
- Consumes: `articleId`, `data.title`, and `data.content` from the existing free-article detail request
|
||||
- Produces: `updateArticleSeo(data)` and a canonical URL at `https://www.scs8888.cn/mianfei/{id}.html`
|
||||
|
||||
- [ ] **Step 1: Add failing article metadata assertions**
|
||||
|
||||
Assert the template contains default description and robots metadata, a canonical link with an ID, and an `updateArticleSeo` function called by `renderArticle`.
|
||||
|
||||
- [ ] **Step 2: Run the test and verify RED**
|
||||
|
||||
Run: `node tmp/seo-indexing-test.js`
|
||||
|
||||
Expected: FAIL because `updateArticleSeo` and article meta elements do not exist.
|
||||
|
||||
- [ ] **Step 3: Implement article SEO synchronization**
|
||||
|
||||
Add default `<meta name="description">`, `<meta name="robots" content="index, follow">`, and `<link id="canonicalUrl" rel="canonical">`. Implement helpers that convert article HTML to normalized plain text, truncate the description, set `document.title` to `{article title} - 神彩算`, update description, and set canonical to:
|
||||
|
||||
```js
|
||||
`https://www.scs8888.cn/mianfei/${encodeURIComponent(articleId)}.html`
|
||||
```
|
||||
|
||||
Call the helper from the existing `renderArticle(data)` after setting the H1. Leave error handling and all article interactions unchanged.
|
||||
|
||||
- [ ] **Step 4: Run verification**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
node tmp/seo-indexing-test.js
|
||||
node tmp/cai-single-lottery-test.js
|
||||
```
|
||||
|
||||
Expected: both scripts exit 0.
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add html/mianfei.html tmp/seo-indexing-test.js
|
||||
git commit -m "fix: synchronize free article seo metadata"
|
||||
```
|
||||
|
||||
### Task 4: Document the deployment boundary and run final verification
|
||||
|
||||
**Files:**
|
||||
- Create: `docs/baidu-indexing-deployment.md`
|
||||
- Test: `tmp/seo-indexing-test.js`
|
||||
|
||||
**Interfaces:**
|
||||
- Consumes: frontend public URL contract
|
||||
- Produces: an actionable handoff for the backend deployment owner
|
||||
|
||||
- [ ] **Step 1: Add a failing documentation assertion**
|
||||
|
||||
Assert `docs/baidu-indexing-deployment.md` contains the public article rewrite, real 404 behavior, canonical host redirect, dynamic sitemap generation, Baiduspider access checks, and a clear statement that initial article-body rendering requires deployment/backend prerendering.
|
||||
|
||||
- [ ] **Step 2: Run the test and verify RED**
|
||||
|
||||
Run: `node tmp/seo-indexing-test.js`
|
||||
|
||||
Expected: FAIL because the deployment document does not exist.
|
||||
|
||||
- [ ] **Step 3: Write the deployment handoff**
|
||||
|
||||
Document requirements without inventing an unverified Nginx configuration: expected source URL, destination entry, 301 rules, 404 requirement, sitemap ownership/update triggers, response checks for normal and Baiduspider user agents, and Baidu Search Resource Platform submission steps.
|
||||
|
||||
- [ ] **Step 4: Run all relevant verification**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
node tmp/seo-indexing-test.js
|
||||
node tmp/topbar-navigation-mode-test.js
|
||||
node tmp/cai-single-lottery-test.js
|
||||
git diff --check
|
||||
```
|
||||
|
||||
Expected: all Node scripts exit 0 and `git diff --check` reports no errors.
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/baidu-indexing-deployment.md tmp/seo-indexing-test.js
|
||||
git commit -m "docs: add baidu indexing deployment handoff"
|
||||
```
|
||||
Reference in New Issue
Block a user