@knowcode/doc-builder 1.4.25 → 1.5.0

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.
@@ -22,7 +22,8 @@
22
22
  "Bash(npm view:*)",
23
23
  "Bash(npm:*)",
24
24
  "Bash(vercel project:*)",
25
- "Bash(vercel alias:*)"
25
+ "Bash(vercel alias:*)",
26
+ "Bash(find:*)"
26
27
  ],
27
28
  "deny": []
28
29
  }
package/CHANGELOG.md CHANGED
@@ -5,6 +5,21 @@ 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.4.26] - 2025-07-21
9
+
10
+ ### Improved
11
+ - Clarified Vercel setup instructions to show both paths for question #5
12
+ - Now clearly indicates what prompt users see based on their answer to question #4
13
+ - Added "If you answered YES/NO to #4" conditional guidance
14
+ - Shows appropriate project name prompts for both existing and new projects
15
+
16
+ ### Background
17
+ - Users were confused about what happens after answering NO to "Link to different existing project?"
18
+ - The instructions now clearly show both scenarios:
19
+ - YES: "What's the name of your existing project?"
20
+ - NO: "What is your project name?" (for creating new project)
21
+ - This matches the actual Vercel CLI flow more accurately
22
+
8
23
  ## [1.4.25] - 2025-07-21
9
24
 
10
25
  ### Fixed
package/README.md CHANGED
@@ -54,6 +54,7 @@ This aligns perfectly with our mission: beautiful documentation should be access
54
54
  - 🌙 **Dark Mode** - Automatic dark mode support
55
55
  - 🔄 **Live Reload** - Development server with hot reloading
56
56
  - ☁️ **Vercel Integration** - One-command deployment to Vercel
57
+ - 🔍 **SEO Optimized** - Meta tags, Open Graph, Twitter Cards, and structured data
57
58
  - 📦 **Self-Contained** - No configuration or setup required
58
59
  - 🤖 **Claude Code Ready** - Optimized for AI-generated documentation workflows
59
60
 
@@ -119,6 +120,9 @@ module.exports = {
119
120
  siteName: 'My Documentation',
120
121
  siteDescription: 'Documentation for my project',
121
122
 
123
+ // Production URL (optional)
124
+ productionUrl: 'https://my-docs.vercel.app', // Custom URL to display after deployment
125
+
122
126
  // Features
123
127
  features: {
124
128
  authentication: true,
@@ -145,6 +149,33 @@ npx @knowcode/doc-builder build --preset notion-inspired
145
149
 
146
150
  ## Commands
147
151
 
152
+ ### set-production-url
153
+ Set a custom production URL to display after deployment:
154
+ ```bash
155
+ # Set your custom production URL
156
+ npx @knowcode/doc-builder set-production-url doc-builder-delta.vercel.app
157
+
158
+ # Or with full protocol
159
+ npx @knowcode/doc-builder set-production-url https://my-custom-domain.com
160
+ ```
161
+
162
+ This is useful when you have a custom domain or Vercel alias that differs from the auto-detected URL.
163
+
164
+ ### setup-seo
165
+ Interactive SEO configuration wizard:
166
+ ```bash
167
+ # Configure all SEO settings
168
+ npx @knowcode/doc-builder setup-seo
169
+ ```
170
+
171
+ This wizard helps you set up:
172
+ - Site URL and author information
173
+ - Social media meta tags (Open Graph, Twitter Cards)
174
+ - Structured data (JSON-LD)
175
+ - Automatic sitemap and robots.txt generation
176
+
177
+ See the [SEO Guide](docs/guides/seo-guide.md) for complete details.
178
+
148
179
  ### build
149
180
  Build the documentation site to static HTML:
150
181
  ```bash
@@ -189,15 +220,15 @@ Deploy documentation to Vercel (requires Vercel CLI):
189
220
  doc-builder deploy [options]
190
221
 
191
222
  Options:
192
- -c, --config <path> Path to config file (default: "doc-builder.config.js")
193
- --prod Deploy to production (default: preview deployment)
194
- --no-build Skip building before deployment
195
- --force Force deployment without confirmation
223
+ -c, --config <path> Path to config file (default: "doc-builder.config.js")
224
+ --no-prod Deploy as preview instead of production
225
+ --force Force deployment without confirmation
226
+ --production-url <url> Override production URL for this deployment
196
227
 
197
228
  Examples:
198
- doc-builder deploy # Deploy preview to Vercel
199
- doc-builder deploy --prod # Deploy to production
200
- doc-builder deploy --no-build # Deploy existing build
229
+ doc-builder deploy # Deploy to production
230
+ doc-builder deploy --no-prod # Deploy as preview only
231
+ doc-builder deploy --production-url my-docs.vercel.app # Use custom URL display
201
232
 
202
233
  First-time setup:
203
234
  The tool will guide you through:
@@ -324,6 +355,25 @@ npx @knowcode/doc-builder@1.4.22
324
355
  - Ensure Vercel CLI is installed: `npm install -g vercel`
325
356
  - Check that the `html/` directory was created by build command
326
357
 
358
+ **Wrong production URL displayed**
359
+ - The deployment may show a deployment-specific URL instead of your custom domain
360
+ - Solution 1: Set production URL in config:
361
+ ```javascript
362
+ // doc-builder.config.js
363
+ module.exports = {
364
+ productionUrl: 'https://my-docs.vercel.app',
365
+ // ... other config
366
+ };
367
+ ```
368
+ - Solution 2: Use command to set it:
369
+ ```bash
370
+ npx @knowcode/doc-builder set-production-url my-docs.vercel.app
371
+ ```
372
+ - Solution 3: Override for a single deployment:
373
+ ```bash
374
+ npx @knowcode/doc-builder deploy --production-url my-docs.vercel.app
375
+ ```
376
+
327
377
  ## Using in Other Projects
328
378
 
329
379
  ### Option 1: NPM Link (Development)
package/cli.js CHANGED
@@ -118,6 +118,67 @@ ${chalk.yellow('Examples:')}
118
118
  }
119
119
  });
120
120
 
121
+ // Set Production URL command
122
+ program
123
+ .command('set-production-url <url>')
124
+ .description('Set the production URL to display after deployment')
125
+ .option('-c, --config <path>', 'path to config file (default: doc-builder.config.js)')
126
+ .addHelpText('after', `
127
+ ${chalk.yellow('Examples:')}
128
+ ${chalk.gray('$')} doc-builder set-production-url doc-builder-delta.vercel.app
129
+ ${chalk.gray('$')} doc-builder set-production-url https://my-custom-domain.com
130
+
131
+ ${chalk.yellow('This URL will be displayed after deployment instead of auto-detected URLs.')}
132
+ `)
133
+ .action(async (url, options) => {
134
+ try {
135
+ const configPath = path.join(process.cwd(), options.config || 'doc-builder.config.js');
136
+
137
+ // Ensure URL has protocol
138
+ if (!url.startsWith('http')) {
139
+ url = 'https://' + url;
140
+ }
141
+
142
+ if (fs.existsSync(configPath)) {
143
+ // Update existing config
144
+ let configContent = fs.readFileSync(configPath, 'utf8');
145
+
146
+ if (configContent.includes('productionUrl:')) {
147
+ // Update existing productionUrl
148
+ configContent = configContent.replace(
149
+ /productionUrl:\s*['"][^'"]*['"]/,
150
+ `productionUrl: '${url}'`
151
+ );
152
+ } else {
153
+ // Add productionUrl to config
154
+ configContent = configContent.replace(
155
+ /module\.exports = {/,
156
+ `module.exports = {\n productionUrl: '${url}',`
157
+ );
158
+ }
159
+
160
+ fs.writeFileSync(configPath, configContent);
161
+ console.log(chalk.green(`✅ Production URL set to: ${url}`));
162
+ console.log(chalk.gray(`\nThis URL will be displayed after deployment.`));
163
+ } else {
164
+ console.log(chalk.yellow('⚠️ No config file found. Creating one...'));
165
+ await createDefaultConfig();
166
+
167
+ // Add production URL to newly created config
168
+ let configContent = fs.readFileSync(configPath, 'utf8');
169
+ configContent = configContent.replace(
170
+ /module\.exports = {/,
171
+ `module.exports = {\n productionUrl: '${url}',`
172
+ );
173
+ fs.writeFileSync(configPath, configContent);
174
+ console.log(chalk.green(`✅ Created config with production URL: ${url}`));
175
+ }
176
+ } catch (error) {
177
+ console.error(chalk.red('Failed to set production URL:'), error.message);
178
+ process.exit(1);
179
+ }
180
+ });
181
+
121
182
  // Deploy command
122
183
  program
123
184
  .command('deploy')
@@ -125,6 +186,7 @@ program
125
186
  .option('-c, --config <path>', 'path to config file (default: doc-builder.config.js)')
126
187
  .option('--no-prod', 'deploy as preview instead of production')
127
188
  .option('--force', 'force deployment without confirmation')
189
+ .option('--production-url <url>', 'override production URL for this deployment')
128
190
  .addHelpText('after', `
129
191
  ${chalk.yellow('Examples:')}
130
192
  ${chalk.gray('$')} doc-builder deploy ${chalk.gray('# Deploy to production')}
@@ -267,6 +329,13 @@ ${chalk.yellow('Troubleshooting:')}
267
329
  process.exit(1);
268
330
  }
269
331
 
332
+ // Handle production URL option
333
+ if (options.productionUrl) {
334
+ config.productionUrl = options.productionUrl.startsWith('http')
335
+ ? options.productionUrl
336
+ : 'https://' + options.productionUrl;
337
+ }
338
+
270
339
  // Always build first
271
340
  spinner.stop();
272
341
  console.log(chalk.blue('\n📦 Building documentation first...\n'));
@@ -329,8 +398,8 @@ ${chalk.yellow('Troubleshooting:')}
329
398
  productionUrl = result.productionUrl;
330
399
  }
331
400
 
332
- // Use the production URL if available, otherwise show the deployment URL
333
- const displayUrl = productionUrl || deployUrl;
401
+ // Use the configured production URL if available, then detected, then deployment URL
402
+ const displayUrl = config.productionUrl || productionUrl || deployUrl;
334
403
 
335
404
  console.log(chalk.green('\n✅ Deployment Complete!\n'));
336
405
 
@@ -407,6 +476,186 @@ ${chalk.yellow('When to use:')}
407
476
  }
408
477
  });
409
478
 
479
+ // Setup SEO command
480
+ program
481
+ .command('setup-seo')
482
+ .description('Configure SEO settings for your documentation')
483
+ .option('-c, --config <path>', 'path to config file (default: doc-builder.config.js)')
484
+ .addHelpText('after', `
485
+ ${chalk.yellow('What this does:')}
486
+ • Configures meta tags for search engines
487
+ • Sets up social media previews (Open Graph, Twitter Cards)
488
+ • Enables automatic sitemap.xml generation
489
+ • Creates robots.txt for search engines
490
+ • Adds structured data (JSON-LD)
491
+
492
+ ${chalk.yellow('What you\'ll configure:')}
493
+ • Site URL (your production URL)
494
+ • Author name and organization
495
+ • Twitter handle for social cards
496
+ • Default keywords
497
+ • Open Graph image
498
+
499
+ ${chalk.yellow('After setup:')}
500
+ • Run ${chalk.cyan('npx @knowcode/doc-builder build')} to generate with SEO
501
+ • Check meta tags in generated HTML files
502
+ • Submit sitemap.xml to search engines
503
+ `)
504
+ .action(async (options) => {
505
+ try {
506
+ const configPath = path.join(process.cwd(), options.config || 'doc-builder.config.js');
507
+ let config = {};
508
+
509
+ // Load existing config if it exists
510
+ if (fs.existsSync(configPath)) {
511
+ try {
512
+ delete require.cache[require.resolve(configPath)];
513
+ config = require(configPath);
514
+ } catch (e) {
515
+ console.log(chalk.yellow('⚠️ Could not load existing config, starting fresh'));
516
+ }
517
+ }
518
+
519
+ console.log(chalk.blue('\n🔍 SEO Setup for @knowcode/doc-builder\n'));
520
+ console.log(chalk.gray('This wizard will help you configure SEO settings for better search engine visibility.\n'));
521
+
522
+ // Interactive prompts
523
+ const answers = await prompts([
524
+ {
525
+ type: 'text',
526
+ name: 'siteUrl',
527
+ message: 'What is your site\'s URL?',
528
+ initial: config.seo?.siteUrl || config.productionUrl || 'https://my-docs.vercel.app',
529
+ validate: value => {
530
+ try {
531
+ new URL(value);
532
+ return true;
533
+ } catch {
534
+ return 'Please enter a valid URL (e.g., https://example.com)';
535
+ }
536
+ }
537
+ },
538
+ {
539
+ type: 'text',
540
+ name: 'author',
541
+ message: 'Author name?',
542
+ initial: config.seo?.author || ''
543
+ },
544
+ {
545
+ type: 'text',
546
+ name: 'twitterHandle',
547
+ message: 'Twitter handle?',
548
+ initial: config.seo?.twitterHandle || '',
549
+ format: value => {
550
+ if (!value) return '';
551
+ return value.startsWith('@') ? value : '@' + value;
552
+ }
553
+ },
554
+ {
555
+ type: 'text',
556
+ name: 'language',
557
+ message: 'Site language?',
558
+ initial: config.seo?.language || 'en-US'
559
+ },
560
+ {
561
+ type: 'text',
562
+ name: 'organizationName',
563
+ message: 'Organization name (optional)?',
564
+ initial: config.seo?.organization?.name || ''
565
+ },
566
+ {
567
+ type: prev => prev ? 'text' : null,
568
+ name: 'organizationUrl',
569
+ message: 'Organization URL?',
570
+ initial: config.seo?.organization?.url || ''
571
+ },
572
+ {
573
+ type: 'text',
574
+ name: 'ogImage',
575
+ message: 'Default Open Graph image URL/path?',
576
+ initial: config.seo?.ogImage || '/og-default.png',
577
+ hint: 'Recommended: 1200x630px PNG or JPG'
578
+ },
579
+ {
580
+ type: 'text',
581
+ name: 'keywords',
582
+ message: 'Site keywords (comma-separated)?',
583
+ initial: Array.isArray(config.seo?.keywords) ? config.seo.keywords.join(', ') : 'documentation, guide, api'
584
+ },
585
+ {
586
+ type: 'confirm',
587
+ name: 'generateSitemap',
588
+ message: 'Generate sitemap.xml?',
589
+ initial: config.seo?.generateSitemap !== false
590
+ },
591
+ {
592
+ type: 'confirm',
593
+ name: 'generateRobotsTxt',
594
+ message: 'Generate robots.txt?',
595
+ initial: config.seo?.generateRobotsTxt !== false
596
+ }
597
+ ]);
598
+
599
+ // Build SEO config
600
+ const seoConfig = {
601
+ enabled: true,
602
+ siteUrl: answers.siteUrl,
603
+ author: answers.author,
604
+ twitterHandle: answers.twitterHandle,
605
+ language: answers.language,
606
+ keywords: answers.keywords.split(',').map(k => k.trim()).filter(k => k),
607
+ generateSitemap: answers.generateSitemap,
608
+ generateRobotsTxt: answers.generateRobotsTxt,
609
+ ogImage: answers.ogImage
610
+ };
611
+
612
+ // Add organization if provided
613
+ if (answers.organizationName) {
614
+ seoConfig.organization = {
615
+ name: answers.organizationName,
616
+ url: answers.organizationUrl || answers.siteUrl
617
+ };
618
+ }
619
+
620
+ // Update config
621
+ config.seo = seoConfig;
622
+
623
+ // Also update productionUrl if not set
624
+ if (!config.productionUrl && answers.siteUrl) {
625
+ config.productionUrl = answers.siteUrl;
626
+ }
627
+
628
+ // Write config file
629
+ const configContent = `module.exports = ${JSON.stringify(config, null, 2)};\n`;
630
+ fs.writeFileSync(configPath, configContent);
631
+
632
+ console.log(chalk.green('\n✅ SEO configuration saved to ' + path.basename(configPath)));
633
+
634
+ console.log(chalk.blue('\nYour documentation will now include:'));
635
+ console.log(chalk.gray('• Meta tags for search engines'));
636
+ console.log(chalk.gray('• Open Graph tags for social media previews'));
637
+ console.log(chalk.gray('• Twitter Card tags for Twitter sharing'));
638
+ console.log(chalk.gray('• JSON-LD structured data'));
639
+ if (answers.generateSitemap) {
640
+ console.log(chalk.gray('• Automatic sitemap.xml generation'));
641
+ }
642
+ if (answers.generateRobotsTxt) {
643
+ console.log(chalk.gray('• robots.txt for crawler instructions'));
644
+ }
645
+
646
+ console.log(chalk.yellow('\n💡 Tips:'));
647
+ if (answers.ogImage) {
648
+ console.log(chalk.gray(`- Add an image at ${answers.ogImage} (1200x630px) for social previews`));
649
+ }
650
+ console.log(chalk.gray('- Run \'npx @knowcode/doc-builder build\' to generate with SEO'));
651
+ console.log(chalk.gray('- Check your SEO at: https://metatags.io'));
652
+
653
+ } catch (error) {
654
+ console.error(chalk.red('Failed to configure SEO:'), error.message);
655
+ process.exit(1);
656
+ }
657
+ });
658
+
410
659
  // Init command
411
660
  program
412
661
  .command('init')
@@ -0,0 +1,38 @@
1
+ module.exports = {
2
+ // Site info
3
+ siteName: 'Doc Builder',
4
+ siteDescription: 'Beautiful documentation with the least effort possible',
5
+
6
+ // Directories
7
+ docsDir: 'docs',
8
+ outputDir: 'html',
9
+
10
+ // Production URL
11
+ productionUrl: 'https://doc-builder-delta.vercel.app',
12
+
13
+ // Features
14
+ features: {
15
+ authentication: false,
16
+ changelog: true,
17
+ mermaid: true,
18
+ darkMode: true
19
+ },
20
+
21
+ // SEO configuration
22
+ seo: {
23
+ enabled: true,
24
+ siteUrl: 'https://doc-builder-delta.vercel.app',
25
+ author: 'Lindsay Smith',
26
+ twitterHandle: '@planbbackups',
27
+ language: 'en-US',
28
+ keywords: ['documentation', 'markdown', 'static site generator', 'vercel', 'notion-style'],
29
+ organization: {
30
+ name: 'KnowCode',
31
+ url: 'https://knowcode.com'
32
+ },
33
+ ogImage: '/og-default.png',
34
+ generateSitemap: true,
35
+ generateRobotsTxt: true,
36
+ customMetaTags: []
37
+ }
38
+ };
package/html/README.html CHANGED
@@ -3,8 +3,30 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <meta name="description" content="Documentation site built with @knowcode/doc-builder">
7
- <title>@knowcode/doc-builder - Documentation</title>
6
+ <meta name="description" content="@knowcode/doc-builder.">
7
+ <title>@knowcode/doc-builder - Doc Builder</title>
8
+
9
+ <meta name="author" content="Lindsay Smith">
10
+ <meta name="keywords" content="documentation, markdown, static site generator, vercel, notion-style, your, knowcode, doc, builder">
11
+ <meta name="robots" content="index, follow">
12
+ <link rel="canonical" href="https://doc-builder-delta.vercel.app/README.html">
13
+
14
+ <!-- Open Graph / Facebook -->
15
+ <meta property="og:type" content="article">
16
+ <meta property="og:url" content="https://doc-builder-delta.vercel.app/README.html">
17
+ <meta property="og:title" content="@knowcode/doc-builder - Doc Builder">
18
+ <meta property="og:description" content="@knowcode/doc-builder.">
19
+ <meta property="og:image" content="https://doc-builder-delta.vercel.app/og-default.png">
20
+ <meta property="og:site_name" content="Doc Builder">
21
+ <meta property="og:locale" content="en_US">
22
+
23
+ <!-- Twitter Card -->
24
+ <meta name="twitter:card" content="summary_large_image">
25
+ <meta name="twitter:site" content="@planbbackups">
26
+ <meta name="twitter:creator" content="@planbbackups">
27
+ <meta name="twitter:title" content="@knowcode/doc-builder - Doc Builder">
28
+ <meta name="twitter:description" content="@knowcode/doc-builder.">
29
+ <meta name="twitter:image" content="https://doc-builder-delta.vercel.app/og-default.png">
8
30
 
9
31
  <!-- Fonts -->
10
32
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
@@ -20,16 +42,57 @@
20
42
 
21
43
  <!-- Favicon -->
22
44
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>📚</text></svg>">
45
+
46
+ <script type="application/ld+json">
47
+ {
48
+ "@context": "https://schema.org",
49
+ "@type": "TechArticle",
50
+ "headline": "@knowcode/doc-builder",
51
+ "description": "@knowcode/doc-builder.",
52
+ "author": {
53
+ "@type": "Person",
54
+ "name": "Lindsay Smith"
55
+ },
56
+ "publisher": {
57
+ "@type": "Organization",
58
+ "name": "KnowCode",
59
+ "url": "https://knowcode.com"
60
+ },
61
+ "datePublished": "2025-07-21T20:24:35.105Z",
62
+ "dateModified": "2025-07-21T20:24:35.105Z",
63
+ "mainEntityOfPage": {
64
+ "@type": "WebPage",
65
+ "@id": "https://doc-builder-delta.vercel.app/README.html"
66
+ },
67
+ "breadcrumb": {
68
+ "@type": "BreadcrumbList",
69
+ "itemListElement": [
70
+ {
71
+ "@type": "ListItem",
72
+ "position": 1,
73
+ "name": "Doc Builder",
74
+ "item": "https://doc-builder-delta.vercel.app"
75
+ },
76
+ {
77
+ "@type": "ListItem",
78
+ "position": 2,
79
+ "name": "README",
80
+ "item": "https://doc-builder-delta.vercel.app/README.html"
81
+ }
82
+ ]
83
+ }
84
+ }
85
+ </script>
23
86
  </head>
24
87
  <body>
25
88
  <!-- Header -->
26
89
  <header class="header">
27
90
  <div class="header-content">
28
- <a href="/index.html" class="logo">Documentation</a>
91
+ <a href="/index.html" class="logo">Doc Builder</a>
29
92
 
30
93
  <div class="header-actions">
31
94
  <div class="deployment-info">
32
- <span class="deployment-date" title="Built with doc-builder v1.4.24">Last updated: Jul 21, 2025, 07:50 PM UTC</span>
95
+ <span class="deployment-date" title="Built with doc-builder v1.4.26">Last updated: Jul 21, 2025, 08:24 PM UTC</span>
33
96
  </div>
34
97
 
35
98
 
@@ -80,7 +143,9 @@
80
143
  <div class="nav-content" >
81
144
  <a href="/README.html" class="nav-item active" data-tooltip="@knowcode/doc-builder."><i class="fas fa-file-alt"></i> Overview</a>
82
145
  <a href="/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>
83
- <a href="/documentation-index.html" class="nav-item" data-tooltip="This directory contains additional documentation for the @knowcode/doc-builder project, organized by topic and purpose."><i class="fas fa-file-alt"></i> Documentation Index</a></div></div>
146
+ <a href="/documentation-index.html" class="nav-item" data-tooltip="This directory contains additional documentation for the @knowcode/doc-builder project, organized by topic and purpose."><i class="fas fa-file-alt"></i> Documentation Index</a>
147
+ <a href="/vercel-cli-setup-guide.html" class="nav-item" data-tooltip="This guide provides comprehensive instructions for installing and configuring the Vercel CLI across different operating systems and environments."><i class="fas fa-file-alt"></i> Vercel Cli Setup Guide</a>
148
+ <a href="/vercel-first-time-setup-guide.html" class="nav-item" data-tooltip="This guide provides a detailed explanation of every prompt you&#039;ll encounter during the first-time Vercel setup process when using."><i class="fas fa-file-alt"></i> Vercel First Time Setup Guide</a></div></div>
84
149
  <div class="nav-section" data-level="1">
85
150
  <a class="nav-title collapsible expanded" href="#" data-target="nav-guides-1" >
86
151
  <i class="fas fa-chevron-right collapse-icon"></i><i class="fas fa-folder"></i> Guides
@@ -88,6 +153,7 @@
88
153
  <div class="nav-content" id="nav-guides-1">
89
154
  <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>
90
155
  <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>
156
+ <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>
91
157
  <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>
92
158
  </nav>
93
159
  <div class="resize-handle"></div>