feat(FN-094): add comment line for deployment verification
Some checks failed
Sync dev → Gitea / Mirror dev to Gitea (push) Has been cancelled
Some checks failed
Sync dev → Gitea / Mirror dev to Gitea (push) Has been cancelled
- Added a comment line to main.ts for deployment verification purposes
This commit is contained in:
411
.agents/skills/seo-audit/SKILL.md
Normal file
411
.agents/skills/seo-audit/SKILL.md
Normal file
@@ -0,0 +1,411 @@
|
||||
---
|
||||
name: seo-audit
|
||||
description: When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," or "SEO health check." For building pages at scale to target keywords, see programmatic-seo. For adding structured data, see schema-markup.
|
||||
metadata:
|
||||
version: 1.0.0
|
||||
---
|
||||
|
||||
# SEO Audit
|
||||
|
||||
You are an expert in search engine optimization. Your goal is to identify SEO issues and provide actionable recommendations to improve organic search performance.
|
||||
|
||||
## Initial Assessment
|
||||
|
||||
**Check for product marketing context first:**
|
||||
If `.claude/product-marketing-context.md` exists, read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
|
||||
|
||||
Before auditing, understand:
|
||||
|
||||
1. **Site Context**
|
||||
- What type of site? (SaaS, e-commerce, blog, etc.)
|
||||
- What's the primary business goal for SEO?
|
||||
- What keywords/topics are priorities?
|
||||
|
||||
2. **Current State**
|
||||
- Any known issues or concerns?
|
||||
- Current organic traffic level?
|
||||
- Recent changes or migrations?
|
||||
|
||||
3. **Scope**
|
||||
- Full site audit or specific pages?
|
||||
- Technical + on-page, or one focus area?
|
||||
- Access to Search Console / analytics?
|
||||
|
||||
---
|
||||
|
||||
## Audit Framework
|
||||
|
||||
### ⚠️ Important: Schema Markup Detection Limitation
|
||||
|
||||
**`web_fetch` and `curl` cannot reliably detect structured data / schema markup.**
|
||||
|
||||
Many CMS plugins (AIOSEO, Yoast, RankMath) inject JSON-LD via client-side JavaScript — it won't appear in static HTML or `web_fetch` output (which strips `<script>` tags during conversion).
|
||||
|
||||
**To accurately check for schema markup, use one of these methods:**
|
||||
1. **Browser tool** — render the page and run: `document.querySelectorAll('script[type="application/ld+json"]')`
|
||||
2. **Google Rich Results Test** — https://search.google.com/test/rich-results
|
||||
3. **Screaming Frog export** — if the client provides one, use it (SF renders JavaScript)
|
||||
|
||||
**Never report "no schema found" based solely on `web_fetch` or `curl`.** This has led to false audit findings in production.
|
||||
|
||||
### Priority Order
|
||||
1. **Crawlability & Indexation** (can Google find and index it?)
|
||||
2. **Technical Foundations** (is the site fast and functional?)
|
||||
3. **On-Page Optimization** (is content optimized?)
|
||||
4. **Content Quality** (does it deserve to rank?)
|
||||
5. **Authority & Links** (does it have credibility?)
|
||||
|
||||
---
|
||||
|
||||
## Technical SEO Audit
|
||||
|
||||
### Crawlability
|
||||
|
||||
**Robots.txt**
|
||||
- Check for unintentional blocks
|
||||
- Verify important pages allowed
|
||||
- Check sitemap reference
|
||||
|
||||
**XML Sitemap**
|
||||
- Exists and accessible
|
||||
- Submitted to Search Console
|
||||
- Contains only canonical, indexable URLs
|
||||
- Updated regularly
|
||||
- Proper formatting
|
||||
|
||||
**Site Architecture**
|
||||
- Important pages within 3 clicks of homepage
|
||||
- Logical hierarchy
|
||||
- Internal linking structure
|
||||
- No orphan pages
|
||||
|
||||
**Crawl Budget Issues** (for large sites)
|
||||
- Parameterized URLs under control
|
||||
- Faceted navigation handled properly
|
||||
- Infinite scroll with pagination fallback
|
||||
- Session IDs not in URLs
|
||||
|
||||
### Indexation
|
||||
|
||||
**Index Status**
|
||||
- site:domain.com check
|
||||
- Search Console coverage report
|
||||
- Compare indexed vs. expected
|
||||
|
||||
**Indexation Issues**
|
||||
- Noindex tags on important pages
|
||||
- Canonicals pointing wrong direction
|
||||
- Redirect chains/loops
|
||||
- Soft 404s
|
||||
- Duplicate content without canonicals
|
||||
|
||||
**Canonicalization**
|
||||
- All pages have canonical tags
|
||||
- Self-referencing canonicals on unique pages
|
||||
- HTTP → HTTPS canonicals
|
||||
- www vs. non-www consistency
|
||||
- Trailing slash consistency
|
||||
|
||||
### Site Speed & Core Web Vitals
|
||||
|
||||
**Core Web Vitals**
|
||||
- LCP (Largest Contentful Paint): < 2.5s
|
||||
- INP (Interaction to Next Paint): < 200ms
|
||||
- CLS (Cumulative Layout Shift): < 0.1
|
||||
|
||||
**Speed Factors**
|
||||
- Server response time (TTFB)
|
||||
- Image optimization
|
||||
- JavaScript execution
|
||||
- CSS delivery
|
||||
- Caching headers
|
||||
- CDN usage
|
||||
- Font loading
|
||||
|
||||
**Tools**
|
||||
- PageSpeed Insights
|
||||
- WebPageTest
|
||||
- Chrome DevTools
|
||||
- Search Console Core Web Vitals report
|
||||
|
||||
### Mobile-Friendliness
|
||||
|
||||
- Responsive design (not separate m. site)
|
||||
- Tap target sizes
|
||||
- Viewport configured
|
||||
- No horizontal scroll
|
||||
- Same content as desktop
|
||||
- Mobile-first indexing readiness
|
||||
|
||||
### Security & HTTPS
|
||||
|
||||
- HTTPS across entire site
|
||||
- Valid SSL certificate
|
||||
- No mixed content
|
||||
- HTTP → HTTPS redirects
|
||||
- HSTS header (bonus)
|
||||
|
||||
### URL Structure
|
||||
|
||||
- Readable, descriptive URLs
|
||||
- Keywords in URLs where natural
|
||||
- Consistent structure
|
||||
- No unnecessary parameters
|
||||
- Lowercase and hyphen-separated
|
||||
|
||||
---
|
||||
|
||||
## On-Page SEO Audit
|
||||
|
||||
### Title Tags
|
||||
|
||||
**Check for:**
|
||||
- Unique titles for each page
|
||||
- Primary keyword near beginning
|
||||
- 50-60 characters (visible in SERP)
|
||||
- Compelling and click-worthy
|
||||
- Brand name placement (end, usually)
|
||||
|
||||
**Common issues:**
|
||||
- Duplicate titles
|
||||
- Too long (truncated)
|
||||
- Too short (wasted opportunity)
|
||||
- Keyword stuffing
|
||||
- Missing entirely
|
||||
|
||||
### Meta Descriptions
|
||||
|
||||
**Check for:**
|
||||
- Unique descriptions per page
|
||||
- 150-160 characters
|
||||
- Includes primary keyword
|
||||
- Clear value proposition
|
||||
- Call to action
|
||||
|
||||
**Common issues:**
|
||||
- Duplicate descriptions
|
||||
- Auto-generated garbage
|
||||
- Too long/short
|
||||
- No compelling reason to click
|
||||
|
||||
### Heading Structure
|
||||
|
||||
**Check for:**
|
||||
- One H1 per page
|
||||
- H1 contains primary keyword
|
||||
- Logical hierarchy (H1 → H2 → H3)
|
||||
- Headings describe content
|
||||
- Not just for styling
|
||||
|
||||
**Common issues:**
|
||||
- Multiple H1s
|
||||
- Skip levels (H1 → H3)
|
||||
- Headings used for styling only
|
||||
- No H1 on page
|
||||
|
||||
### Content Optimization
|
||||
|
||||
**Primary Page Content**
|
||||
- Keyword in first 100 words
|
||||
- Related keywords naturally used
|
||||
- Sufficient depth/length for topic
|
||||
- Answers search intent
|
||||
- Better than competitors
|
||||
|
||||
**Thin Content Issues**
|
||||
- Pages with little unique content
|
||||
- Tag/category pages with no value
|
||||
- Doorway pages
|
||||
- Duplicate or near-duplicate content
|
||||
|
||||
### Image Optimization
|
||||
|
||||
**Check for:**
|
||||
- Descriptive file names
|
||||
- Alt text on all images
|
||||
- Alt text describes image
|
||||
- Compressed file sizes
|
||||
- Modern formats (WebP)
|
||||
- Lazy loading implemented
|
||||
- Responsive images
|
||||
|
||||
### Internal Linking
|
||||
|
||||
**Check for:**
|
||||
- Important pages well-linked
|
||||
- Descriptive anchor text
|
||||
- Logical link relationships
|
||||
- No broken internal links
|
||||
- Reasonable link count per page
|
||||
|
||||
**Common issues:**
|
||||
- Orphan pages (no internal links)
|
||||
- Over-optimized anchor text
|
||||
- Important pages buried
|
||||
- Excessive footer/sidebar links
|
||||
|
||||
### Keyword Targeting
|
||||
|
||||
**Per Page**
|
||||
- Clear primary keyword target
|
||||
- Title, H1, URL aligned
|
||||
- Content satisfies search intent
|
||||
- Not competing with other pages (cannibalization)
|
||||
|
||||
**Site-Wide**
|
||||
- Keyword mapping document
|
||||
- No major gaps in coverage
|
||||
- No keyword cannibalization
|
||||
- Logical topical clusters
|
||||
|
||||
---
|
||||
|
||||
## Content Quality Assessment
|
||||
|
||||
### E-E-A-T Signals
|
||||
|
||||
**Experience**
|
||||
- First-hand experience demonstrated
|
||||
- Original insights/data
|
||||
- Real examples and case studies
|
||||
|
||||
**Expertise**
|
||||
- Author credentials visible
|
||||
- Accurate, detailed information
|
||||
- Properly sourced claims
|
||||
|
||||
**Authoritativeness**
|
||||
- Recognized in the space
|
||||
- Cited by others
|
||||
- Industry credentials
|
||||
|
||||
**Trustworthiness**
|
||||
- Accurate information
|
||||
- Transparent about business
|
||||
- Contact information available
|
||||
- Privacy policy, terms
|
||||
- Secure site (HTTPS)
|
||||
|
||||
### Content Depth
|
||||
|
||||
- Comprehensive coverage of topic
|
||||
- Answers follow-up questions
|
||||
- Better than top-ranking competitors
|
||||
- Updated and current
|
||||
|
||||
### User Engagement Signals
|
||||
|
||||
- Time on page
|
||||
- Bounce rate in context
|
||||
- Pages per session
|
||||
- Return visits
|
||||
|
||||
---
|
||||
|
||||
## Common Issues by Site Type
|
||||
|
||||
### SaaS/Product Sites
|
||||
- Product pages lack content depth
|
||||
- Blog not integrated with product pages
|
||||
- Missing comparison/alternative pages
|
||||
- Feature pages thin on content
|
||||
- No glossary/educational content
|
||||
|
||||
### E-commerce
|
||||
- Thin category pages
|
||||
- Duplicate product descriptions
|
||||
- Missing product schema
|
||||
- Faceted navigation creating duplicates
|
||||
- Out-of-stock pages mishandled
|
||||
|
||||
### Content/Blog Sites
|
||||
- Outdated content not refreshed
|
||||
- Keyword cannibalization
|
||||
- No topical clustering
|
||||
- Poor internal linking
|
||||
- Missing author pages
|
||||
|
||||
### Local Business
|
||||
- Inconsistent NAP
|
||||
- Missing local schema
|
||||
- No Google Business Profile optimization
|
||||
- Missing location pages
|
||||
- No local content
|
||||
|
||||
---
|
||||
|
||||
## Output Format
|
||||
|
||||
### Audit Report Structure
|
||||
|
||||
**Executive Summary**
|
||||
- Overall health assessment
|
||||
- Top 3-5 priority issues
|
||||
- Quick wins identified
|
||||
|
||||
**Technical SEO Findings**
|
||||
For each issue:
|
||||
- **Issue**: What's wrong
|
||||
- **Impact**: SEO impact (High/Medium/Low)
|
||||
- **Evidence**: How you found it
|
||||
- **Fix**: Specific recommendation
|
||||
- **Priority**: 1-5 or High/Medium/Low
|
||||
|
||||
**On-Page SEO Findings**
|
||||
Same format as above
|
||||
|
||||
**Content Findings**
|
||||
Same format as above
|
||||
|
||||
**Prioritized Action Plan**
|
||||
1. Critical fixes (blocking indexation/ranking)
|
||||
2. High-impact improvements
|
||||
3. Quick wins (easy, immediate benefit)
|
||||
4. Long-term recommendations
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- [AI Writing Detection](references/ai-writing-detection.md): Common AI writing patterns to avoid (em dashes, overused phrases, filler words)
|
||||
- For AI search optimization (AEO, GEO, LLMO, AI Overviews), see the **ai-seo** skill
|
||||
|
||||
---
|
||||
|
||||
## Tools Referenced
|
||||
|
||||
**Free Tools**
|
||||
- Google Search Console (essential)
|
||||
- Google PageSpeed Insights
|
||||
- Bing Webmaster Tools
|
||||
- Rich Results Test (**use this for schema validation — it renders JavaScript**)
|
||||
- Mobile-Friendly Test
|
||||
- Schema Validator
|
||||
|
||||
> **Note on schema detection:** `web_fetch` strips `<script>` tags (including JSON-LD) and cannot detect JS-injected schema. Always use the browser tool, Rich Results Test, or Screaming Frog for schema checks. See the warning at the top of the Audit Framework section.
|
||||
|
||||
**Paid Tools** (if available)
|
||||
- Screaming Frog
|
||||
- Ahrefs / Semrush
|
||||
- Sitebulb
|
||||
- ContentKing
|
||||
|
||||
---
|
||||
|
||||
## Task-Specific Questions
|
||||
|
||||
1. What pages/keywords matter most?
|
||||
2. Do you have Search Console access?
|
||||
3. Any recent changes or migrations?
|
||||
4. Who are your top organic competitors?
|
||||
5. What's your current organic traffic baseline?
|
||||
|
||||
---
|
||||
|
||||
## Related Skills
|
||||
|
||||
- **ai-seo**: For optimizing content for AI search engines (AEO, GEO, LLMO)
|
||||
- **programmatic-seo**: For building SEO pages at scale
|
||||
- **schema-markup**: For implementing structured data
|
||||
- **page-cro**: For optimizing pages for conversion (not just ranking)
|
||||
- **analytics-tracking**: For measuring SEO performance
|
||||
200
.agents/skills/seo-audit/references/ai-writing-detection.md
Normal file
200
.agents/skills/seo-audit/references/ai-writing-detection.md
Normal file
@@ -0,0 +1,200 @@
|
||||
# AI Writing Detection
|
||||
|
||||
Words, phrases, and punctuation patterns commonly associated with AI-generated text. Avoid these to ensure writing sounds natural and human.
|
||||
|
||||
Sources: Grammarly (2025), Microsoft 365 Life Hacks (2025), GPTHuman (2025), Walter Writes (2025), Textero (2025), Plagiarism Today (2025), Rolling Stone (2025), MDPI Blog (2025)
|
||||
|
||||
---
|
||||
|
||||
## Contents
|
||||
- Em Dashes: The Primary AI Tell
|
||||
- Overused Verbs
|
||||
- Overused Adjectives
|
||||
- Overused Transitions and Connectors
|
||||
- Phrases That Signal AI Writing (Opening Phrases, Transitional Phrases, Concluding Phrases, Structural Patterns)
|
||||
- Filler Words and Empty Intensifiers
|
||||
- Academic-Specific AI Tells
|
||||
- How to Self-Check
|
||||
|
||||
## Em Dashes: The Primary AI Tell
|
||||
|
||||
**The em dash (—) has become one of the most reliable markers of AI-generated content.**
|
||||
|
||||
Em dashes are longer than hyphens (-) and are used for emphasis, interruptions, or parenthetical information. While they have legitimate uses in writing, AI models drastically overuse them.
|
||||
|
||||
### Why Em Dashes Signal AI Writing
|
||||
- AI models were trained on edited books, academic papers, and style guides where em dashes appear frequently
|
||||
- AI uses em dashes as a shortcut for sentence variety instead of commas, colons, or parentheses
|
||||
- Most human writers rarely use em dashes because they don't exist as a standard keyboard key
|
||||
- The overuse is so consistent that it has become the unofficial signature of ChatGPT writing
|
||||
|
||||
### What To Do Instead
|
||||
| Instead of | Use |
|
||||
|------------|-----|
|
||||
| The results—which were surprising—showed... | The results, which were surprising, showed... |
|
||||
| This approach—unlike traditional methods—allows... | This approach, unlike traditional methods, allows... |
|
||||
| The study found—as expected—that... | The study found, as expected, that... |
|
||||
| Communication skills—both written and verbal—are essential | Communication skills (both written and verbal) are essential |
|
||||
|
||||
### Guidelines
|
||||
- Use commas for most parenthetical information
|
||||
- Use colons to introduce explanations or lists
|
||||
- Use parentheses for supplementary information
|
||||
- Reserve em dashes for rare, deliberate emphasis only
|
||||
- If you find yourself using more than one em dash per page, revise
|
||||
|
||||
---
|
||||
|
||||
## Overused Verbs
|
||||
|
||||
| Avoid | Use Instead |
|
||||
|-------|-------------|
|
||||
| delve (into) | explore, examine, investigate, look at |
|
||||
| leverage | use, apply, draw on |
|
||||
| optimise | improve, refine, enhance |
|
||||
| utilise | use |
|
||||
| facilitate | help, enable, support |
|
||||
| foster | encourage, support, develop, nurture |
|
||||
| bolster | strengthen, support, reinforce |
|
||||
| underscore | emphasise, highlight, stress |
|
||||
| unveil | reveal, show, introduce, present |
|
||||
| navigate | manage, handle, work through |
|
||||
| streamline | simplify, make more efficient |
|
||||
| enhance | improve, strengthen |
|
||||
| endeavour | try, attempt, effort |
|
||||
| ascertain | find out, determine, establish |
|
||||
| elucidate | explain, clarify, make clear |
|
||||
|
||||
---
|
||||
|
||||
## Overused Adjectives
|
||||
|
||||
| Avoid | Use Instead |
|
||||
|-------|-------------|
|
||||
| robust | strong, reliable, thorough, solid |
|
||||
| comprehensive | complete, thorough, full, detailed |
|
||||
| pivotal | key, critical, central, important |
|
||||
| crucial | important, key, essential, critical |
|
||||
| vital | important, essential, necessary |
|
||||
| transformative | significant, important, major |
|
||||
| cutting-edge | new, advanced, recent, modern |
|
||||
| groundbreaking | new, original, significant |
|
||||
| innovative | new, original, creative |
|
||||
| seamless | smooth, easy, effortless |
|
||||
| intricate | complex, detailed, complicated |
|
||||
| nuanced | subtle, complex, detailed |
|
||||
| multifaceted | complex, varied, diverse |
|
||||
| holistic | complete, whole, comprehensive |
|
||||
|
||||
---
|
||||
|
||||
## Overused Transitions and Connectors
|
||||
|
||||
| Avoid | Use Instead |
|
||||
|-------|-------------|
|
||||
| furthermore | also, in addition, and |
|
||||
| moreover | also, and, besides |
|
||||
| notwithstanding | despite, even so, still |
|
||||
| that being said | however, but, still |
|
||||
| at its core | essentially, fundamentally, basically |
|
||||
| to put it simply | in short, simply put |
|
||||
| it is worth noting that | note that, importantly |
|
||||
| in the realm of | in, within, regarding |
|
||||
| in the landscape of | in, within |
|
||||
| in today's [anything] | currently, now, today |
|
||||
|
||||
---
|
||||
|
||||
## Phrases That Signal AI Writing
|
||||
|
||||
### Opening Phrases to Avoid
|
||||
- "In today's fast-paced world..."
|
||||
- "In today's digital age..."
|
||||
- "In an era of..."
|
||||
- "In the ever-evolving landscape of..."
|
||||
- "In the realm of..."
|
||||
- "It's important to note that..."
|
||||
- "Let's delve into..."
|
||||
- "Imagine a world where..."
|
||||
|
||||
### Transitional Phrases to Avoid
|
||||
- "That being said..."
|
||||
- "With that in mind..."
|
||||
- "It's worth mentioning that..."
|
||||
- "At its core..."
|
||||
- "To put it simply..."
|
||||
- "In essence..."
|
||||
- "This begs the question..."
|
||||
|
||||
### Concluding Phrases to Avoid
|
||||
- "In conclusion..."
|
||||
- "To sum up..."
|
||||
- "By [doing X], you can [achieve Y]..."
|
||||
- "In the final analysis..."
|
||||
- "All things considered..."
|
||||
- "At the end of the day..."
|
||||
|
||||
### Structural Patterns to Avoid
|
||||
- "Whether you're a [X], [Y], or [Z]..." (listing three examples after "whether")
|
||||
- "It's not just [X], it's also [Y]..."
|
||||
- "Think of [X] as [elaborate metaphor]..."
|
||||
- Starting sentences with "By" followed by a gerund: "By understanding X, you can Y..."
|
||||
|
||||
---
|
||||
|
||||
## Filler Words and Empty Intensifiers
|
||||
|
||||
These words often add nothing to meaning. Remove them or find specific alternatives:
|
||||
|
||||
- absolutely
|
||||
- actually
|
||||
- basically
|
||||
- certainly
|
||||
- clearly
|
||||
- definitely
|
||||
- essentially
|
||||
- extremely
|
||||
- fundamentally
|
||||
- incredibly
|
||||
- interestingly
|
||||
- naturally
|
||||
- obviously
|
||||
- quite
|
||||
- really
|
||||
- significantly
|
||||
- simply
|
||||
- surely
|
||||
- truly
|
||||
- ultimately
|
||||
- undoubtedly
|
||||
- very
|
||||
|
||||
---
|
||||
|
||||
## Academic-Specific AI Tells
|
||||
|
||||
| Avoid | Use Instead |
|
||||
|-------|-------------|
|
||||
| shed light on | clarify, explain, reveal |
|
||||
| pave the way for | enable, allow, make possible |
|
||||
| a myriad of | many, numerous, various |
|
||||
| a plethora of | many, numerous, several |
|
||||
| paramount | very important, essential, critical |
|
||||
| pertaining to | about, regarding, concerning |
|
||||
| prior to | before |
|
||||
| subsequent to | after |
|
||||
| in light of | because of, given, considering |
|
||||
| with respect to | about, regarding, for |
|
||||
| in terms of | regarding, for, about |
|
||||
| the fact that | that (or rewrite sentence) |
|
||||
|
||||
---
|
||||
|
||||
## How to Self-Check
|
||||
|
||||
1. Read your text aloud. If phrases sound unnatural in speech, revise them
|
||||
2. Ask: "Would I say this in a conversation with a colleague?"
|
||||
3. Check for repetitive sentence structures
|
||||
4. Look for clusters of the words listed above
|
||||
5. Ensure varied sentence lengths (not all similar length)
|
||||
6. Verify each intensifier adds genuine meaning
|
||||
Reference in New Issue
Block a user