webflow/webflow-mcp:link-checker
Find and fix broken or insecure links across an entire site, including CMS content, to improve SEO and user experience. Audits HTTP/HTTPS issues and validates all internal and external links.
npx skills add https://github.com/webflow/webflow-skills --skill webflow-mcp:link-checker
Audit and fix broken or insecure links across your Webflow site to improve SEO and user experience.
ALWAYS use Webflow MCP tools for all operations:
webflow_guide_tool to get best practices before startingdata_sites_tool with action list_sites to identify available sitesdata_sites_tool with action get_site to retrieve site detailsdata_pages_tool with action list_pages to get all pagesdata_pages_tool with action get_page_content to extract links from static pagesdata_pages_tool with action update_static_content to fix links on static pagesdata_cms_tool with action get_collection_list to get all CMS collectionsdata_cms_tool with action get_collection_details to get collection schemasdata_cms_tool with action list_collection_items to get CMS items with linksdata_cms_tool with action update_collection_items to fix links in CMS (draft)data_cms_tool with action publish_collection_items to publish fixed CMS itemscontext parameter (15-25 words, third-person perspective)data_ toolsdata_sites_tool with action list_sites to identify target sitedata_pages_tool with action list_pages to get all pagesdata_cms_tool with action get_collection_list to get all CMS collectionsdata_pages_tool with action get_page_content for each pagedata_cms_tool with action list_collection_items for each collection10. Generate health score: Calculate link health (0-100)
11. Identify critical issues: Prioritize fixes
12. Generate fix suggestions: For each problematic link, suggest fix
13. Show preview with validation:
[1] ✓ Fix insecure link
Page: About Us
Element: Button "Learn More"
Current: http://example.com
Suggested: https://example.com
✅ HTTPS version verified working
[2] ⚠️ Fix broken link
Page: Blog Post "Getting Started"
Element: Text link
Current: https://oldsite.com/page
Suggested: [REMOVE LINK or provide correct URL]
❌ URL returns 404 - manual review needed
14. Implement granular approval: Ask user which fixes to apply
15. Apply fixes to static pages: Use Webflow MCP's data_pages_tool with action update_static_content
16. Apply fixes to CMS content: Use Webflow MCP's data_cms_tool with action update_collection_items
17. Publish changes (if requested): Use Webflow MCP's data_cms_tool with action publish_collection_items
18. Show progress: Display progress indicators for large operations
19. Generate final report:
20. Verify fixes: Re-check fixed links to confirm success
21. Report failures: Clearly identify any fixes that failed
22. Provide recommendations:
23. Export report (optional): Offer to export findings
User prompt:
Run a complete link check on my site and fix any issues
Step 1: Site Selection
🔍 Link Checker: Site Selection
Available sites:
1. Company Website
2. Blog Site
3. Portfolio
Which site would you like to audit? (1/2/3)
Step 2: Scope Confirmation
📋 Link Checker Scope
What would you like to check?
1. Static pages only (faster)
2. CMS content only
3. Both static pages and CMS content (comprehensive)
Recommendation: Option 3 for complete audit
Your choice? (1/2/3)
Step 3: Extraction & Validation
🔄 Scanning Links...
Progress: ████████████████████ 100%
Found 247 links:
├── Static pages: 89 links (15 pages)
├── CMS content: 158 links (3 collections)
│ ├── Blog Posts: 142 links
│ ├── Team Members: 12 links
│ └── Products: 4 links
Validating links...
Progress: ████████████████████ 100% (247/247 checked)
✅ Working: 215 links (87%)
❌ Broken: 8 links (3%)
⚠️ Insecure: 18 links (7%)
🔄 Redirects: 6 links (2%)
Step 4: Analysis Report
📊 Link Health Report: Company Website
Overall Health Score: 76/100 ⚠️
## Issues Found:
### 🔴 Critical: Broken Links (8)
├── [1] Page: "About Us"
│ └── Link to: https://partner-site.com/old-page
│ Status: 404 Not Found
│ Impact: High (homepage)
│
├── [2] CMS: Blog Post "Product Launch"
│ └── Link to: https://press-release.com/announcement
│ Status: 404 Not Found
│ Impact: Medium
│
├── [3-8] 6 more broken links...
### ⚠️ Warning: Insecure Links (18)
├── [9] Page: "Contact"
│ └── Link: http://social-media.com/company
│ Fix: https://social-media.com/company
│ ✅ HTTPS verified working
│
├── [10] CMS: Blog Post "Getting Started"
│ └── Link: http://tutorial-site.com
│ Fix: https://tutorial-site.com
│ ✅ HTTPS verified working
│
├── [11-26] 16 more insecure links...
### 💡 Suggestion: Redirects (6)
├── [27] Page: "Services"
│ └── Link: https://example.com/old-url
│ Redirects to: https://example.com/new-url
│ Suggestion: Update to final destination
│
├── [28-32] 5 more redirects...
---
💡 Recommendations:
1. Fix 8 broken links immediately (SEO impact)
2. Upgrade 18 HTTP links to HTTPS (security)
3. Update 6 redirects to final URLs (performance)
Estimated time to fix: ~5 minutes
Step 5: Fix Preview
🔧 Proposed Fixes (26 total)
### Automatic Fixes Available (24):
[1] ✓ Upgrade to HTTPS
Page: Contact
Element: Button "Follow Us"
Current: http://social-media.com/company
New: https://social-media.com/company
✅ HTTPS verified working
[2] ✓ Upgrade to HTTPS
CMS: Blog Posts > "Getting Started" > content field
Current: http://tutorial-site.com
New: https://tutorial-site.com
✅ HTTPS verified working
[3] ✓ Update redirect
Page: Services
Element: Text link "Learn more"
Current: https://example.com/old-url
New: https://example.com/new-url
✅ Final destination verified
[4-24] ... 21 more automatic fixes
### Manual Review Required (2):
[25] ⚠️ Broken link - needs correction
Page: About Us
Element: Button "View Partner Site"
Current: https://partner-site.com/old-page
Issue: 404 Not Found
Action needed: Provide correct URL or remove link
[26] ⚠️ Broken link - needs correction
CMS: Blog Posts > "Product Launch" > content field
Current: https://press-release.com/announcement
Issue: 404 Not Found
Action needed: Update with correct URL or remove
---
Which fixes would you like to apply?
- Type "all" to apply all 24 automatic fixes
- Type numbers to skip (e.g., "3,5,7")
- Type "none" to cancel
Step 6: After User Approves "all"
✅ Applying Fixes...
Progress: ████████████████████ 100%
Static Pages:
- Updated 8 links on 5 pages
- ✅ Contact page: 3 links fixed
- ✅ Services page: 2 links fixed
- ✅ About page: 1 link fixed
- ✅ Blog page: 2 links fixed
CMS Content:
- Updated 16 links in 12 items
- ✅ Blog Posts: 14 links fixed
- ✅ Team Members: 2 links fixed
---
🎉 Link Fixes Complete!
Summary:
- Links scanned: 247
- Links fixed: 24 ✅
- Manual review needed: 2 ⚠️
- Failed: 0 ❌
Health Score: 76 → 95 (+19) ✨
---
⚠️ Manual Review Items:
[1] About Us page - broken partner link
Current: https://partner-site.com/old-page
Action: Update or remove manually
[2] Blog post "Product Launch" - broken press release
Current: https://press-release.com/announcement
Action: Update or remove manually
---
💡 Next Steps:
1. Fix the 2 manual review items
2. Re-run link checker in 1 month
3. Set up monitoring for critical external links
4. Consider 301 redirects for any URL changes
Would you like to export this report? (yes/no)
User prompt:
Check all links in my blog posts
Step 1: Collection Selection
🔍 Link Checker: CMS Collections
Found 3 collections:
1. Blog Posts (47 items)
2. Team Members (8 items)
3. Categories (6 items)
You requested blog posts. Checking "Blog Posts" collection...
Step 2: Link Extraction
🔄 Extracting Links from Blog Posts...
Progress: ████████████████████ 100% (47/47 items)
Found 142 links in Blog Posts:
├── Link fields: 23 links
├── Rich Text content: 119 links
└── Total unique URLs: 87 (55 appear multiple times)
Validating links...
Progress: ████████████████████ 100% (87/87 unique URLs checked)
Results:
✅ Working: 79 links (91%)
❌ Broken: 3 links (3%)
⚠️ Insecure: 5 links (6%)
🔄 Redirects: 0 links
Step 3: Issue Report
📊 Blog Posts Link Health: 91/100 ✅
## Issues Found:
### 🔴 Broken Links (3):
[1] Post: "Getting Started with Webflow"
Field: content (Rich Text)
Link: https://old-docs.example.com/guide
Status: 404 Not Found
Appears in: 3 posts
[2] Post: "Best Practices 2024"
Field: external-link (Link)
Link: https://expired-resource.com
Status: 410 Gone
[3] Post: "Tutorial Series Part 3"
Field: content (Rich Text)
Link: https://video-host.com/deleted-video
Status: 404 Not Found
### ⚠️ Insecure Links (5):
[4] Post: "Case Study: Company A"
Field: content (Rich Text)
Link: http://company-a-site.com
Fix: https://company-a-site.com
✅ HTTPS available and working
[5-8] 4 more insecure links...
---
🔧 Proposed Fixes:
[1] ⚠️ Remove broken link (manual review)
Posts affected: 3 (Getting Started, Tutorial 1, Tutorial 2)
Link: https://old-docs.example.com/guide
Suggestion: Update to new docs URL if available
[2] ⚠️ Remove broken link (manual review)
Post: "Best Practices 2024"
Link: https://expired-resource.com
Suggestion: Remove or replace with alternative
[3] ⚠️ Remove broken link (manual review)
Post: "Tutorial Series Part 3"
Link: https://video-host.com/deleted-video
Suggestion: Update with new video URL
[4] ✓ Upgrade to HTTPS
Post: "Case Study: Company A"
Current: http://company-a-site.com
New: https://company-a-site.com
✅ HTTPS verified working
[5-8] ... 4 more HTTPS upgrades
---
Which fixes would you like to apply?
- Type "4-8" to apply only HTTPS upgrades
- Type "all" for all automatic fixes
- Type "none" to cancel
User prompt:
Quick check on my static pages for broken links
Response:
🔍 Quick Link Check: Static Pages
Scanning 15 static pages...
Progress: ████████████████████ 100%
Found 89 links across 15 pages
Validation Results:
✅ All links working! (89/89)
Health Score: 100/100 ✨
Your static pages have no broken or insecure links.
💡 Tip: Run a full audit including CMS content for comprehensive coverage.
User prompt:
I have some broken links on my About page. Can you fix them?
Response:
🔍 Checking Links on "About" Page...
Found 12 links on About page
Validation Results:
✅ Working: 9 links
❌ Broken: 2 links
⚠️ Insecure: 1 link
---
Issues Found:
[1] ❌ Broken: Partner site link
Element: Button "Visit Partner"
Link: https://partner-old-site.com
Status: 404 Not Found
Fix: Manual review needed
[2] ❌ Broken: Team member profile
Element: Text link "Meet Sarah"
Link: /team/sarah-old-profile
Status: 404 Not Found
Fix: Update to /team/sarah-johnson?
[3] ⚠️ Insecure: Social media link
Element: Link "Follow us"
Link: http://social.com/company
Fix: https://social.com/company
✅ HTTPS verified
---
Which fixes would you like to apply?
- Type "3" to only fix the insecure link
- Type "2,3" to fix items 2 and 3
- Type "all" for automatic fixes
- Type "none" to cancel
Note: Item [1] requires manual correction with correct URL
Site Selection:
data_sites_tool with action list_sites to get available sitesScope Definition:
Collection Selection:
Static Page Link Extraction:
data_pages_tool with action get_page_content to get page nodesCMS Link Extraction:
data_cms_tool with action get_collection_details to identify Link and Rich Text fieldsdata_cms_tool with action list_collection_items to get all itemsLink Validation:
Categorization Rules:
✅ Working (2xx):
- 200 OK
- 201 Created
- 204 No Content
❌ Broken (4xx/5xx):
- 400 Bad Request
- 401 Unauthorized
- 403 Forbidden
- 404 Not Found
- 410 Gone
- 500 Internal Server Error
- 502 Bad Gateway
- 503 Service Unavailable
⚠️ Insecure (HTTP):
- URL starts with http://
- HTTPS equivalent exists and returns 2xx
- Mark as "upgrade to HTTPS"
🔄 Redirects (3xx):
- 301 Moved Permanently
- 302 Found
- 307 Temporary Redirect
- 308 Permanent Redirect
⚪ Manual Review:
- Timeout errors
- DNS resolution failures
- Connection refused
- SSL certificate errors
Health Score Calculation:
Formula:
1. Base score = 100
2. Working links: No change
3. Broken links: -5 points each
4. Insecure links: -2 points each
5. Redirects: -1 point each
6. Minimum score: 0
7. Maximum score: 100
Example:
- Total links: 200
- Working: 180 (no penalty)
- Broken: 5 (−25 points)
- Insecure: 10 (−20 points)
- Redirects: 5 (−5 points)
- Score: 100 − 25 − 20 − 5 = 50/100
Issue Prioritization:
🔴 Critical (fix immediately):
- Broken links on homepage
- Broken links on high-traffic pages
- Broken links in navigation
- 404 errors on important external references
⚠️ Warning (fix soon):
- Insecure HTTP links (security risk)
- Broken links on blog posts
- Broken links in footer
- 410 Gone errors
💡 Suggestion (optimize):
- 301 redirects (update to final destination)
- 302 redirects (may change, monitor)
- External links with slow response times
Statistics to Report:
Essential:
- Total links scanned
- Working links count & percentage
- Broken links count & percentage
- Insecure links count & percentage
- Redirect links count & percentage
Detailed:
- Links by location (static vs CMS)
- Links by type (internal vs external)
- Most common issues
- Pages/items with most issues
- External domains with most broken links
Automatic Fix Criteria:
Can auto-fix:
✅ HTTP → HTTPS (if HTTPS verified working)
✅ Redirects → Final destination (if final URL verified)
✅ Relative URLs → Absolute URLs (for external sites)
Needs manual review:
⚠️ Broken links (404, 410, 5xx) - requires correct URL
⚠️ HTTP with no HTTPS equivalent
⚠️ Timeouts or connection errors
⚠️ SSL certificate errors
⚠️ Authentication required (401, 403)
Preview Format:
[X] ✓ Auto-fix available
Location: [Page name or CMS item]
Element: [Element type + text]
Current: [Current URL]
New: [Proposed URL]
✅ Verification: [Status]
[Y] ⚠️ Manual review needed
Location: [Page name or CMS item]
Element: [Element type + text]
Current: [Current URL]
Issue: [Error description]
Suggestion: [What to do]
Granular Approval:
Static Page Updates:
Requirements:
- Use data_pages_tool with action update_static_content
- Update nodes array with new URLs
- Process in batches of 20 links per page
- Verify updates after each batch
Error Handling:
- If Designer not connected: Report and skip static pages
- If update fails: Mark link and continue with others
- Report partial successes separately
CMS Updates:
For Link Fields:
- Direct update: fieldData[fieldName] = "new-url"
- Use data_cms_tool with action update_collection_items
- Option: update live or draft
For Rich Text Fields:
- Parse HTML content
- Find and replace <a> tags
- Preserve other HTML formatting
- Update fieldData[fieldName] with new HTML
Batch Processing:
- Process 50 items per batch
- Show progress for large collections
- Handle API rate limits gracefully
Publishing:
Ask user:
"Would you like to publish the changes immediately?"
- Yes: Use data_cms_tool with action publish_collection_items
- No: Leave as drafts
For static pages:
- Changes are immediate (Designer updates live)
- Warn user that static page changes are live
Re-validation:
Failure Reporting:
If any fixes failed:
❌ Fixes that failed (X):
[1] Failed to update
Location: Contact page
Reason: Page content changed since last read (conflict)
Action: Re-fetch the page and retry
[2] URL still broken
Location: Blog post "Guide"
Reason: HTTPS version returned 404
Action: Manual correction needed
Success Reporting:
✅ Summary:
Before:
- Health Score: 76/100
- Broken links: 8
- Insecure links: 18
- Redirects: 6
After:
- Health Score: 95/100 (+19)
- Broken links: 2 (6 fixed, 2 need manual review)
- Insecure links: 0 (18 fixed)
- Redirects: 0 (6 fixed)
Changes:
- Static pages: 8 links updated on 5 pages
- CMS content: 16 links updated in 12 items
- Total fixes: 24 ✅
- Manual review: 2 ⚠️
Recommendations:
Always provide:
1. Schedule for next check (monthly/quarterly)
2. Monitoring suggestions for critical links
3. Best practices for avoiding broken links
4. URL redirect strategies if applicable
Example:
💡 Recommendations:
1. **Schedule regular checks**
- Run link checker monthly for active sites
- Run quarterly for static sites
- Set calendar reminder
2. **Monitor critical external links**
- Key partners: company-a.com, partner-site.com
- Documentation: docs.example.com
- Social media profiles
3. **Set up URL redirects**
- If changing URLs, create 301 redirects
- Test redirects before going live
- Keep redirect map updated
4. **Best practices**
- Test external links before adding
- Use relative URLs for internal links
- Avoid deep linking to external pages
- Verify links after major redesigns
Report Formats:
Offer to export findings:
1. **Markdown** - Human-readable report
- Include all statistics
- List all issues found
- Show fixes applied
- Add recommendations
- Great for documentation
2. **CSV** - Spreadsheet format
- Columns: Location, Element, URL, Status, Issue, Fix Applied
- Easy to filter and analyze
- Good for sharing with team
3. **JSON** - Machine-readable data
- Complete raw data
- Useful for integrations
- Archive for historical tracking
Export Example (Markdown):
# Link Audit Report: Company Website
Date: January 10, 2026
## Summary
- Total links scanned: 247
- Health score: 95/100
- Links fixed: 24
- Manual review needed: 2
## Issues Found
### Broken Links (8)
1. About Us > Button "Visit Partner"
- URL: https://partner-old-site.com
- Status: 404 Not Found
- Fix: Manual review needed
...
## Recommendations
1. Schedule monthly link checks
2. Monitor key external links
3. Set up 301 redirects for URL changes
Batch Processing:
For large sites:
- Process pages in batches of 10
- Process CMS items in batches of 50
- Show progress: "Processing batch 1 of 5..."
- Timeout protection: Skip after 30s per batch
Caching Validation Results:
- Cache validation results by unique URL
- If same URL appears 10 times, validate once
- Report: "Checking 87 unique URLs (out of 247 total links)"
- Reduces validation time significantly
Parallel vs Sequential:
Parallel (faster):
- Link validation (test multiple URLs simultaneously)
- Page content extraction (fetch multiple pages)
Sequential (required):
- Link updates (one at a time to avoid conflicts)
- Publishing (one batch at a time)
Common Errors:
1. Designer Not Connected:
❌ Error: Cannot update static pages
Reason: Designer MCP app not connected
Solution:
1. Open Webflow Designer
2. Open the target site
3. Connect Designer MCP app
4. Retry static page fixes
Note: CMS fixes can proceed without Designer
2. Rate Limits:
⚠️ Warning: Rate limit reached
Pausing for 60 seconds...
Progress will resume automatically.
Current: 50/200 links validated
3. Timeout Errors:
⚠️ Link validation timeout
Link: https://very-slow-site.com
Timeout: 10 seconds exceeded
Marked for manual review.
Continuing with remaining links...
4. SSL Certificate Errors:
⚠️ SSL Certificate Error
Link: https://expired-cert-site.com
Issue: Certificate expired
Cannot verify HTTPS. Marked for manual review.
Case 1: No Issues Found
🎉 Excellent! No Issues Found
All 247 links are working correctly!
Health Score: 100/100 ✨
Your site has:
✅ No broken links
✅ No insecure HTTP links
✅ No unnecessary redirects
💡 Recommendation:
Run this check monthly to maintain link health.
Case 2: All Links Broken
❌ Critical: Multiple Broken Links
Found 89 broken links across all pages.
This suggests a possible site-wide issue:
- Domain migration not configured?
- External service outage?
- Relative URL path issues?
🔍 Recommended Action:
1. Check if external services are down
2. Verify domain and SSL configuration
3. Test a few links manually
4. Contact Webflow support if needed
Shall I still proceed with individual link fixes? (yes/no)
Case 3: Mixed HTTP/HTTPS Site
⚠️ Mixed Content Warning
Your site uses HTTPS but has 18 HTTP links.
This creates:
- Security warnings in browsers
- SEO penalties
- Trust issues for visitors
🔧 Recommendation:
Upgrade all HTTP links to HTTPS (all 18 can be auto-fixed)
Proceed with upgrade? (yes/no)
Case 4: Redirect Chains
⚠️ Redirect Chain Detected
Link: https://example.com/old
→ 301 to: https://example.com/temp
→ 301 to: https://example.com/final
Recommendation: Update directly to final URL
- Improves page load speed
- Reduces redirect overhead
- Better for SEO
Fix: Update to https://example.com/final
Apply fix? (yes/no)
Before considering link checker implementation complete:
Take webflow/webflow-mcp:link-checker from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.