You are planning to migrate your site to a new CMS? Without a thorough audit of existing content, it's easy to lose SEO traffic and move hundreds of unnecessary pages. Our experience: over 5 years and 100+ successful migrations for sites from 200 to 50,000 pages. We help conduct a full inventory, technical SEO audit, evaluate the quality of each URL, and create a transfer plan. We'll assess your project in 1 day.
Content audit is the inventory and analysis of all materials on the current site. It answers the questions: what to transfer, what to update, and what to delete. Without an audit, you risk losing up to 40% of organic traffic due to broken links and duplicates. Additionally, migration without an audit often leads to cluttering the new CMS with outdated content, increasing load times and complicating maintenance. In the worst case, you lose search positions for 3-6 months. Our approach minimizes this risk. The average project saves up to $3,500 during the transfer phase; our content audit starts from $500 for small sites.
Importance of content audit before migration
Content audit is the inventory and analysis of all materials on the current site. It answers the questions: what to transfer, what to update, and what to delete. Without an audit, you risk losing up to 40% of organic traffic due to broken links and duplicates. Our Python crawler processes the site 3 times faster than manually copying all URLs.
Step-by-step process
- Crawl the site – collect all URLs and metadata using Screaming Frog SEO Spider.
- Collect metadata – export CSV with title, meta description, H1, status, word count, etc.
- Analyze SEO performance – merge crawl data with Google Search Console export to identify traffic and keyword metrics.
- Classify content – label each URL as migrate, update, merge, delete, or archive based on traffic, uniqueness, and relevance.
- Generate report – provide summary statistics, detailed tables, and prioritized action plan.
How is content inventory performed?
We start with site crawling. The main tool is Screaming Frog SEO Spider. It allows quick collection of metadata. Configuration:
Configuration → Spider → Crawl all subdomains
Enable: JS rendering (for SPA)
Export: All tabs → Save as CSV
Result: CSV with fields: URL, Title, Meta Description, H1, Status Code, Indexability, Word Count, Inlinks, Outlinks. For deeper analysis, we use a Python crawler:
import scrapy
from scrapy.crawler import CrawlerProcess
class ContentAuditSpider(scrapy.Spider):
name = 'content_audit'
start_urls = ['https://books.toscrape.com']
custom_settings = {
'DEPTH_LIMIT': 10,
'DOWNLOAD_DELAY': 0.5,
'FEEDS': {'audit_results.csv': {'format': 'csv'}}
}
def parse(self, response):
yield {
'url': response.url,
'status': response.status,
'title': response.css('title::text').get(''),
'h1': response.css('h1::text').get(''),
'meta_description': response.css('meta[name="description"]::attr(content)').get(''),
'canonical': response.css('link[rel="canonical"]::attr(href)').get(''),
'robots': response.css('meta[name="robots"]::attr(content)').get('all'),
'word_count': len(' '.join(response.css('main *::text').getall()).split()),
'internal_links': len(response.css('a[href^="/"]')),
'images_without_alt': len(response.css('img:not([alt])')),
'last_modified': response.headers.get('Last-Modified', b'').decode()
}
for link in response.css('a::attr(href)').getall():
yield response.follow(link, self.parse)
Why is SEO metadata analysis important?
Export from Google Search Console provides data on clicks, impressions, CTR, and positions. We match these with crawl data in Python:
import pandas as pd
crawl_data = pd.read_csv('audit_results.csv')
gsc_data = pd.read_csv('gsc_pages.csv')
merged = crawl_data.merge(gsc_data, on='url', how='left')
merged['has_seo_value'] = merged['clicks'] > 0
def classify_page(row):
if row.get('noindex') or row['status'] != 200:
return 'skip'
if row.get('clicks', 0) > 100 or row.get('inlinks', 0) > 5:
return 'migrate_priority_high'
if row.get('word_count', 0) < 100:
return 'review_thin_content'
if row.get('clicks', 0) > 0:
return 'migrate'
return 'archive'
How to classify content for migration?
Each page gets a label according to the table:
| Decision | Criteria |
|---|---|
| Migrate | Clicks > 0, unique content, relevant |
| Update on transfer | Content outdated but has SEO weight |
| Merge | Duplicate pages on the same topic |
| Delete + redirect | No traffic, duplicate, thin content |
| Do not transfer | Test pages, archive, service URLs |
Metrics for prioritization:
| Metric | Threshold | Action |
|---|---|---|
| Clicks in GSC | > 100 | High priority |
| Incoming links (inlinks) | > 5 | High priority |
| Word count | < 100 | Thin content — needs revision |
| Status code | 4xx, 5xx | Delete or fix |
Media files analysis and metadata inventory
We check which images are used and which are dead weight. Example command for finding unused files:
find /var/www/uploads -type f | awk -F. '{print $NF}' | sort | uniq -c
Also, find pages without meta description and with duplicate titles:
missing_meta = merged[merged['meta_description'].isna() | (merged['meta_description'] == '')]
duplicate_titles = merged[merged.duplicated(subset='title', keep=False)]
missing_meta[['url', 'title', 'h1']].to_csv('tasks_add_meta.csv', index=False)
Why content classification matters
Classification allows focusing on valuable pages and avoiding moving junk. It is the foundation of content strategy and content optimization. Without it, you waste budget transferring thousands of useless URLs. Our labeling system (migrate, review, archive) reduces the volume of transferred data by 50-70%.
Problems solved by content audit
- Traffic loss: up to 40% of visitors leave after migration without redirects.
- Cluttering the new CMS: moving unnecessary pages increases load time.
- Duplicates and thin content: worsen indexing and rankings.
Our audit saves up to 60% of the migration budget by filtering out junk. 85% of our clients see traffic recovery within 2 weeks.
Deliverables
We provide a complete package of results:
- Documentation: comprehensive report in PDF and CSV formats with full inventory, SEO analysis, and classification.
- Access: integration setup with Google Search Console for post-migration tracking.
- Support: 2 weeks of consultation after report delivery.
- Training: optional knowledge transfer session for your team.
Detailed deliverables:
- Full URL list with metadata (CSV).
- Technical SEO issues report.
- Content classification table with action recommendations.
- Prioritized migration plan.
Example classification logic
For each page, we assign a label based on traffic, links, word count, and status. Pages with over 100 clicks or 5+ internal links are high priority. Thin content (under 100 words) requires review. Pages with no traffic and no links are archived. This ensures only valuable content moves to the new site.
Our guarantees and experience
We have been working with content audit for over 5 years. During this time, we have conducted 100+ migrations for sites from 200 to 50,000 pages. We guarantee data accuracy and confidentiality. We use certified tools: Screaming Frog SEO Spider and Google Search Console. With 5+ years of experience and 100+ successful projects, we are trusted by companies worldwide.
Contact us for a free consultation. Order a turnkey content audit — get a clear transfer plan with minimal risks.







