feat: enhance SurfSense with new skills, blog section, and improve SEO metadata
Some checks failed
Build and Push Docker Images / tag_release (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64) (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend) (push) Has been cancelled
Build and Push Docker Images / create_manifest (web, surfsense-web) (push) Has been cancelled

- Added multiple new skills to skills-lock.json from the repository `aaron-he-zhu/seo-geo-claude-skills`.
- Introduced `fuzzy-search` dependency in package.json for improved search functionality.
- Updated pnpm-lock.yaml to include the new `fuzzy-search` package.
- Enhanced SEO metadata across various pages, including canonical links and descriptions for better search visibility.
- Improved layout and structure of several components, including the homepage and changelog, to enhance user experience.
This commit is contained in:
DESKTOP-RTLN3BA\$punk 2026-04-11 23:38:12 -07:00
parent 61b3f0d7e3
commit 7ea840dbb2
120 changed files with 25729 additions and 352 deletions

View file

@ -0,0 +1,362 @@
# Link Architecture Patterns
Detailed architecture models with implementation guides, migration strategies, and measurement frameworks for internal linking optimization.
## Architecture Model Deep Dives
### 1. Hub-and-Spoke (Topic Cluster) Model
#### Overview
The hub-and-spoke model organizes content around central "pillar" pages (hubs) that link to and from related "cluster" articles (spokes). This is the most widely recommended architecture for content-driven sites targeting topical authority.
#### Structure Diagram
```
┌──────────────┐
│ Homepage │
└──────┬───────┘
┌──────────────┼──────────────┐
│ │ │
┌──────▼──────┐ ┌────▼────┐ ┌──────▼──────┐
│ Hub A │ │ Hub B │ │ Hub C │
│ (Pillar) │ │(Pillar) │ │ (Pillar) │
└──┬───┬───┬──┘ └────┬────┘ └──┬───┬───┬──┘
│ │ │ │ │ │ │
A1 A2 A3 B1 B2 C1 C2 C3
└───┼───┘ └───┼───┘
cross-links cross-links
```
#### Implementation Steps
1. **Identify 3-7 core topics** that define your business expertise
2. **Create pillar pages** (2,000-5,000 words) that broadly cover each core topic
3. **Map cluster articles** (800-2,000 words) that dive deep into subtopics
4. **Implement bidirectional links**: every cluster article links to its pillar, every pillar links to all its clusters
5. **Add cross-links** between related cluster articles within the same hub
6. **Add bridge links** between hubs where subtopics overlap
#### Link Rules
| Link Type | Direction | Anchor Text Strategy |
|-----------|-----------|---------------------|
| Pillar → Cluster | Pillar links to each cluster | Descriptive: "learn about [subtopic]" |
| Cluster → Pillar | Every cluster links back to pillar | Partial match: "our complete [topic] guide" |
| Cluster ↔ Cluster | Between related clusters in same hub | Natural: "as we covered in [related article]" |
| Hub ↔ Hub (bridge) | Between related pillar pages | Branded/natural: "see also our [topic] resource" |
#### When to Use
- Content marketing sites and blogs
- SaaS companies building topical authority
- Publishers covering defined topic areas
- Any site with 50-500 content pages
#### Measurement
| Metric | Target | Tool |
|--------|--------|------|
| Pillar page rankings for head terms | Top 10 | Rank tracker |
| Cluster article rankings for long-tail | Top 20 | Rank tracker |
| Internal links per cluster article | 3-5 minimum | Crawl report |
| Click depth from homepage to cluster | ≤3 clicks | Crawl report |
| Organic traffic to hub pages | Month-over-month growth | Analytics |
---
### 2. Silo Structure
#### Overview
The silo model creates strict vertical hierarchies where content is organized into isolated "silos" (categories). Links flow vertically within a silo but rarely cross between silos. This concentrates topical relevance within each silo.
#### Structure Diagram
```
┌──────────────┐
│ Homepage │
└──────┬───────┘
┌─────────────────┼─────────────────┐
│ │ │
┌────▼─────┐ ┌────▼─────┐ ┌────▼─────┐
│ Silo A │ │ Silo B │ │ Silo C │
│ Category │ │ Category │ │ Category │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
┌────▼─────┐ ┌────▼─────┐ ┌────▼─────┐
│ Sub-cat │ │ Sub-cat │ │ Sub-cat │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ Pages │ │ Pages │ │ Pages │
└─────────┘ └─────────┘ └─────────┘
No horizontal links between silos (strict model)
```
#### Implementation Steps
1. **Define 5-15 top-level categories** (silos) based on your product/service taxonomy
2. **Create category landing pages** with overview content and links to subcategories
3. **Build subcategory pages** linking down to individual product/content pages
4. **Enforce vertical linking**: pages link up to their parent and down to their children
5. **Use breadcrumbs** to reinforce the hierarchy visually and structurally
6. **Limit cross-silo links** to only the most relevant connections (strict model) or allow them strategically (modified model)
#### Link Rules
| Link Type | Direction | Allowed? |
|-----------|-----------|----------|
| Parent → Child | Downward within silo | Always |
| Child → Parent | Upward within silo | Always |
| Sibling ↔ Sibling | Horizontal within same parent | Yes |
| Cross-silo | Between different silos | Strict: No. Modified: Sparingly |
| All pages → Homepage | Upward to root | Yes (via navigation) |
#### When to Use
- Large e-commerce sites (100+ product categories)
- Directory sites with clear taxonomy
- Sites where categories are truly distinct topics
- Enterprises with separate business lines
#### Limitations
- Overly strict silos can trap link equity in one branch
- Cross-topic content becomes difficult to place
- Users may need to navigate up and over to find related content
- Modified silo (allowing some cross-links) often works better in practice
---
### 3. Flat Architecture
#### Overview
A flat architecture keeps all pages within 2-3 clicks of the homepage. There is minimal hierarchy; instead, pages are broadly interlinked. This maximizes crawlability and distributes link equity evenly.
#### Structure Diagram
```
┌──────────┐
│ Homepage │
└────┬─────┘
┌──────────────┼──────────────┐
│ │ │ │ │ │ │
P1 P2 P3 P4 P5 P6 P7
└────┼────┼────┼────┼────┼────┘
└────┴────┴────┘
(cross-linked freely)
```
#### Implementation Steps
1. **Link all key pages from the homepage** (directly or via a comprehensive sitemap page)
2. **Keep URL structure shallow**: /category/page, not /category/subcategory/year/page
3. **Cross-link freely** between related pages at the same level
4. **Use comprehensive navigation** menus, footer links, or HTML sitemaps
5. **Limit total pages** to keep the architecture manageable
#### When to Use
- Small sites with fewer than 100 pages
- Portfolio sites
- Small business brochure sites
- Startups with limited content
#### Scaling Limits
| Site Size | Flat Architecture Feasibility |
|-----------|------------------------------|
| <50 pages | Ideal |
| 50-100 pages | Manageable with good navigation |
| 100-500 pages | Difficult; consider hub-and-spoke |
| 500+ pages | Not recommended; switch to hierarchical model |
---
### 4. Pyramid Architecture
#### Overview
The pyramid model mirrors traditional website hierarchies: a single homepage at the top, branching into categories, subcategories, and finally individual pages. Authority flows from top to bottom, concentrating at higher levels.
#### Structure Diagram
```
Level 0: Homepage
/ \
Level 1: Category A Category B
/ \ / \
Level 2: Sub A1 Sub A2 Sub B1 Sub B2
/ \ / \ / \ / \
Level 3: P1 P2 P3 P4 P5 P6 P7 P8
```
#### Implementation Steps
1. **Design a clear hierarchy** with 3-4 levels maximum
2. **Homepage links to all top-level categories** prominently
3. **Category pages link to all subcategories** within them
4. **Subcategory pages link to all child pages**
5. **Implement breadcrumbs** to support the hierarchy
6. **Add "related content" cross-links** at the page level to offset authority concentration
#### Authority Flow Considerations
| Level | Typical Authority | Action to Improve |
|-------|-------------------|-------------------|
| Homepage | Highest | Ensure links to priority categories are prominent |
| Categories | High | Link from blog content, not just navigation |
| Subcategories | Medium | Add contextual links from other sections |
| Individual pages | Lowest | Cross-link, feature in "popular posts" widgets |
#### When to Use
- News and media sites
- Large blogs (500+ posts)
- Corporate sites with many divisions
- Government/educational sites
---
### 5. Mesh/Matrix Architecture
#### Overview
The mesh model allows free-form linking between any related pages, regardless of hierarchy. Every page can link to any other relevant page. This creates a dense web of connections, similar to Wikipedia's link structure.
#### Structure Diagram
```
P1 ←──→ P2 ←──→ P3
↕ ╲ ↕
P4 ←──→ P5 ←──→ P6
↕ ╲ ↕
P7 ←──→ P8 ←──→ P9
```
#### Implementation Steps
1. **Set linking rules** to prevent chaos: link only when topically relevant
2. **Use contextual anchors** that describe the destination page
3. **Set a link budget** per page (5-15 contextual links per 1,000 words)
4. **Review link density regularly** to prune irrelevant connections
5. **Maintain a link map** (spreadsheet or tool) to track the network
#### Governance Rules
| Rule | Purpose |
|------|---------|
| Every link must have topical relevance | Prevents link dilution |
| Maximum 15 contextual links per 1,000 words | Prevents link farms |
| Review links quarterly | Prunes outdated connections |
| Use descriptive anchor text only | Maintains semantic value |
| No reciprocal link trading between unrelated pages | Prevents manipulation patterns |
#### When to Use
- Knowledge bases and documentation sites
- Wikis and encyclopedias
- Research repositories
- FAQ/help center sites
---
## Migration Between Models
### Common Migration Paths
| From | To | Reason | Difficulty |
|------|----|--------|-----------|
| Flat → Hub-and-Spoke | Site grew beyond 100 pages | Medium |
| Silo → Hub-and-Spoke | Silos too rigid, need cross-topic links | Medium |
| Pyramid → Hub-and-Spoke | Want to build topical clusters | High |
| No structure → Any model | Starting from disorganized state | High |
| Hub-and-Spoke → Hybrid | Need both clusters and strict categories | Medium |
### Migration Steps (General)
1. **Audit current state**: Map all existing internal links using a crawler
2. **Design target architecture**: Choose model, map pages to their new positions
3. **Create a link change plan**: Document every link addition, removal, and anchor text change
4. **Implement in phases**: Start with highest-priority cluster/silo, then expand
5. **Preserve existing equity**: Do not remove links that pass significant value without replacement
6. **Monitor impact**: Track rankings and traffic for 4-8 weeks after each phase
7. **Iterate**: Adjust the plan based on measured results
### Migration Risk Mitigation
| Risk | Mitigation |
|------|-----------|
| Temporary ranking drops | Migrate one section at a time, not all at once |
| Broken internal links | Run crawl after each phase to verify |
| Lost link equity | Ensure no orphan pages created during migration |
| Anchor text disruption | Change anchors gradually, not all at once |
---
## Measurement Framework
### Key Metrics by Architecture Model
| Metric | Hub-and-Spoke | Silo | Flat | Pyramid | Mesh |
|--------|---------------|------|------|---------|------|
| Avg click depth | ≤3 | ≤4 | ≤2 | ≤4 | ≤3 |
| Orphan pages | 0 | 0 | 0 | 0 | 0 |
| Avg internal links per page | 5-10 | 3-7 | 8-15 | 3-5 | 8-15 |
| Cross-section links | Many | Few | N/A | Some | Many |
| Authority concentration | Distributed to hubs | Concentrated in silo tops | Even | Top-heavy | Even |
### Monthly Monitoring Checklist
| Check | Tool | Action if Failing |
|-------|------|-------------------|
| Orphan pages count | Crawl report | Add internal links immediately |
| Average click depth | Crawl report | Add shortcuts to deep pages |
| Crawl depth distribution | Crawl report | Flatten deep branches |
| Internal link count per page | Crawl report | Add links to under-linked pages |
| Anchor text diversity | Manual audit | Vary anchors for over-optimized pages |
| Broken internal links | Crawl report | Fix or remove broken links |
| New content linked within 48 hours | Editorial process | Add to related pages upon publishing |
### ROI Estimation
| Architecture Change | Typical Impact | Timeline to See Results |
|--------------------|---------------|----------------------|
| Fix orphan pages | +15-30% traffic to those pages | 2-4 weeks |
| Build first topic cluster | +10-25% traffic to cluster pages | 4-8 weeks |
| Reduce click depth by 1 level | +5-15% crawl efficiency | 2-6 weeks |
| Anchor text optimization | +5-10% ranking improvement for target terms | 4-12 weeks |
| Full architecture migration | +20-50% overall organic traffic | 3-6 months |
---
## Hybrid Architecture Strategies
Most real-world sites combine elements from multiple models. Common hybrid patterns:
### Hub-and-Spoke + Silo (Recommended for Medium-Large Sites)
```
Homepage
├── Category Silo A
│ ├── Hub A1 (pillar) ←→ Cluster articles
│ └── Hub A2 (pillar) ←→ Cluster articles
├── Category Silo B
│ ├── Hub B1 (pillar) ←→ Cluster articles
│ └── Hub B2 (pillar) ←→ Cluster articles
└── Cross-category bridge links (A1 ↔ B2 where relevant)
```
- **Silos** provide category organization for navigation and URL structure
- **Hubs** within each silo build topical authority for specific keyword clusters
- **Bridge links** connect related content across silos where user intent overlaps
### Implementation Priority Order
1. Fix structural issues first (orphan pages, broken links)
2. Implement primary architecture model
3. Add cross-linking strategy
4. Optimize anchor text
5. Monitor and iterate
This order ensures each phase builds on a solid foundation rather than optimizing details on a broken structure.

View file

@ -0,0 +1,42 @@
# Internal Linking Optimizer — Worked Example
Referenced from [SKILL.md](https://github.com/aaron-he-zhu/seo-geo-claude-skills/blob/main/optimize/internal-linking-optimizer/SKILL.md).
---
## Worked Example
**User**: "Find internal linking opportunities for my blog post about 'email marketing best practices'"
**Output**:
```markdown
## Internal Linking Opportunities
**Page**: /blog/email-marketing-best-practices/
**Current Internal Links**: 2
### Recommended Links to Add
| Section | Text to Link | Target Page | Anchor |
|---------|--------------|-------------|--------|
| Para 2 | "building your email list" | /blog/grow-email-list/ | "building your email list" |
| Para 5 | "subject lines" | /blog/email-subject-lines/ | "write compelling subject lines" |
| Section on segmentation | "audience segments" | /blog/email-segmentation-guide/ | "segment your audience" |
| CTA section | "marketing automation" | /services/email-automation/ | "email automation services" |
| Conclusion | "email marketing tools" | /blog/best-email-tools/ | "top email marketing tools" |
### Pages That Should Link TO This Article
| Source Page | Location | Anchor Text |
|-------------|----------|-------------|
| /blog/digital-marketing-guide/ | Email section | "email marketing best practices" |
| /services/marketing-services/ | Related content | "email marketing strategies" |
| /blog/lead-generation-tips/ | Email mention | "email marketing techniques" |
### Priority Actions
1. Add 5 outbound internal links (listed above)
2. Request 3 inbound links from related pages
3. Add to "Marketing" category page
```

View file

@ -0,0 +1,219 @@
# Internal Linking Optimizer — Output Templates
Detailed output templates for internal-linking-optimizer steps 4-7. Referenced from [SKILL.md](https://github.com/aaron-he-zhu/seo-geo-claude-skills/blob/main/optimize/internal-linking-optimizer/SKILL.md).
---
## Step 4: Create Topic Cluster Link Strategy
```markdown
## Topic Cluster Internal Linking
### Cluster: [Main Topic]
**Pillar Page**: [URL]
**Cluster Articles**: [X]
### Current Link Map
```
[Pillar Page]
├── [Cluster Article 1] ←→ [linked?]
├── [Cluster Article 2] ←→ [linked?]
├── [Cluster Article 3] ←→ [linked?]
└── [Cluster Article 4] ←→ [linked?]
```
### Recommended Link Structure
```
[Pillar Page]
├── Links TO all cluster articles ✅
├── [Cluster Article 1]
│ ├── Link TO pillar ✅
│ └── Link TO related cluster articles
├── [Cluster Article 2]
│ ├── Link TO pillar ✅
│ └── Link TO related cluster articles
└── [etc.]
```
### Links to Add
| From Page | To Page | Anchor Text | Location |
|-----------|---------|-------------|----------|
| [URL 1] | [URL 2] | "[anchor]" | [paragraph/section] |
| [URL 2] | [URL 3] | "[anchor]" | [paragraph/section] |
| [Pillar] | [Cluster 1] | "[anchor]" | [section] |
```
---
## Step 5: Find Contextual Link Opportunities
```markdown
## Contextual Link Opportunities
### Link Opportunity Analysis
For each page, find relevant pages to link to based on:
- Topic relevance
- Keyword overlap
- User journey logic
- Authority distribution needs
### Opportunities Found
**Page: [URL 1]**
**Topic**: [topic]
**Current internal links**: [X]
| Opportunity | Target Page | Anchor Text | Why Link |
|-------------|-------------|-------------|----------|
| Paragraph 2 mentions "[topic]" | [URL] | "[topic phrase]" | Topic match |
| Section on "[subject]" | [URL] | "[anchor]" | Related guide |
| CTA at end | [URL] | "[anchor]" | User journey |
**Page: [URL 2]**
[Continue for each page...]
### Priority Link Additions
**High Impact Links** (add these first):
1. **From**: [Source URL]
**To**: [Target URL]
**Anchor**: "[anchor text]"
**Why**: [reason - e.g., "Target page needs authority boost"]
**Where to add**: [specific location in content]
2. **From**: [Source URL]
**To**: [Target URL]
[etc.]
```
---
## Step 6: Optimize Navigation and Footer Links
```markdown
## Site-Wide Link Optimization
### Current Navigation Analysis
**Main Navigation**:
- Links present: [list]
- Missing important pages: [list]
- Too many links: [Yes/No]
**Footer Navigation**:
- Links present: [list]
- SEO value: [assessment]
### Navigation Recommendations
| Element | Current | Recommended | Reason |
|---------|---------|-------------|--------|
| Main nav | [X] links | [Y] links | [reason] |
| Footer | [X] links | [Y] links | [reason] |
| Sidebar | [status] | [recommendation] | [reason] |
| Breadcrumbs | [status] | [recommendation] | [reason] |
### Pages to Add to Navigation
1. [Page] - Add to [location] because [reason]
2. [Page] - Add to [location] because [reason]
### Pages to Remove from Navigation
1. [Page] - Move to [footer/remove] because [reason]
```
---
## Step 7: Generate Link Implementation Plan
```markdown
# Internal Linking Optimization Plan
**Site**: [domain]
**Analysis Date**: [date]
## Executive Summary
- Total link opportunities found: [X]
- Orphan pages to fix: [X]
- Estimated traffic impact: [+X%]
- Priority actions: [X]
## Current State
| Metric | Current | Target | Gap |
|--------|---------|--------|-----|
| Avg links per page | [X] | [X] | [X] |
| Orphan pages | [X] | 0 | [X] |
| Over-optimized anchors | [X]% | <10% | [X]% |
| Topic cluster coverage | [X]% | 100% | [X]% |
## Priority Actions
### Phase 1: Critical Fixes (Week 1)
**Fix Orphan Pages**:
- [ ] [URL] - Add links from [X] pages
- [ ] [URL] - Add links from [X] pages
**High-Value Link Additions**:
- [ ] Link [Page A] to [Page B] with "[anchor]"
- [ ] Link [Page A] to [Page C] with "[anchor]"
### Phase 2: Topic Clusters (Week 2-3)
**Cluster 1: [Topic]**
- [ ] Ensure pillar links to all [X] cluster articles
- [ ] Add [X] cross-links between cluster articles
**Cluster 2: [Topic]**
- [ ] [Tasks]
### Phase 3: Optimization (Week 4+)
**Anchor Text Diversity**:
- [ ] Vary anchors for [Page] - currently [X]% exact match
- [ ] [Additional tasks]
**Navigation Updates**:
- [ ] Add [Page] to main navigation
- [ ] Update footer links
## Implementation Guide
### Adding Internal Links
Best practices:
1. Add links contextually within content
2. Use descriptive anchor text (not "click here")
3. Link to relevant, helpful pages
4. Aim for 3-10 internal links per 1,000 words
5. Vary anchor text for the same target
### Anchor Text Guidelines
| Type | Example | Usage |
|------|---------|-------|
| Exact match | "keyword research" | 10-20% |
| Partial match | "tips for keyword research" | 30-40% |
| Branded | "Brand's guide to..." | 10-20% |
| Natural | "this article", "learn more" | 20-30% |
## Tracking Success
Monitor these metrics weekly:
- [ ] Rankings for target keywords
- [ ] Traffic to previously orphan pages
- [ ] Crawl stats in ~~search console
- [ ] Internal link distribution changes
```