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,308 @@
# Ranking Analysis Output Templates
Detailed output templates for each step of the rank tracking workflow. Use these templates when setting up tracking, recording snapshots, and generating reports.
---
## 1. Rank Tracking Setup Template
```markdown
## Rank Tracking Setup
### Tracking Configuration
**Domain**: [domain]
**Tracking Location**: [country/city]
**Device**: [Mobile/Desktop/Both]
**Language**: [language]
**Update Frequency**: [Daily/Weekly/Monthly]
### Keywords to Track
| Keyword | Volume | Current Rank | Type | Priority |
|---------|--------|--------------|------|----------|
| [keyword 1] | [vol] | [rank] | Primary | High |
| [keyword 2] | [vol] | [rank] | Primary | High |
| [keyword 3] | [vol] | [rank] | Secondary | Medium |
| [keyword 4] | [vol] | [rank] | Long-tail | Medium |
| [keyword 5] | [vol] | [rank] | Brand | High |
### Competitor Tracking
Track these competitors for benchmark:
1. [Competitor 1] - [domain]
2. [Competitor 2] - [domain]
3. [Competitor 3] - [domain]
### Tracking Categories
| Category | Keywords | Description |
|----------|----------|-------------|
| Brand | [X] | Brand name variations |
| Product | [X] | Product-related terms |
| Informational | [X] | Educational queries |
| Commercial | [X] | Buying intent terms |
```
---
## 2. Current Ranking Snapshot Template
```markdown
## Current Ranking Snapshot
**Date**: [date]
**Domain**: [domain]
### Ranking Overview
| Position Range | Keyword Count | % of Total |
|----------------|---------------|------------|
| #1 | [X] | [X]% |
| #2-3 | [X] | [X]% |
| #4-10 | [X] | [X]% |
| #11-20 | [X] | [X]% |
| #21-50 | [X] | [X]% |
| #51-100 | [X] | [X]% |
| Not ranking | [X] | [X]% |
### Position Distribution
```
Position 1: [X] keywords
Position 2-3: [X] keywords
Position 4-10: [X] keywords
Position 11-20: [X] keywords
Position 21+: [X] keywords
```
### Detailed Rankings
| Keyword | Position | URL | SERP Features | Change |
|---------|----------|-----|---------------|--------|
| [kw 1] | 3 | [url] | Featured Snippet | +2 |
| [kw 2] | 7 | [url] | PAA | -1 |
| [kw 3] | 12 | [url] | None | New |
| [kw 4] | 1 | [url] | Featured Snippet | Stable |
```
---
## 3. Ranking Change Analysis Template
```markdown
## Ranking Change Analysis
**Period**: [start date] to [end date]
### Overall Movement
| Metric | Start | End | Change |
|--------|-------|-----|--------|
| Avg Position | [X] | [Y] | [+/-Z] |
| Keywords in Top 10 | [X] | [Y] | [+/-Z] |
| Keywords in Top 3 | [X] | [Y] | [+/-Z] |
| Keywords #1 | [X] | [Y] | [+/-Z] |
### Biggest Improvements
| Keyword | Old Rank | New Rank | Change | Est. Traffic Impact |
|---------|----------|----------|--------|---------------------|
| [kw 1] | 15 | 4 | +11 | +[X] visits/mo |
| [kw 2] | 25 | 9 | +16 | +[X] visits/mo |
**Possible causes**:
- [kw 1]: [hypothesis - e.g., content refresh may have improved relevance]
### Biggest Declines
| Keyword | Old Rank | New Rank | Change | Est. Traffic Impact |
|---------|----------|----------|--------|---------------------|
| [kw 1] | 3 | 12 | -9 | -[X] visits/mo |
**Likely factors**:
- [kw 1]: [hypothesis - e.g., competitor may have published updated guide]
> These are hypotheses based on available signals, not confirmed causes. Investigate each with the relevant skill to confirm.
**Recommended actions**:
- [kw 1]: [action to recover]
### Stable Keywords
[X] keywords remained within +/-3 positions (stable)
### New Rankings
| Keyword | Position | URL | Notes |
|---------|----------|-----|-------|
| [kw 1] | [pos] | [url] | [notes] |
### Lost Rankings
| Keyword | Last Position | URL | Action |
|---------|---------------|-----|--------|
| [kw 1] | [pos] | [url] | [investigate/refresh] |
```
---
## 4. SERP Feature Tracking Template
```markdown
## SERP Feature Tracking
### Feature Ownership
| Feature | Your Count | Competitor Avg | Opportunity |
|---------|------------|----------------|-------------|
| Featured Snippets | [X] | [Y] | [+/-Z] |
| People Also Ask | [X] | [Y] | [+/-Z] |
| Image Pack | [X] | [Y] | [+/-Z] |
| Video Results | [X] | [Y] | [+/-Z] |
| Local Pack | [X] | [Y] | [+/-Z] |
### Featured Snippet Status
| Keyword | You Own? | Current Owner | Winnable? |
|---------|----------|---------------|-----------|
| [kw 1] | Yes | You | Maintain |
| [kw 2] | No | [Competitor] | High |
### PAA Appearances
| Question | Your Answer? | Position | Action |
|----------|--------------|----------|--------|
| [Question 1] | Yes/No | [pos] | [action] |
```
---
## 5. GEO/AI Visibility Tracking Template
```markdown
## AI/GEO Visibility Tracking
### AI Overview Presence
| Keyword | AI Overview | You Cited? | Citation Position |
|---------|-------------|------------|-------------------|
| [kw 1] | Yes | Yes | 1st source |
| [kw 2] | Yes | Yes | 3rd source |
| [kw 3] | Yes | No | Not cited |
| [kw 4] | No | N/A | N/A |
### AI Citation Rate
| Metric | Value |
|--------|-------|
| Keywords with AI Overview | [X]/[Total] ([Y]%) |
| Your citations in AI Overview | [X]/[Y] ([Z]%) |
| Avg citation position | [X] |
### GEO Performance Trend
| Period | AI Overviews Tracked | Your Citations | Rate |
|--------|---------------------|----------------|------|
| Last week | [X] | [Y] | [Z]% |
| 2 weeks ago | [X] | [Y] | [Z]% |
| Month ago | [X] | [Y] | [Z]% |
### GEO Improvement Opportunities
| Keyword | Has AI Overview | You Cited? | Content Gap |
|---------|-----------------|------------|-------------|
| [kw 1] | Yes | No | Need clearer definition |
| [kw 2] | Yes | No | Missing quotable stats |
```
---
## 6. Competitor Ranking Comparison Template
```markdown
## Competitor Ranking Comparison
### Share of Voice
| Domain | Keywords Ranked | Avg Position | Visibility |
|--------|-----------------|--------------|------------|
| [Your site] | [X] | [Y] | [Z]% |
| [Competitor 1] | [X] | [Y] | [Z]% |
| [Competitor 2] | [X] | [Y] | [Z]% |
### Head-to-Head Comparison
**You vs [Competitor 1]**:
| Keyword | Your Rank | Their Rank | Winner |
|---------|-----------|------------|--------|
| [kw 1] | 3 | 7 | You |
| [kw 2] | 12 | 5 | Them |
**Summary**: You win [X]/[Y] keywords vs [Competitor 1]
### Competitor Movement Alerts
| Competitor | Keyword | Their Change | Threat Level |
|------------|---------|--------------|--------------|
| [Comp 1] | [kw] | +15 positions | High |
| [Comp 2] | [kw] | +8 positions | Medium |
```
---
## 7. Ranking Performance Report Template
```markdown
# Ranking Performance Report
**Domain**: [domain]
**Report Period**: [start] to [end]
**Generated**: [date]
## Executive Summary
**Overall Trend**: [Improving/Stable/Declining]
| Metric | Value | vs Last Period | Status |
|--------|-------|----------------|--------|
| Total keywords tracked | [X] | [+/-Y] | [status] |
| Keywords in top 10 | [X] | [+/-Y] | [status] |
| Keywords in top 3 | [X] | [+/-Y] | [status] |
| Average position | [X] | [+/-Y] | [status] |
| Estimated traffic | [X] | [+/-Y]% | [status] |
## Key Highlights
### Wins
- [Achievement 1]
- [Achievement 2]
### Concerns
- [Issue 1]
- [Issue 2]
### Opportunities
- [Opportunity 1]
## Detailed Analysis
[Include top performing keywords, keywords needing attention, SERP features, GEO visibility, competitive position]
## Recommendations
### Immediate Actions
1. [Action] for [keyword] - [expected impact]
### This Month
1. [Action]
### Next Quarter
1. [Strategic action]
## Next Report
Scheduled: [date]
Focus areas: [areas to monitor]
```

View file

@ -0,0 +1,329 @@
# Rank Tracking Setup Guide
Comprehensive reference for configuring rank tracking systems. Covers tool configuration, keyword selection, grouping strategies, alert thresholds, reporting cadences, and data interpretation.
---
## 1. Tracking Tool Configuration
### Initial Setup Checklist
| Step | Action | Notes |
|------|--------|-------|
| 1 | Select tracking tool | ~~SEO tool with rank tracking capability |
| 2 | Add target domain | Primary domain + any subdomains |
| 3 | Set tracking location | Country, state/region, or city level |
| 4 | Configure device settings | Mobile, desktop, or both (recommended: both) |
| 5 | Set search engine | Google (primary), Bing (optional), local engines |
| 6 | Set language | Match target audience language |
| 7 | Configure update frequency | Daily for priority keywords, weekly for long-tail |
| 8 | Add competitor domains | 3-5 direct competitors |
| 9 | Import keyword list | From keyword research or existing tracking |
| 10 | Verify initial data pull | Confirm positions match manual spot checks |
### Location Configuration
Rank tracking results vary dramatically by location. Configure tracking to match your actual target market.
| Scenario | Location Setting | Example |
|----------|-----------------|---------|
| National business | Country level | United States |
| Regional business | State/region level | California, US |
| Local business | City level | San Francisco, CA, US |
| Multi-location | Separate project per location | NYC + LA + Chicago |
| International | Separate project per country | US + UK + Canada |
**Common mistake**: Tracking from a single location when your audience is distributed. If you serve multiple cities, track key terms in each city separately.
### Device Configuration
| Device | When to Track | Why |
|--------|--------------|-----|
| Desktop | Always | Baseline reference, still significant traffic |
| Mobile | Always | 60%+ of searches are mobile; rankings differ from desktop |
| Both separately | Recommended | Identify device-specific ranking issues |
| Tablet | Optional | Usually mirrors desktop closely |
### Update Frequency Recommendations
| Keyword Tier | Frequency | Rationale |
|-------------|-----------|-----------|
| Top 20 revenue keywords | Daily | Catch drops immediately |
| Brand keywords | Daily | Protect brand presence |
| Page 1 keywords (21-50) | 2-3x per week | Monitor competitive positions |
| Page 2 keywords (51-100) | Weekly | Track progress without excessive API usage |
| Long-tail / monitoring (100+) | Weekly | Cost-efficient tracking |
| New/experimental keywords | Daily for first 30 days, then adjust | Establish baseline quickly |
---
## 2. Keyword Selection for Tracking
### How Many Keywords to Track
| Site Size | Recommended Keywords | Breakdown |
|-----------|---------------------|-----------|
| Small (< 50 pages) | 50-100 | 10 brand + 20 primary + 20 secondary + rest long-tail |
| Medium (50-500 pages) | 100-500 | 20 brand + 50 primary + 100 secondary + rest long-tail |
| Large (500+ pages) | 500-2000+ | Scale proportionally; focus on revenue pages |
| Enterprise | 2000-10000+ | Comprehensive coverage with automated management |
### Keyword Selection Criteria
Select keywords for tracking based on these factors:
| Factor | Weight | Selection Rule |
|--------|--------|---------------|
| Revenue impact | High | Always track keywords that drive conversions |
| Search volume | Medium | Track keywords with meaningful volume for your niche |
| Current ranking | Medium | Track keywords where you rank (pages 1-3) plus targets |
| Competitive value | Medium | Track keywords your competitors target |
| Strategic importance | High | Track keywords aligned with business goals |
| Content investment | Medium | Track keywords for pages you invested in creating |
### Keyword Types to Include
| Type | % of Tracked Keywords | Examples |
|------|----------------------|---------|
| Brand keywords | 5-10% | "[brand name]", "[brand] + product", "[brand] reviews" |
| Primary commercial | 15-25% | "[product category]", "best [product]", "buy [product]" |
| Secondary commercial | 15-25% | "[product] for [use case]", "[product] vs [competitor]" |
| Informational | 20-30% | "how to [topic]", "what is [concept]", "[topic] guide" |
| Long-tail | 15-25% | Specific queries with 3+ words, lower volume |
| Local (if applicable) | 5-10% | "[service] near me", "[service] in [city]" |
### Keywords You Should NOT Track
| Skip These | Why |
|-----------|-----|
| Zero-volume keywords (unless strategic) | No measurable impact |
| Keywords you have no content for | Track only when you create targeting content |
| Extremely broad single-word terms | Too volatile, hard to rank, misleading data |
| Misspellings (unless significant volume) | Clutters reporting |
---
## 3. Keyword Grouping Strategies
Effective grouping transforms raw keyword data into strategic insights.
### Grouping Dimensions
| Dimension | Examples | Insight Gained |
|-----------|---------|----------------|
| **Topic cluster** | "email marketing", "email automation", "email templates" | Content hub performance |
| **Search intent** | Informational, commercial, transactional, navigational | Funnel stage performance |
| **Funnel stage** | Awareness, consideration, decision, retention | Buyer journey alignment |
| **Product/service** | Product A, Product B, Service C | Product line performance |
| **Content type** | Blog, landing page, product page, guide | Format effectiveness |
| **Priority tier** | Tier 1 (revenue), Tier 2 (growth), Tier 3 (monitor) | Resource allocation |
| **Page** | URL-level grouping | Page-specific performance |
| **Competitor overlap** | Keywords where you compete with specific rivals | Competitive intelligence |
### Recommended Group Hierarchy
```
Level 1: Business Unit / Product Line
└── Level 2: Topic Cluster / Category
└── Level 3: Search Intent
└── Level 4: Priority Tier
```
**Example:**
```
SaaS Product
└── Project Management
└── Commercial Intent
└── Tier 1: "project management software", "best PM tools"
└── Tier 2: "PM software for small teams", "agile PM tools"
└── Informational Intent
└── Tier 1: "what is project management", "PM methodologies"
└── Collaboration
└── Commercial Intent
└── Tier 1: "team collaboration software", "best collab tools"
```
### Group Naming Conventions
Use consistent, descriptive names:
| Pattern | Example | Benefit |
|---------|---------|---------|
| `[Category] - [Intent]` | "Email Marketing - Commercial" | Clear context |
| `[Product] / [Feature]` | "CRM / Lead Scoring" | Product-line clarity |
| `T1: [Topic]` | "T1: Core Product Terms" | Priority at a glance |
---
## 4. Alert Threshold Configuration
### Setting Baseline Thresholds
Before setting alerts, establish a baseline by tracking for 2-4 weeks without alerts to understand normal fluctuation ranges.
| Metric | Baseline Period | Normal Fluctuation | Alert When |
|--------|----------------|-------------------|------------|
| Individual keyword position | 2-4 weeks | +/- 2-3 positions | Exceeds normal range |
| Average position (all keywords) | 4 weeks | +/- 1-2 positions | Exceeds normal range |
| Keywords in top 10 | 4 weeks | +/- 5% | Drops >10% |
| Keywords in top 3 | 4 weeks | +/- 3% | Drops >5% |
### Alert Configuration by Keyword Tier
| Keyword Tier | Drop Alert | Gain Alert | Competitor Alert |
|-------------|-----------|-----------|-----------------|
| Tier 1 (revenue) | Drop >= 3 positions | Gain >= 3 positions | Competitor enters top 5 |
| Tier 2 (growth) | Drop >= 5 positions | Enters top 10 | Competitor overtakes you |
| Tier 3 (monitor) | Drop >= 10 positions | Enters top 20 | None |
| Brand | Any drop from #1 | N/A | Competitor ranks for your brand |
### Alert Delivery Preferences
| Alert Type | Channel | Frequency |
|-----------|---------|-----------|
| Critical drops (Tier 1) | Email + Slack | Immediate |
| Significant changes | Email | Daily digest |
| Weekly summary | Email | Every Monday |
| Monthly report | Email + dashboard | 1st of month |
---
## 5. Reporting Cadences
### Recommended Report Schedule
| Report Type | Audience | Frequency | Key Metrics |
|------------|----------|-----------|-------------|
| Quick pulse | SEO team | Daily | Major movements, alerts fired |
| Weekly summary | Marketing team | Weekly | Position changes, trends, actions taken |
| Monthly report | Stakeholders | Monthly | Full performance analysis, MoM comparisons |
| Quarterly review | Leadership | Quarterly | Strategic trends, ROI, competitive position |
| Annual review | Executive | Annually | YoY growth, strategic recommendations |
### Report Content by Cadence
**Daily Pulse (1-2 minutes to review):**
- Keywords with biggest position changes
- Alerts triggered
- Competitor movements
**Weekly Summary (5-10 minutes to review):**
- Position distribution changes
- Top 5 improvements and declines
- SERP feature wins/losses
- AI citation changes
- Week-over-week trend
**Monthly Report (15-30 minutes to review):**
- Full position distribution analysis
- Month-over-month trends
- Competitor share of voice
- SERP feature ownership
- GEO visibility trends
- Content performance by keyword group
- Recommendations for next month
**Quarterly Review (30-60 minutes to review):**
- Quarter-over-quarter trends
- Progress against annual goals
- Competitive landscape shifts
- Strategic keyword opportunities
- Budget and resource recommendations
---
## 6. Data Interpretation Guidelines
### Understanding Rank Fluctuations
| Pattern | Meaning | Action |
|---------|---------|--------|
| Daily +/- 1-2 positions | Normal fluctuation | Ignore; track weekly trend |
| Sudden drop 5+ positions, recovers in 2-3 days | Google testing / data center variation | Monitor, no action needed |
| Steady decline over 2+ weeks | Real ranking loss | Investigate cause (see Root Cause Taxonomy) |
| Sudden drop affecting many keywords | Algorithm update or technical issue | Check Search Status Dashboard + technical health |
| One keyword drops, others stable | Page-specific or competitor-specific issue | Analyze that specific SERP |
| All keywords for one URL drop | Page-level issue (noindex, 404, slow) | Check page technical health |
| Gradual improvement over weeks | SEO efforts working | Document what worked, continue strategy |
### Position vs. Traffic Relationship
Position changes do not translate linearly to traffic changes.
| Position Change | Estimated Traffic Impact |
|----------------|------------------------|
| #1 to #2 | -50% to -60% click loss |
| #2 to #3 | -25% to -30% click loss |
| #3 to #5 | -30% to -40% click loss |
| #5 to #10 | -50% to -60% click loss |
| #10 to #11 | -60% to -80% click loss (page 2 cliff) |
| #11 to #20 | Minimal additional loss (already low) |
**Key insight**: Moving from position #10 to #11 (page 1 to page 2) has a far greater impact than moving from #20 to #30. Prioritize keeping keywords on page 1.
### Interpreting Visibility Score
Visibility score combines position and search volume into a single metric.
| Visibility Change | Interpretation |
|-------------------|---------------|
| Increasing visibility, stable positions | Seasonal search volume increase |
| Decreasing visibility, stable positions | Seasonal search volume decrease |
| Increasing visibility, improving positions | SEO strategy is working |
| Decreasing visibility, declining positions | Ranking loss causing traffic decline |
| Stable visibility, mixed position changes | Gains offsetting losses |
### Comparing Against Competitors
| Competitive Signal | Meaning | Response |
|-------------------|---------|----------|
| Competitor visibility rising, yours stable | They are gaining, you may lose ground | Analyze their strategy, accelerate efforts |
| Your visibility rising faster than competitors | You are winning share of voice | Continue strategy, identify what is working |
| All competitors dropping simultaneously | Algorithm update affecting the niche | Focus on quality, wait for dust to settle |
| One competitor surging | They made a significant change | Analyze what they did (content? links? technical?) |
### Data Quality Checks
Always verify your tracking data quality.
| Check | How | Frequency |
|-------|-----|-----------|
| Spot-check positions manually | Incognito search for 5-10 keywords | Weekly |
| Compare with Search Console | Match tracked positions with GSC average position | Monthly |
| Check for tracking errors | Look for keywords showing "not found" or position 0 | Weekly |
| Verify competitor data | Spot-check competitor rankings manually | Monthly |
| Confirm location accuracy | Search from target location (VPN if needed) | Quarterly |
---
## 7. Common Pitfalls and How to Avoid Them
| Pitfall | Problem | Solution |
|---------|---------|----------|
| Tracking too many keywords | Dilutes focus, increases cost | Focus on keywords with business impact |
| Checking rankings too frequently | Obsessing over daily noise | Focus on weekly and monthly trends |
| Not segmenting data | Averages hide important patterns | Group by intent, topic, priority |
| Ignoring SERP features | Position alone does not tell the whole story | Track featured snippets, AI Overviews, PAA |
| Not tracking competitors | Your data lacks context | Always track 3-5 competitors |
| Single location tracking | Misses local variations | Track each target market separately |
| Forgetting mobile | Mobile and desktop rankings differ | Always track both devices |
| Not documenting changes | Cannot correlate changes to actions | Log all content updates, technical changes, link building |
---
## 8. Migration and Tool Switching
If you need to switch rank tracking tools, follow this process to preserve data continuity.
| Step | Action |
|------|--------|
| 1 | Export all historical data from current tool |
| 2 | Run both tools in parallel for 2-4 weeks |
| 3 | Compare data between tools to understand differences |
| 4 | Document any systematic position differences |
| 5 | Import historical data into new tool if supported |
| 6 | Reconfigure all alerts and reports in new tool |
| 7 | Decommission old tool after confidence in new data |
**Important**: Different tools may report slightly different positions due to data center sampling, timing, and methodology. A 1-2 position variance between tools is normal.