@knowcode/doc-builder 1.5.3 → 1.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/CLAUDE.md +3 -0
- package/README.md +48 -30
- package/cli.js +245 -0
- package/doc-builder.config.js +7 -1
- package/html/README.html +7 -3
- package/html/css/notion-style.css +22 -2
- package/html/documentation-index.html +7 -3
- package/html/guides/authentication-guide.html +7 -3
- package/html/guides/claude-workflow-guide.html +7 -3
- package/html/guides/documentation-standards.html +7 -3
- package/html/guides/google-site-verification-guide.html +338 -0
- package/html/guides/seo-guide.html +7 -3
- package/html/guides/troubleshooting-guide.html +7 -3
- package/html/index.html +7 -3
- package/html/js/main.js +53 -29
- package/html/sitemap.xml +19 -13
- package/html/vercel-cli-setup-guide.html +7 -3
- package/html/vercel-first-time-setup-guide.html +7 -3
- package/lib/config.js +4 -0
- package/lib/core-builder.js +42 -20
- package/lib/seo.js +58 -8
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,57 @@ All notable changes to @knowcode/doc-builder will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.5.5] - 2025-07-22
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Front Matter Support**: Parse YAML front matter for page-specific SEO customization
|
|
12
|
+
- **SEO Check Command**: New `seo-check` command to analyze and report SEO issues
|
|
13
|
+
- **Smart Description Extraction**: Intelligent extraction of intro paragraphs for better descriptions
|
|
14
|
+
- **Enhanced Title Generation**: SEO-optimized titles with customizable templates
|
|
15
|
+
- **Page-specific Keywords**: Support for front matter keywords plus auto-extraction
|
|
16
|
+
- **Comprehensive SEO Guide**: Detailed documentation for SEO optimization
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- Improved `generateDescription` with smart mode for better meta descriptions
|
|
20
|
+
- Title generation now respects 50-60 character limit with smart truncation
|
|
21
|
+
- Keywords can be defined per-page via front matter
|
|
22
|
+
- SEO configuration expanded with new options
|
|
23
|
+
|
|
24
|
+
### Features
|
|
25
|
+
- **Front Matter SEO**: Add custom title, description, and keywords per page
|
|
26
|
+
- **Title Templates**: Configure title format with `{pageTitle} | {siteName}` patterns
|
|
27
|
+
- **Auto Keywords**: Automatically extract relevant keywords from content
|
|
28
|
+
- **SEO Analysis**: Run `doc-builder seo-check` to find and fix SEO issues
|
|
29
|
+
- **Smart Defaults**: Intelligent fallbacks for missing SEO data
|
|
30
|
+
|
|
31
|
+
### Configuration
|
|
32
|
+
```javascript
|
|
33
|
+
seo: {
|
|
34
|
+
titleTemplate: '{pageTitle} | {siteName}',
|
|
35
|
+
autoKeywords: true,
|
|
36
|
+
keywordLimit: 7,
|
|
37
|
+
descriptionFallback: 'smart'
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## [1.5.4] - 2025-07-22
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
- New CLI command `google-verify` to add Google site verification meta tags
|
|
45
|
+
- Support for custom meta tags in the SEO configuration
|
|
46
|
+
- Comprehensive guide for Google Search Console verification
|
|
47
|
+
- Ability to update existing verification codes
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
- Extended `generateMetaTags` function to support custom meta tags
|
|
51
|
+
- Updated config structure to include `seo.customMetaTags` array
|
|
52
|
+
|
|
53
|
+
### Features
|
|
54
|
+
- Run `doc-builder google-verify YOUR_CODE` to add verification
|
|
55
|
+
- Verification meta tag automatically added to all generated pages
|
|
56
|
+
- Support for multiple custom meta tags (Google, Bing, Yandex, etc.)
|
|
57
|
+
- Safe to commit verification codes to repositories
|
|
58
|
+
|
|
8
59
|
## [1.5.3] - 2025-07-22
|
|
9
60
|
|
|
10
61
|
### Fixed
|
package/CLAUDE.md
CHANGED
|
@@ -312,6 +312,9 @@ build(config).then(() => {
|
|
|
312
312
|
|
|
313
313
|
MIT License - See LICENSE file for details
|
|
314
314
|
|
|
315
|
+
### NPM Features Documentation
|
|
316
|
+
- When we add new features - add it to the NPM documented bullet point features - if its a big feature give it a section
|
|
317
|
+
|
|
315
318
|
---
|
|
316
319
|
|
|
317
320
|
**Note**: This project was extracted from the cybersolstice monorepo on 2025-07-21 with full git history preservation.
|
package/README.md
CHANGED
|
@@ -4,17 +4,11 @@ Beautiful documentation with the least effort possible. A zero-configuration doc
|
|
|
4
4
|
|
|
5
5
|
🔗 **[View Live Example](https://doc-builder-delta.vercel.app)** - See what your documentation will look like!
|
|
6
6
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
### 🚀 System & Deployment (docs:)
|
|
10
|
-
- 🔄 **UPDATE**: [Claude + CLAUDE.md Documentation Workflow Guide](docs/claude-workflow-guide.md) - Documentation updates and improvements
|
|
11
|
-
- 🔄 **MAJOR UPDATE**: [Documentation Index](docs/documentation-index.md) - Significant updates with enhanced functionality and coverage
|
|
12
|
-
- 🔄 **MAJOR UPDATE**: [Document Standards for @knowcode/doc-builder](docs/guides/DOCUMENT-STANDARDS.md) - Significant updates with enhanced functionality and coverage
|
|
13
|
-
- 🔄 **UPDATE**: [@knowcode/doc-builder](docs/README.md) - Documentation updates and improvements
|
|
14
|
-
- 🔄 **UPDATE**: [Document Standards for @knowcode/doc-builder](docs/guides/document-standards.md) - Documentation updates and improvements
|
|
15
|
-
|
|
16
|
-
**Total Changes**: 0+ new documents, 5+ updates and improvements across 5 files
|
|
7
|
+
## TL:DR
|
|
17
8
|
|
|
9
|
+
```
|
|
10
|
+
npx @knowcode/doc-builder deploy
|
|
11
|
+
```
|
|
18
12
|
|
|
19
13
|
## Why This Project Exists
|
|
20
14
|
|
|
@@ -28,7 +22,7 @@ The main premise of @knowcode/doc-builder is simple: **create beautiful document
|
|
|
28
22
|
- **Converts** markdown to HTML with syntax highlighting and diagram support
|
|
29
23
|
- **Styles** everything with a clean, Notion-inspired theme
|
|
30
24
|
- **Deploys** to Vercel with a single command - leveraging their generous free tier
|
|
31
|
-
- **Provides** optional features like authentication, dark mode, and changelog generation
|
|
25
|
+
- **Provides** optional features like authentication, dark mode, and changelog generation, SEO
|
|
32
26
|
|
|
33
27
|
Perfect for project documentation, API references, knowledge bases, or any content written in markdown.
|
|
34
28
|
|
|
@@ -55,6 +49,9 @@ This aligns perfectly with our mission: beautiful documentation should be access
|
|
|
55
49
|
- 🔄 **Live Reload** - Development server with hot reloading
|
|
56
50
|
- ☁️ **Vercel Integration** - One-command deployment to Vercel
|
|
57
51
|
- 🔍 **SEO Optimized** - Meta tags, Open Graph, Twitter Cards, and structured data
|
|
52
|
+
- ✅ **Google Site Verification** - Easy Google Search Console verification with CLI command
|
|
53
|
+
- 📝 **Front Matter SEO** - Per-page titles, descriptions, and keywords with YAML front matter
|
|
54
|
+
- 🎯 **SEO Analysis** - Built-in `seo-check` command to optimize your content
|
|
58
55
|
- 📦 **Self-Contained** - No configuration or setup required
|
|
59
56
|
- 🤖 **Claude Code Ready** - Optimized for AI-generated documentation workflows
|
|
60
57
|
|
|
@@ -106,7 +103,7 @@ After deployment, go to your Vercel dashboard:
|
|
|
106
103
|
3. Set to **Disabled** for public access
|
|
107
104
|
4. Or configure authentication for private docs
|
|
108
105
|
|
|
109
|
-
## Configuration
|
|
106
|
+
## Configuration (optional - can be managed with CLI)
|
|
110
107
|
|
|
111
108
|
Create `doc-builder.config.js` in your project root:
|
|
112
109
|
|
|
@@ -153,6 +150,44 @@ npx @knowcode/doc-builder set-production-url https://my-custom-domain.com
|
|
|
153
150
|
|
|
154
151
|
This is useful when you have a custom domain or Vercel alias that differs from the auto-detected URL.
|
|
155
152
|
|
|
153
|
+
### google-verify
|
|
154
|
+
|
|
155
|
+
Add Google site verification meta tag for Google Search Console:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
# Add your verification code
|
|
159
|
+
npx @knowcode/doc-builder google-verify YOUR_VERIFICATION_CODE
|
|
160
|
+
|
|
161
|
+
# Example
|
|
162
|
+
npx @knowcode/doc-builder google-verify FtzcDTf5BQ9K5EfnGazQkgU2U4FiN3ITzM7gHwqUAqQ
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
This adds the verification meta tag to all generated HTML pages, allowing you to verify ownership in Google Search Console. See the [Google Site Verification Guide](docs/guides/google-site-verification-guide.md) for complete details.
|
|
166
|
+
|
|
167
|
+
### seo-check
|
|
168
|
+
|
|
169
|
+
Analyze and optimize your documentation's SEO:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# Check all pages for SEO issues
|
|
173
|
+
npx @knowcode/doc-builder seo-check
|
|
174
|
+
|
|
175
|
+
# Check a specific page
|
|
176
|
+
npx @knowcode/doc-builder seo-check docs/guide.md
|
|
177
|
+
|
|
178
|
+
# Future: Auto-fix common issues
|
|
179
|
+
npx @knowcode/doc-builder seo-check --fix
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
This command analyzes:
|
|
183
|
+
- Title length and optimization (50-60 characters)
|
|
184
|
+
- Meta descriptions (140-160 characters)
|
|
185
|
+
- Keywords usage and relevance
|
|
186
|
+
- Front matter SEO fields
|
|
187
|
+
- Content quality signals
|
|
188
|
+
|
|
189
|
+
See the [SEO Optimization Guide](docs/guides/seo-optimization-guide.md) for best practices.
|
|
190
|
+
|
|
156
191
|
### setup-seo
|
|
157
192
|
Interactive SEO configuration wizard:
|
|
158
193
|
```bash
|
|
@@ -168,7 +203,7 @@ This wizard helps you set up:
|
|
|
168
203
|
|
|
169
204
|
See the [SEO Guide](docs/guides/seo-guide.md) for complete details.
|
|
170
205
|
|
|
171
|
-
### build
|
|
206
|
+
### build (defaults will work just fine)
|
|
172
207
|
Build the documentation site to static HTML:
|
|
173
208
|
```bash
|
|
174
209
|
doc-builder build [options]
|
|
@@ -189,23 +224,6 @@ Examples:
|
|
|
189
224
|
doc-builder build --config my-config.js # Use custom config
|
|
190
225
|
```
|
|
191
226
|
|
|
192
|
-
### dev
|
|
193
|
-
Start development server with live reload:
|
|
194
|
-
```bash
|
|
195
|
-
doc-builder dev [options]
|
|
196
|
-
|
|
197
|
-
Options:
|
|
198
|
-
-c, --config <path> Path to config file (default: "doc-builder.config.js")
|
|
199
|
-
-p, --port <port> Port to run dev server on (default: 3000)
|
|
200
|
-
-h, --host <host> Host to bind to (default: localhost)
|
|
201
|
-
--no-open Don't open browser automatically
|
|
202
|
-
|
|
203
|
-
Examples:
|
|
204
|
-
doc-builder dev # Start on http://localhost:3000
|
|
205
|
-
doc-builder dev --port 8080 # Use custom port
|
|
206
|
-
doc-builder dev --host 0.0.0.0 # Allow external connections
|
|
207
|
-
```
|
|
208
|
-
|
|
209
227
|
### deploy
|
|
210
228
|
Deploy documentation to Vercel (requires Vercel CLI):
|
|
211
229
|
```bash
|
package/cli.js
CHANGED
|
@@ -10,6 +10,7 @@ const { build } = require('./lib/builder');
|
|
|
10
10
|
const { startDevServer } = require('./lib/dev-server');
|
|
11
11
|
const { deployToVercel, setupVercelProject, prepareDeployment } = require('./lib/deploy');
|
|
12
12
|
const { loadConfig, createDefaultConfig } = require('./lib/config');
|
|
13
|
+
const { generateDescription } = require('./lib/seo');
|
|
13
14
|
const { execSync } = require('child_process');
|
|
14
15
|
|
|
15
16
|
// Package info
|
|
@@ -118,6 +119,250 @@ ${chalk.yellow('Examples:')}
|
|
|
118
119
|
}
|
|
119
120
|
});
|
|
120
121
|
|
|
122
|
+
// Google Site Verification command
|
|
123
|
+
program
|
|
124
|
+
.command('google-verify <verification-code>')
|
|
125
|
+
.description('Add Google site verification meta tag to all pages')
|
|
126
|
+
.option('-c, --config <path>', 'path to config file (default: doc-builder.config.js)')
|
|
127
|
+
.addHelpText('after', `
|
|
128
|
+
${chalk.yellow('Examples:')}
|
|
129
|
+
${chalk.gray('$')} doc-builder google-verify FtzcDTf5BQ9K5EfnGazQkgU2U4FiN3ITzM7gHwqUAqQ
|
|
130
|
+
${chalk.gray('$')} doc-builder google-verify YOUR_VERIFICATION_CODE
|
|
131
|
+
|
|
132
|
+
${chalk.yellow('This will add the Google site verification meta tag to all generated HTML pages.')}
|
|
133
|
+
${chalk.yellow('Get your verification code from Google Search Console.')}
|
|
134
|
+
`)
|
|
135
|
+
.action(async (verificationCode, options) => {
|
|
136
|
+
try {
|
|
137
|
+
const configPath = path.join(process.cwd(), options.config || 'doc-builder.config.js');
|
|
138
|
+
let config;
|
|
139
|
+
|
|
140
|
+
if (fs.existsSync(configPath)) {
|
|
141
|
+
// Load existing config
|
|
142
|
+
delete require.cache[require.resolve(configPath)];
|
|
143
|
+
config = require(configPath);
|
|
144
|
+
} else {
|
|
145
|
+
console.log(chalk.yellow('⚠️ No config file found. Creating one...'));
|
|
146
|
+
await createDefaultConfig();
|
|
147
|
+
config = require(configPath);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// Ensure SEO section exists
|
|
151
|
+
if (!config.seo) {
|
|
152
|
+
config.seo = {
|
|
153
|
+
enabled: true,
|
|
154
|
+
customMetaTags: []
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (!config.seo.customMetaTags) {
|
|
159
|
+
config.seo.customMetaTags = [];
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Check if Google verification already exists
|
|
163
|
+
const googleVerifyIndex = config.seo.customMetaTags.findIndex(tag =>
|
|
164
|
+
tag.name === 'google-site-verification'
|
|
165
|
+
);
|
|
166
|
+
|
|
167
|
+
const newTag = {
|
|
168
|
+
name: 'google-site-verification',
|
|
169
|
+
content: verificationCode
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
if (googleVerifyIndex >= 0) {
|
|
173
|
+
// Update existing
|
|
174
|
+
config.seo.customMetaTags[googleVerifyIndex] = newTag;
|
|
175
|
+
console.log(chalk.green(`✅ Updated Google site verification code`));
|
|
176
|
+
} else {
|
|
177
|
+
// Add new
|
|
178
|
+
config.seo.customMetaTags.push(newTag);
|
|
179
|
+
console.log(chalk.green(`✅ Added Google site verification code`));
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Write updated config
|
|
183
|
+
const configContent = `module.exports = ${JSON.stringify(config, null, 2)};\n`;
|
|
184
|
+
fs.writeFileSync(configPath, configContent);
|
|
185
|
+
|
|
186
|
+
console.log(chalk.gray(`\nThe following meta tag will be added to all pages:`));
|
|
187
|
+
console.log(chalk.cyan(`<meta name="google-site-verification" content="${verificationCode}" />`));
|
|
188
|
+
console.log(chalk.gray(`\nRun ${chalk.cyan('doc-builder build')} to regenerate your documentation.`));
|
|
189
|
+
} catch (error) {
|
|
190
|
+
console.error(chalk.red('Failed to add Google verification:'), error.message);
|
|
191
|
+
process.exit(1);
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
// SEO Check command
|
|
196
|
+
program
|
|
197
|
+
.command('seo-check [path]')
|
|
198
|
+
.description('Analyze SEO for your documentation pages')
|
|
199
|
+
.option('-c, --config <path>', 'path to config file (default: doc-builder.config.js)')
|
|
200
|
+
.option('--fix', 'auto-fix common SEO issues')
|
|
201
|
+
.addHelpText('after', `
|
|
202
|
+
${chalk.yellow('Examples:')}
|
|
203
|
+
${chalk.gray('$')} doc-builder seo-check ${chalk.gray('# Check all pages')}
|
|
204
|
+
${chalk.gray('$')} doc-builder seo-check docs/guide.md ${chalk.gray('# Check specific page')}
|
|
205
|
+
${chalk.gray('$')} doc-builder seo-check --fix ${chalk.gray('# Auto-fix issues')}
|
|
206
|
+
|
|
207
|
+
${chalk.yellow('This command analyzes:')}
|
|
208
|
+
• Title length and optimization (50-60 characters)
|
|
209
|
+
• Meta descriptions (140-160 characters)
|
|
210
|
+
• Keywords usage and relevance
|
|
211
|
+
• Front matter SEO fields
|
|
212
|
+
• Duplicate content issues
|
|
213
|
+
`)
|
|
214
|
+
.action(async (filePath, options) => {
|
|
215
|
+
try {
|
|
216
|
+
const config = await loadConfig(options.config);
|
|
217
|
+
const docsDir = path.resolve(config.docsDir || 'docs');
|
|
218
|
+
|
|
219
|
+
console.log(chalk.cyan('🔍 Analyzing SEO...'));
|
|
220
|
+
|
|
221
|
+
// Get files to check
|
|
222
|
+
let files = [];
|
|
223
|
+
if (filePath) {
|
|
224
|
+
const fullPath = path.resolve(filePath);
|
|
225
|
+
if (await fs.pathExists(fullPath)) {
|
|
226
|
+
files = [fullPath];
|
|
227
|
+
} else {
|
|
228
|
+
console.error(chalk.red(`File not found: ${filePath}`));
|
|
229
|
+
process.exit(1);
|
|
230
|
+
}
|
|
231
|
+
} else {
|
|
232
|
+
// Get all markdown files
|
|
233
|
+
const getAllFiles = async (dir) => {
|
|
234
|
+
const results = [];
|
|
235
|
+
const items = await fs.readdir(dir);
|
|
236
|
+
for (const item of items) {
|
|
237
|
+
const fullPath = path.join(dir, item);
|
|
238
|
+
const stat = await fs.stat(fullPath);
|
|
239
|
+
if (stat.isDirectory() && !item.startsWith('.')) {
|
|
240
|
+
results.push(...await getAllFiles(fullPath));
|
|
241
|
+
} else if (item.endsWith('.md')) {
|
|
242
|
+
results.push(fullPath);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return results;
|
|
246
|
+
};
|
|
247
|
+
files = await getAllFiles(docsDir);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Analyze each file
|
|
251
|
+
const issues = [];
|
|
252
|
+
const suggestions = [];
|
|
253
|
+
|
|
254
|
+
for (const file of files) {
|
|
255
|
+
const content = await fs.readFile(file, 'utf-8');
|
|
256
|
+
const { data: frontMatter, content: mainContent } = matter(content);
|
|
257
|
+
const relativePath = path.relative(docsDir, file);
|
|
258
|
+
|
|
259
|
+
// Extract current metadata
|
|
260
|
+
const h1Match = mainContent.match(/^#\s+(.+)$/m);
|
|
261
|
+
const h1Title = h1Match ? h1Match[1] : null;
|
|
262
|
+
const title = frontMatter.title || h1Title || path.basename(file, '.md');
|
|
263
|
+
const description = frontMatter.description || generateDescription(mainContent, 'smart');
|
|
264
|
+
const keywords = frontMatter.keywords || [];
|
|
265
|
+
|
|
266
|
+
// Check title
|
|
267
|
+
const titleLength = title.length;
|
|
268
|
+
if (titleLength > 60) {
|
|
269
|
+
issues.push({
|
|
270
|
+
file: relativePath,
|
|
271
|
+
type: 'title',
|
|
272
|
+
message: `Title too long (${titleLength} chars, max 60)`,
|
|
273
|
+
current: title,
|
|
274
|
+
suggestion: title.substring(0, 57) + '...'
|
|
275
|
+
});
|
|
276
|
+
} else if (titleLength < 30) {
|
|
277
|
+
suggestions.push({
|
|
278
|
+
file: relativePath,
|
|
279
|
+
type: 'title',
|
|
280
|
+
message: `Title might be too short (${titleLength} chars, ideal 50-60)`
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// Check description
|
|
285
|
+
const descLength = description.length;
|
|
286
|
+
if (descLength > 160) {
|
|
287
|
+
issues.push({
|
|
288
|
+
file: relativePath,
|
|
289
|
+
type: 'description',
|
|
290
|
+
message: `Description too long (${descLength} chars, max 160)`,
|
|
291
|
+
current: description,
|
|
292
|
+
suggestion: description.substring(0, 157) + '...'
|
|
293
|
+
});
|
|
294
|
+
} else if (descLength < 120) {
|
|
295
|
+
suggestions.push({
|
|
296
|
+
file: relativePath,
|
|
297
|
+
type: 'description',
|
|
298
|
+
message: `Description might be too short (${descLength} chars, ideal 140-160)`
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// Check keywords
|
|
303
|
+
if (keywords.length === 0 && !frontMatter.description) {
|
|
304
|
+
suggestions.push({
|
|
305
|
+
file: relativePath,
|
|
306
|
+
type: 'keywords',
|
|
307
|
+
message: 'No keywords defined in front matter'
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// Check for front matter
|
|
312
|
+
if (!frontMatter.title && !frontMatter.description) {
|
|
313
|
+
suggestions.push({
|
|
314
|
+
file: relativePath,
|
|
315
|
+
type: 'frontmatter',
|
|
316
|
+
message: 'No SEO front matter found'
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// Display results
|
|
322
|
+
console.log(`\n${chalk.cyan('📊 SEO Analysis Complete')}\n`);
|
|
323
|
+
console.log(`Analyzed ${files.length} files\n`);
|
|
324
|
+
|
|
325
|
+
if (issues.length === 0 && suggestions.length === 0) {
|
|
326
|
+
console.log(chalk.green('✅ No SEO issues found!'));
|
|
327
|
+
} else {
|
|
328
|
+
if (issues.length > 0) {
|
|
329
|
+
console.log(chalk.red(`❌ Found ${issues.length} issues:\n`));
|
|
330
|
+
issues.forEach(issue => {
|
|
331
|
+
console.log(chalk.red(` ${issue.file}:`));
|
|
332
|
+
console.log(chalk.yellow(` ${issue.message}`));
|
|
333
|
+
if (issue.suggestion) {
|
|
334
|
+
console.log(chalk.gray(` Suggestion: ${issue.suggestion.substring(0, 50)}...`));
|
|
335
|
+
}
|
|
336
|
+
console.log('');
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
if (suggestions.length > 0) {
|
|
341
|
+
console.log(chalk.yellow(`💡 ${suggestions.length} suggestions:\n`));
|
|
342
|
+
suggestions.forEach(suggestion => {
|
|
343
|
+
console.log(chalk.yellow(` ${suggestion.file}: ${suggestion.message}`));
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
console.log(`\n${chalk.cyan('💡 Tips:')}`);
|
|
348
|
+
console.log(' • Add front matter to customize SEO per page');
|
|
349
|
+
console.log(' • Keep titles between 50-60 characters');
|
|
350
|
+
console.log(' • Write descriptions between 140-160 characters');
|
|
351
|
+
console.log(' • Include relevant keywords in front matter');
|
|
352
|
+
console.log(`\n${chalk.gray('Example front matter:')}`);
|
|
353
|
+
console.log(chalk.gray('---'));
|
|
354
|
+
console.log(chalk.gray('title: "Your SEO Optimized Title Here"'));
|
|
355
|
+
console.log(chalk.gray('description: "A compelling description between 140-160 characters that includes keywords and encourages clicks."'));
|
|
356
|
+
console.log(chalk.gray('keywords: ["keyword1", "keyword2", "keyword3"]'));
|
|
357
|
+
console.log(chalk.gray('---'));
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
} catch (error) {
|
|
361
|
+
console.error(chalk.red('Failed to analyze SEO:'), error.message);
|
|
362
|
+
process.exit(1);
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
|
|
121
366
|
// Set Production URL command
|
|
122
367
|
program
|
|
123
368
|
.command('set-production-url <url>')
|
package/doc-builder.config.js
CHANGED
|
@@ -29,6 +29,12 @@ module.exports = {
|
|
|
29
29
|
"organization": {
|
|
30
30
|
"name": "Knowcode Ltd",
|
|
31
31
|
"url": "https://knowcode.tech"
|
|
32
|
-
}
|
|
32
|
+
},
|
|
33
|
+
"customMetaTags": [
|
|
34
|
+
{
|
|
35
|
+
"name": "google-site-verification",
|
|
36
|
+
"content": "FtzcDTf5BQ9K5EfnGazQkgU2U4FiN3ITzM7gHwqUAqQ"
|
|
37
|
+
}
|
|
38
|
+
]
|
|
33
39
|
}
|
|
34
40
|
};
|
package/html/README.html
CHANGED
|
@@ -28,6 +28,9 @@
|
|
|
28
28
|
<meta name="twitter:description" content="@knowcode/doc-builder.">
|
|
29
29
|
<meta name="twitter:image" content="https://doc-builder-delta.vercel.app/og-default.png">
|
|
30
30
|
|
|
31
|
+
<!-- Custom Meta Tags -->
|
|
32
|
+
<meta name="google-site-verification" content="FtzcDTf5BQ9K5EfnGazQkgU2U4FiN3ITzM7gHwqUAqQ">
|
|
33
|
+
|
|
31
34
|
<!-- Fonts -->
|
|
32
35
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
33
36
|
|
|
@@ -58,8 +61,8 @@
|
|
|
58
61
|
"name": "Knowcode Ltd",
|
|
59
62
|
"url": "https://knowcode.tech"
|
|
60
63
|
},
|
|
61
|
-
"datePublished": "2025-07-
|
|
62
|
-
"dateModified": "2025-07-
|
|
64
|
+
"datePublished": "2025-07-22T07:02:21.490Z",
|
|
65
|
+
"dateModified": "2025-07-22T07:02:21.490Z",
|
|
63
66
|
"mainEntityOfPage": {
|
|
64
67
|
"@type": "WebPage",
|
|
65
68
|
"@id": "https://doc-builder-delta.vercel.app/README.html"
|
|
@@ -92,7 +95,7 @@
|
|
|
92
95
|
|
|
93
96
|
<div class="header-actions">
|
|
94
97
|
<div class="deployment-info">
|
|
95
|
-
<span class="deployment-date" title="Built with doc-builder v1.5.
|
|
98
|
+
<span class="deployment-date" title="Built with doc-builder v1.5.4">Last updated: Jul 22, 2025, 07:02 AM UTC</span>
|
|
96
99
|
</div>
|
|
97
100
|
|
|
98
101
|
|
|
@@ -153,6 +156,7 @@
|
|
|
153
156
|
<a href="/guides/authentication-guide.html" class="nav-item" data-tooltip="This guide explains how to configure and use the built-in authentication feature in @knowcode/doc-builder to protect your documentation with basic..."><i class="fas fa-file-alt"></i> Authentication Guide</a>
|
|
154
157
|
<a href="/guides/claude-workflow-guide.html" class="nav-item" data-tooltip="This guide demonstrates an efficient workflow for using Claude Code with a refined CLAUDE.md file to create high-quality documentation and deploy it..."><i class="fas fa-file-alt"></i> Claude Workflow Guide</a>
|
|
155
158
|
<a href="/guides/documentation-standards.html" class="nav-item" data-tooltip="This document defines the documentation standards and conventions for the @knowcode/doc-builder project."><i class="fas fa-file-alt"></i> Documentation Standards</a>
|
|
159
|
+
<a href="/guides/google-site-verification-guide.html" class="nav-item" data-tooltip="Google Search Console verification allows you to: Monitor your site's performance in Google Search Submit sitemaps for better indexing View search..."><i class="fas fa-file-alt"></i> Google Site Verification Guide</a>
|
|
156
160
|
<a href="/guides/seo-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder includes comprehensive SEO (Search Engine Optimization) features to help your documentation rank better in search results and..."><i class="fas fa-file-alt"></i> Seo Guide</a>
|
|
157
161
|
<a href="/guides/troubleshooting-guide.html" class="nav-item" data-tooltip="This guide helps you resolve common issues when using @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Troubleshooting Guide</a></div></div>
|
|
158
162
|
</nav>
|
|
@@ -954,19 +954,39 @@ tr:hover {
|
|
|
954
954
|
|
|
955
955
|
/* Hide sidebar on mobile */
|
|
956
956
|
.sidebar {
|
|
957
|
-
position:
|
|
957
|
+
position: fixed;
|
|
958
958
|
top: calc(var(--header-height) + var(--breadcrumb-height));
|
|
959
959
|
left: 0;
|
|
960
960
|
height: calc(100vh - var(--header-height) - var(--breadcrumb-height));
|
|
961
|
-
z-index:
|
|
961
|
+
z-index: 1002; /* Above header and floating button */
|
|
962
962
|
transform: translateX(-100%);
|
|
963
963
|
transition: transform var(--duration-normal) var(--easing-out);
|
|
964
|
+
box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15); /* Add shadow for depth */
|
|
964
965
|
}
|
|
965
966
|
|
|
966
967
|
.sidebar.open {
|
|
967
968
|
transform: translateX(0);
|
|
968
969
|
}
|
|
969
970
|
|
|
971
|
+
/* Mobile menu overlay */
|
|
972
|
+
.sidebar-overlay {
|
|
973
|
+
display: none;
|
|
974
|
+
position: fixed;
|
|
975
|
+
top: 0;
|
|
976
|
+
left: 0;
|
|
977
|
+
right: 0;
|
|
978
|
+
bottom: 0;
|
|
979
|
+
background: rgba(0, 0, 0, 0.5);
|
|
980
|
+
z-index: 1001; /* Below sidebar but above content */
|
|
981
|
+
opacity: 0;
|
|
982
|
+
transition: opacity var(--duration-normal);
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
.sidebar-overlay.active {
|
|
986
|
+
display: block;
|
|
987
|
+
opacity: 1;
|
|
988
|
+
}
|
|
989
|
+
|
|
970
990
|
.main-wrapper {
|
|
971
991
|
margin-left: 0;
|
|
972
992
|
margin-top: var(--header-height); /* Only account for fixed header on mobile */
|
|
@@ -28,6 +28,9 @@
|
|
|
28
28
|
<meta name="twitter:description" content="Documentation Index.">
|
|
29
29
|
<meta name="twitter:image" content="https://doc-builder-delta.vercel.app/og-default.png">
|
|
30
30
|
|
|
31
|
+
<!-- Custom Meta Tags -->
|
|
32
|
+
<meta name="google-site-verification" content="FtzcDTf5BQ9K5EfnGazQkgU2U4FiN3ITzM7gHwqUAqQ">
|
|
33
|
+
|
|
31
34
|
<!-- Fonts -->
|
|
32
35
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
33
36
|
|
|
@@ -58,8 +61,8 @@
|
|
|
58
61
|
"name": "Knowcode Ltd",
|
|
59
62
|
"url": "https://knowcode.tech"
|
|
60
63
|
},
|
|
61
|
-
"datePublished": "2025-07-
|
|
62
|
-
"dateModified": "2025-07-
|
|
64
|
+
"datePublished": "2025-07-22T07:02:21.500Z",
|
|
65
|
+
"dateModified": "2025-07-22T07:02:21.500Z",
|
|
63
66
|
"mainEntityOfPage": {
|
|
64
67
|
"@type": "WebPage",
|
|
65
68
|
"@id": "https://doc-builder-delta.vercel.app/documentation-index.html"
|
|
@@ -92,7 +95,7 @@
|
|
|
92
95
|
|
|
93
96
|
<div class="header-actions">
|
|
94
97
|
<div class="deployment-info">
|
|
95
|
-
<span class="deployment-date" title="Built with doc-builder v1.5.
|
|
98
|
+
<span class="deployment-date" title="Built with doc-builder v1.5.4">Last updated: Jul 22, 2025, 07:02 AM UTC</span>
|
|
96
99
|
</div>
|
|
97
100
|
|
|
98
101
|
|
|
@@ -153,6 +156,7 @@
|
|
|
153
156
|
<a href="/guides/authentication-guide.html" class="nav-item" data-tooltip="This guide explains how to configure and use the built-in authentication feature in @knowcode/doc-builder to protect your documentation with basic..."><i class="fas fa-file-alt"></i> Authentication Guide</a>
|
|
154
157
|
<a href="/guides/claude-workflow-guide.html" class="nav-item" data-tooltip="This guide demonstrates an efficient workflow for using Claude Code with a refined CLAUDE.md file to create high-quality documentation and deploy it..."><i class="fas fa-file-alt"></i> Claude Workflow Guide</a>
|
|
155
158
|
<a href="/guides/documentation-standards.html" class="nav-item" data-tooltip="This document defines the documentation standards and conventions for the @knowcode/doc-builder project."><i class="fas fa-file-alt"></i> Documentation Standards</a>
|
|
159
|
+
<a href="/guides/google-site-verification-guide.html" class="nav-item" data-tooltip="Google Search Console verification allows you to: Monitor your site's performance in Google Search Submit sitemaps for better indexing View search..."><i class="fas fa-file-alt"></i> Google Site Verification Guide</a>
|
|
156
160
|
<a href="/guides/seo-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder includes comprehensive SEO (Search Engine Optimization) features to help your documentation rank better in search results and..."><i class="fas fa-file-alt"></i> Seo Guide</a>
|
|
157
161
|
<a href="/guides/troubleshooting-guide.html" class="nav-item" data-tooltip="This guide helps you resolve common issues when using @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Troubleshooting Guide</a></div></div>
|
|
158
162
|
</nav>
|
|
@@ -28,6 +28,9 @@
|
|
|
28
28
|
<meta name="twitter:description" content="Authentication Guide for @knowcode/doc-builder.">
|
|
29
29
|
<meta name="twitter:image" content="https://doc-builder-delta.vercel.app/og-default.png">
|
|
30
30
|
|
|
31
|
+
<!-- Custom Meta Tags -->
|
|
32
|
+
<meta name="google-site-verification" content="FtzcDTf5BQ9K5EfnGazQkgU2U4FiN3ITzM7gHwqUAqQ">
|
|
33
|
+
|
|
31
34
|
<!-- Fonts -->
|
|
32
35
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
33
36
|
|
|
@@ -58,8 +61,8 @@
|
|
|
58
61
|
"name": "Knowcode Ltd",
|
|
59
62
|
"url": "https://knowcode.tech"
|
|
60
63
|
},
|
|
61
|
-
"datePublished": "2025-07-
|
|
62
|
-
"dateModified": "2025-07-
|
|
64
|
+
"datePublished": "2025-07-22T07:02:21.503Z",
|
|
65
|
+
"dateModified": "2025-07-22T07:02:21.503Z",
|
|
63
66
|
"mainEntityOfPage": {
|
|
64
67
|
"@type": "WebPage",
|
|
65
68
|
"@id": "https://doc-builder-delta.vercel.app/guides/authentication-guide.html"
|
|
@@ -98,7 +101,7 @@
|
|
|
98
101
|
|
|
99
102
|
<div class="header-actions">
|
|
100
103
|
<div class="deployment-info">
|
|
101
|
-
<span class="deployment-date" title="Built with doc-builder v1.5.
|
|
104
|
+
<span class="deployment-date" title="Built with doc-builder v1.5.4">Last updated: Jul 22, 2025, 07:02 AM UTC</span>
|
|
102
105
|
</div>
|
|
103
106
|
|
|
104
107
|
|
|
@@ -159,6 +162,7 @@
|
|
|
159
162
|
<a href="/guides/authentication-guide.html" class="nav-item active" data-tooltip="This guide explains how to configure and use the built-in authentication feature in @knowcode/doc-builder to protect your documentation with basic..."><i class="fas fa-file-alt"></i> Authentication Guide</a>
|
|
160
163
|
<a href="/guides/claude-workflow-guide.html" class="nav-item" data-tooltip="This guide demonstrates an efficient workflow for using Claude Code with a refined CLAUDE.md file to create high-quality documentation and deploy it..."><i class="fas fa-file-alt"></i> Claude Workflow Guide</a>
|
|
161
164
|
<a href="/guides/documentation-standards.html" class="nav-item" data-tooltip="This document defines the documentation standards and conventions for the @knowcode/doc-builder project."><i class="fas fa-file-alt"></i> Documentation Standards</a>
|
|
165
|
+
<a href="/guides/google-site-verification-guide.html" class="nav-item" data-tooltip="Google Search Console verification allows you to: Monitor your site's performance in Google Search Submit sitemaps for better indexing View search..."><i class="fas fa-file-alt"></i> Google Site Verification Guide</a>
|
|
162
166
|
<a href="/guides/seo-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder includes comprehensive SEO (Search Engine Optimization) features to help your documentation rank better in search results and..."><i class="fas fa-file-alt"></i> Seo Guide</a>
|
|
163
167
|
<a href="/guides/troubleshooting-guide.html" class="nav-item" data-tooltip="This guide helps you resolve common issues when using @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Troubleshooting Guide</a></div></div>
|
|
164
168
|
</nav>
|
|
@@ -28,6 +28,9 @@
|
|
|
28
28
|
<meta name="twitter:description" content="Claude + CLAUDE.">
|
|
29
29
|
<meta name="twitter:image" content="https://doc-builder-delta.vercel.app/og-default.png">
|
|
30
30
|
|
|
31
|
+
<!-- Custom Meta Tags -->
|
|
32
|
+
<meta name="google-site-verification" content="FtzcDTf5BQ9K5EfnGazQkgU2U4FiN3ITzM7gHwqUAqQ">
|
|
33
|
+
|
|
31
34
|
<!-- Fonts -->
|
|
32
35
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
33
36
|
|
|
@@ -58,8 +61,8 @@
|
|
|
58
61
|
"name": "Knowcode Ltd",
|
|
59
62
|
"url": "https://knowcode.tech"
|
|
60
63
|
},
|
|
61
|
-
"datePublished": "2025-07-
|
|
62
|
-
"dateModified": "2025-07-
|
|
64
|
+
"datePublished": "2025-07-22T07:02:21.506Z",
|
|
65
|
+
"dateModified": "2025-07-22T07:02:21.506Z",
|
|
63
66
|
"mainEntityOfPage": {
|
|
64
67
|
"@type": "WebPage",
|
|
65
68
|
"@id": "https://doc-builder-delta.vercel.app/guides/claude-workflow-guide.html"
|
|
@@ -98,7 +101,7 @@
|
|
|
98
101
|
|
|
99
102
|
<div class="header-actions">
|
|
100
103
|
<div class="deployment-info">
|
|
101
|
-
<span class="deployment-date" title="Built with doc-builder v1.5.
|
|
104
|
+
<span class="deployment-date" title="Built with doc-builder v1.5.4">Last updated: Jul 22, 2025, 07:02 AM UTC</span>
|
|
102
105
|
</div>
|
|
103
106
|
|
|
104
107
|
|
|
@@ -159,6 +162,7 @@
|
|
|
159
162
|
<a href="/guides/authentication-guide.html" class="nav-item" data-tooltip="This guide explains how to configure and use the built-in authentication feature in @knowcode/doc-builder to protect your documentation with basic..."><i class="fas fa-file-alt"></i> Authentication Guide</a>
|
|
160
163
|
<a href="/guides/claude-workflow-guide.html" class="nav-item active" data-tooltip="This guide demonstrates an efficient workflow for using Claude Code with a refined CLAUDE.md file to create high-quality documentation and deploy it..."><i class="fas fa-file-alt"></i> Claude Workflow Guide</a>
|
|
161
164
|
<a href="/guides/documentation-standards.html" class="nav-item" data-tooltip="This document defines the documentation standards and conventions for the @knowcode/doc-builder project."><i class="fas fa-file-alt"></i> Documentation Standards</a>
|
|
165
|
+
<a href="/guides/google-site-verification-guide.html" class="nav-item" data-tooltip="Google Search Console verification allows you to: Monitor your site's performance in Google Search Submit sitemaps for better indexing View search..."><i class="fas fa-file-alt"></i> Google Site Verification Guide</a>
|
|
162
166
|
<a href="/guides/seo-guide.html" class="nav-item" data-tooltip="@knowcode/doc-builder includes comprehensive SEO (Search Engine Optimization) features to help your documentation rank better in search results and..."><i class="fas fa-file-alt"></i> Seo Guide</a>
|
|
163
167
|
<a href="/guides/troubleshooting-guide.html" class="nav-item" data-tooltip="This guide helps you resolve common issues when using @knowcode/doc-builder."><i class="fas fa-file-alt"></i> Troubleshooting Guide</a></div></div>
|
|
164
168
|
</nav>
|