跪拜 Guibai
← Back to the summary

From Publishing Tool to Acquisition Channel: The 30-Day Node.js SEO Plan

Building a Sustainable Customer-Acquisition SEO Content System with Node.js: A 30-Day Practical Plan for Front-End Engineers

If you already have front-end and Node.js skills, and you have a backend admin system that supports publishing articles, then you should not treat it merely as a "tool for publishing articles." Instead, you should upgrade it into a measurable, iterable SEO customer-acquisition system.

Below is an execution plan aimed at "gaining initial search exposure and effective visits within 30 days." A note first: SEO cannot guarantee a large amount of organic traffic within a month, especially for new sites or highly competitive industries. But with the right technical optimization, keyword layout, content production, and data analysis, you can typically see indexing, long-tail keyword exposure, and some click growth within a month.


I. First, Clarify the Core Goals of SEO

The goal of SEO is not simply to "publish more articles," but to achieve the following results:

  1. Search engines can crawl and understand your site;
  2. Target pages get indexed;
  3. Users searching for questions related to your product see your pages;
  4. Users who enter a page are willing to continue browsing, registering, consulting, or purchasing;
  5. You can use data to judge which content is worth further investment.

It is recommended to split goals into three levels:

Level 1: Baseline Metrics

Level 2: Traffic Metrics

Level 3: Business Metrics

Do not just look at article read counts. What is really valuable is:

Organic search traffic x Page conversion rate = Business value from SEO

II. Step One: Determine Your SEO Direction

The most common reason SEO fails is starting with "industry news," "company updates," or generic knowledge articles.

A more effective approach is to build a content system around user problems and the purchase process.

1. First Identify Your Target Users

You need to answer these questions:

For example, if your product is a project management tool, users might search:

Behind these search terms are different user needs.

2. Divide Keywords into Four Categories

Category 1: Problem-type Keywords

Users are looking for solutions.

For example:

These keywords suit tutorial and methodology articles.

Category 2: Tool-type Keywords

Users already know they need a tool.

For example:

These keywords suit product introductions, feature explanations, and usage tutorials.

Category 3: Comparison-type Keywords

Users are making purchase decisions.

For example:

This kind of content usually has higher commercial value.

Category 4: Brand and Product Keywords

Users already know your product.

For example:

These pages should focus on optimizing titles, descriptions, structured data, and internal links.


III. Plan Content with a Keyword Matrix

Do not write articles based on gut feeling. It is recommended to add a "keyword planning" module to the backend, or manage with a spreadsheet first.

You can design the following fields:

Field Description
keyword Keyword
searchIntent Search intent
difficulty Competition difficulty
businessValue Business value
targetUrl Target page
contentType Content type
status Content status
publishedAt Publish time
clicks Clicks
impressions Impressions
position Average ranking
conversions Number of conversions

You can score keywords:

Keyword score =
Business value x Relevance x Rankability

For example:

Keyword Relevance Business value Difficulty Priority
Industry head term High High High Medium
Industry problem term High Medium Low High
Product comparison term High High Medium High
Generic knowledge term Low Low Medium Low

New sites should not challenge the most competitive terms from the start. It is better to first target:


IV. 30-Day SEO Execution Plan

Days 1-3: Perfect the Technical Foundation

Before starting to write articles, first ensure search engines can access and understand the site normally.

1. Basic Page Information

Every page should have its own:

Example:

<title>Project management tool recommendations: How to choose collaboration software for your team</title>

<meta
  name="description"
  content="This article introduces the core features, applicable scenarios, and selection methods of project management tools, helping teams choose more suitable collaboration software."
/>

<link
  rel="canonical"
  href="https://example.com/blog/project-management-tools"
/>

2. URL Design

Use stable, clean, readable URLs:

/blog/project-management-tools
/blog/how-to-manage-remote-team
/product/task-management

Avoid:

/article?id=123
/blog/2025/01/01/abc123
/page/1

If the system already uses numeric IDs, provide clearer URLs via slugs.

3. Generate sitemap.xml

In Node.js, use the sitemap package:

npm install sitemap

Example:

import express from 'express';
import { SitemapStream, streamToPromise } from 'sitemap';

const app = express();

app.get('/sitemap.xml', async (req, res) => {
  const sm = new SitemapStream({
    hostname: 'https://example.com'
  });

  const urls = [
    { url: '/', changefreq: 'weekly', priority: 1.0 },
    { url: '/product', changefreq: 'weekly', priority: 0.9 },
    { url: '/blog', changefreq: 'daily', priority: 0.8 },
    { url: '/blog/project-management-tools', changefreq: 'monthly', priority: 0.7 }
  ];

  urls.forEach(item => sm.write(item));
  sm.end();

  const xml = await streamToPromise(sm);
  res.type('application/xml').send(xml.toString());
});

In a real project, read published content from the database:

const articles = await Article.findAll({
  where: {
    status: 'published'
  },
  attributes: ['slug', 'updatedAt']
});

Then generate the sitemap dynamically.

4. Add robots.txt

User-agent: *
Allow: /

Disallow: /admin/
Disallow: /api/
Disallow: /login/
Disallow: /register/

Sitemap: https://example.com/sitemap.xml

Note: robots.txt cannot replace access control. The admin and APIs must rely on login authentication for protection.

5. Handle Duplicate Content

Common duplicate URLs include:

/blog/article
/blog/article/
/blog/article?source=wechat
/blog/article?utm_source=xxx

You need to unify the canonical URL and set canonical tags on pages.

If using Next.js, configure metadata in the page; if using Vue SSR, Nuxt, or a custom Node.js service, ensure the server outputs correct title and meta information.

View full version

Comments

Top 1 from juejin.cn, machine-translated. The original thread is authoritative.

WANGXC

Tears of the SEO era