2. @patrickstox
Product Advisor, Technical SEO, &
Brand Ambassador at Ahrefs
• I write for Ahrefs blog but have written for many industry publications
in the past
• I speak at some conferences like this one, SMX, Pubcon, UnGagged,
TechSEO Boost
• Organizer for the Raleigh SEO Meetup (most successful in US) and
the Beer & SEO Meetup
• We also run a conference, the Raleigh SEO Conference
• Founder Technical SEO Slack Group
• Moderator /r/TechSEO on Reddit
• Helped define the role of Search Marketing Strategist for the US
Department of Labor
• Lead author for the SEO Chapter of the 2021 Web Almanac
Who is Patrick Stox?
11. @patrickstox
Combine CSV Files
1. Save files to a new folder
2. Get the path either by shift+right-click on the folder and “Copy as path” or
copy it from the address bar in the folder.
3. Open Command prompt.
4. Type cd, press Space, right-click and paste, then press Enter.
5. Type copy *.csv whatever-name.csv and Press Enter.
21. @patrickstox
Card Sorting Exercise
Add these topics to index cards.
Have those involved sort and have them sort them in a way that makes sense to
them.
This is a good way to get people to understand what pages you need to create
and what content may be included on those pages.
It’s training people to make pages and outlines for those pages.
33. @patrickstox
What Other Top Pages Talk About
More descriptive terms
Tasting notes
More food pairings
Tannins
Age
Varietals
Benefit:
Doesn’t have to include
searched terms
35. @patrickstox
The Data All Points The Same Way
What People Search = What Top Pages Talk About = What Top Pages Rank For
+ They match one or more of the main intents.
48. @patrickstox
Writing For Featured Snippets
Look for commonalities (likely what’s needed to be eligible)
Look for differences (why is one better than the other)
49. @patrickstox
Some Queries May Not Have More Than 1
But you can refine to a similar query / main intent like “what is x” and see what is
likely needed.
51. @patrickstox
Useful Content Features - Ecommerce
Q&As
Pricing
Reviews – with customer photos
Product selection
Facets (filters)
Description
Documentation
Return policy
Shipping info
Contact/support
52. @patrickstox
Useful Content Features - Local
Who you are – You, team, business
What do you do – services, processes, timelines, pricing
When are you open - hours
Why should I choose you – social proof like reviews or testimonials, USP
Where you are – location, map, directions
How do I contact you – phone #, email
53. @patrickstox
Who Do You Need To Write Great Content?
Job Knowledge
/ Insights
Research Good writer Editing
Expert ✔️ ❌ ❌ ❌
SEO ❌ ✔️ ❌ ❌
Writer ❌ ❌ ✔️ ❌
Editor ❌ ❌ ❌ ✔️
60. @patrickstox
What If I Wrote Everything Already?
Revisit current content.
Go narrow and deep and really own the niche. Credibility and Expertise.
Go wide. What related content might people be looking for?
Go into another vertical.
76. @patrickstox
Top Accountants From Different Cities
Keyword URL
accountant seattle https://www.seattlecpaprofessionals.com/
accountant las vegas https://llbcpa.com/las-vegas-small-business-accountant/
accountant chicago https://www.chicago-accountant.com/
accountant chicago https://cpa-in-chicago.com/
accountant chicago https://www.actgroupltd.com/
accountant los angeles https://www.johnweldoncpa.com/
accountant los angeles https://www.roberthalltaxes.com/business-services/accounting/
accountant tucson https://www.cpa-tucson.com/
accountant tucson https://www.cpatucson.com/
accountant tucson https://www.pinpointeaccounting.com/
accountant tucson https://beachfleischman.com/
accountant san diego https://www.regalgroupcpa.com/
accountant portland https://perkinsaccounting.com/
accountant portland https://www.orcpa.org/for-the-public/find-a-cpa
accountant philadelphia https://accountant-philadelphia.com/
accountant philadelphia https://www.daletaxservice.com/
accountant philadelphia https://taxprofessionalphiladelphia.com/
accountant tampa https://www.waterscpagroup.com/
accountant tampa https://www.rgcocpa.com/
accountant tampa https://www.zachcpa.com/
accountant tampa http://jrosencpa.com/
accountant tampa https://www.taxaccountantsoftampabay.com/
78. @patrickstox
Combine Files
1. Windows Button + R
2. Type cmd and click ok
3. I open the folder where I saved the files in File Explorer and click the address
bar to copy the path
4. Back in Command Prompt, type “cd “ and then press ctrl+v to paste the
copied path
5. Type copy *.csv whatever.csv
79. @patrickstox
Data Cleaning
1. Insert > Table
2. Insert Column next to Referring Domain to add Count
3. In the Count Column, add the formula =COUNTIF(B:B,[@[Referring
Domain]])
80. @patrickstox
Data Cleaning
4. Copy the numbers in the Count column and paste in the same place as
values.
5. Data > Remove Duplicates based on the Referring Domain
6. Data > Sort by Count > Largest to Smallest
98. @patrickstox
Links Without Mentions
Content Title Content URL Author
Elmiron drug linked to vision problems in women https://www.wral.com/elmiron-drug-linked-to-vision-problems-in-women/193138
How Giving Tuesday impacts the Triangle https://abc11.com/society/how-giving-tuesday-impacts-the-triangle-/5732175/
Michael Perchick
5 Best Divorce Attorneys in San Antonio 🥇 https://kevsbest.com/divorce-attorneys-in-san-antonio/
Elevating Others Scholarship at Pennsylvania State University Fayette, Eberly Campus (Penn State Fayette) | Uloop
https://fepsu.uloop.com/scholarships/view.php/1079951447/Elevating-Others-Sch
Whitley law firm new bern nc http://myphamsandy.com/cne0zhw/whitley-law-firm-new-bern-nc.html
‘Air hunger’ opinion a factor in $1.5M settlement – North Carolina Lawyers Weekly
https://nclawyersweekly.com/2014/03/18/air-hunger-opinion-a-factor-in-1-5m-se
David Donovan
103. @patrickstox
Screaming Frog Process
1. search site:whatever.com term
2. Settings > Search Settings, change to 100
3. Inspect > go to Console tab, see attached code and change the domain to your own
copy and paste the results and you have a list
4. Screaming Frog: In Configuration > Spider > Advanced tab click "Always Follow Redirects"
5. Screaming Frog: In Configuration > Custom > Search, choose ”Contains" and add in your targeted
term or phrase to make sure it exists on the pages.
6. Screaming Frog: Paste URLs and run to get the list of pages that contain the keyword
7. Screaming Frog: When finished, copy these URLs from the custom tab for your filter, now we check
if the link already exists.
8. Screaming Frog: In Configuration > Custom > Search, change to ”Does Not Contain" add the end
part of the URL/URLs that you want to build the links to.
You probably don't want the whole URL because we use relative paths sometimes. This supports
regex, so you can match multiple pages.
Upload your URLs to crawl them, then export that final list when it finishes the same as you did
previously.
Code snippet for 3:
urls = $$('a');for (url in urls) {
var string = urls[url].href,
domain = "whatever.com",
google = "google.com",
search = "search?",
cache = "webcache";
if ( string.indexOf(search) <1 &&
string.indexOf(cache) <1 &&
string.indexOf(google) <1 &&
string.indexOf(domain) >=0 ) {
console.log ( string );
}
109. @patrickstox
Links To Your Site, But Broken
Websites change over the years and often there are links going to pages that no
longer exist.
Redirects take users and bots to the current pages. They reclaim that lost value.
112. @patrickstox
Automated Redirect Matching
Fast using URLs, but not accurate if URL structures changed
https://www.searchenginejournal.com/map-404-urls-at-scale-sentence-
embeddings/338555/
Match on full text is much slower but more accurate.
120. @patrickstox
Catching Errors / Changes – Before Launch
Unit test: does the code work
Integration test: does the code work together
Regression test: something changed
122. @patrickstox
Technical Automation – On Page
Find error > write rule to fix error
https://developers.cloudflare.com/workers/runtime-apis/html-rewriter
Have a bunch of pages marked noindex that you want indexed? Write a rule.
Want to change nofollow to follow? Write a rule.
Want to rewrite titles and meta descriptions? Write a rule.
https://www.searchenginejournal.com/titles-meta-descriptions-automatically-
python-javascript/360108/
***Disclaimer*** Change in normal systems if you can