The Local SEOs workflow is a bit different from “regular” SEO, and getting the tooling together to handle that workflow can be pricey or require coding skills mere mortals generally don’t possess. Luckily, with a little know-how, any mortal can go BEAST MODE in Excel.
In this session, I’ll show just how much can be handled in Microsoft Excel. And don’t worry if you’re not an Excel wizard – this session is meant for anyone who’s used even just the basic functions of Excel. From citation auditing, performance monitoring, competitive analysis, and even producing visualizations clients can understand, there’s a lot you can do with formulas I’ll share and plugins you can get for free.
2. It’s hard out here for
a local SEO
http://1.bp.blogspot.com/-
wCvqMTTE_z0/TVy6YgbYkKI/AAAAAAAAF
qs/1OEKdaEzmso/s400/Picture%2B1.jpg
@daveminchala | #stateofsearch 2
3. A lot of clients come to us
with, er, baggage…
@daveminchala | #stateofsearch 3
http://4.bp.blogspot.com/-DTJqn2pS4Rw/UFtn3s3eIrI/AAAAAAAAAGA/DHpi-H-
8bVk/s1600/DSC02641.JPG
9. Usually, there are problems here…
http://moz.com/learn/local/local-search-data-us
@daveminchala | #stateofsearch 9
10. Well, *somewhere* in here…
http://moz.com/learn/local/local-search-data-us
@daveminchala | #stateofsearch 10
11. And this certainly doesn’t help.
https://getlisted.org/static/resources/listing_time_to_live.pdf
@daveminchala | #stateofsearch 11
12. The Arsenal
Type Example Providers Value Prop
Link research &
OpenSiteExplorer,
diagnosis
MajesticSEO, LinkRisk
Find links you might want & links you
should stay away from
@daveminchala | #stateofsearch 12
Webmaster
Resources
Google Webmaster Tools Find out if you have a search quality
problem; work directly with Search
engines to resolve them
Competitive
Analysis
SEMRush, Whitespark,
Google search
How are competitors doing & what
might be working for them
Citation research Whitespark, Synup, Moz
Local, Yext*
See how NAP is displayed on specific
publishers & push updates to them;
find new citation opportunities
Citation diagnosis Google search; listing
publisher websites
Find where else is bad/outdated NAP
data persisting (if you know how to
look)
13. My problems:
Amorphous Problems
Inadequate tooling to size them
No clear starting point or path
Difficult to maintain visibility into issues
Poor feedback loop for work
Difficult to keep client engaged
@daveminchala | #stateofsearch 13
22. DUMB Objectives, SMART Goals
Example DUMB Objectives:
• Generate leads
• Make it easier to retain customers
Example SMART Goals:
• Ensure Google MyBusiness listing & Website are visible in front page search
results on Google and top 5 directories that are most important to the
client within 6 months.
• Reduce duplicate and erroneous listings to less than 50% of known, findable
@daveminchala | #stateofsearch 22
listings in 3 months.
Example KPIs
• Rank position in Search Engines
• # bad listings found in Google search
Required reading: http://www.kaushik.net/avinash/digital-marketing-and-measurement-
model/
23. I need a method.
@daveminchala | #stateofsearch 23
28. First, go get this:
http://nielsbosma.se/projects/seotools/download/
@daveminchala | #stateofsearch 28
29. Getting sh*t done in Excel
Scrape Tickle Google and import directly into Excel
Start with this formula:
XPathOnUrl("http://www.google.com/search?q="&UrlEncode($C$2)&"&start=1&num=100
", "(//h3[@class='r']/a)”,”href”)
Okay, Excel, go to this URL.
The URL has parameters that you can find in plain
english in C2 – encode it into a URL param, wouldja?
When you get there, parse the HTML and find this
particular <a> tag. It has links I care about.
And bring me back JUST the URL.
@daveminchala | #stateofsearch 29
30. Getting sh*t done in Excel
Scrape Tickle Google and import directly into Excel
Select the number of cells you want to populate with results (Hint –
use the num= URL param for Google search)
Press F2 to write/paste your formula into the top cell
Press shift+ctrl+Enter and…
@daveminchala | #stateofsearch 30
31. Getting sh*t done in Excel
Scrape Tickle Google and import directly into Excel
@daveminchala | #stateofsearch 31
Bam! Er… wait…
In an adjacent cell, use this to clean that up:
=LEFT((RIGHT(A2, (LEN(A2)-7))), (LEN((RIGHT(A2, (LEN(A2)-7))))-
LEN((RIGHT((RIGHT(A2, (LEN(A2)-7))), (LEN((RIGHT(A2, (LEN(A2)-7))))-
FIND("&", (RIGHT(A2, (LEN(A2)-7))))+1))))))
32. Getting sh*t done in Excel
Scrape Tickle Google and import directly into Excel
@daveminchala | #stateofsearch 32
That’s better.
33. Getting sh*t done in Excel
Go to a URL, look for a string, and if it’s there, import directly
into Excel
Start with this formula:
RegexpFindOnUrl("http://www.6pm.com/shoes", “free shipping”)
Okay, Excel, go to this URL.
And look for this string. If you find it, send it right back
to me. If not, return an error.
@daveminchala | #stateofsearch 33
34. Getting sh*t done in Excel
@daveminchala | #stateofsearch 34
What we have now:
Framework for going to any URL and
Pulling in the information that’s there
Or Only pulling information we care about
All in Excel so we can spend more time on pulling out insights,
less time on getting what we need.
35. With apologies to Mac users..
There’s not SEOTools for Mac. Sorry.
@daveminchala | #stateofsearch 35
But…
36. Import.io is the TRUTH!
@daveminchala | #stateofsearch 36
https://import.io/
37. Import.io is the TRUTH!
Make any of your listings into an API and check for changes daily,
weekly, WHENEVER.
HINT: This is a good thing to apply to your Google MyBusiness
listing ;)
@daveminchala | #stateofsearch 37
38. Let’s start an audit
Start at Yext to get URLs you’ll definitely want to monitor
https://chrome.google.com/webstore/detail/scraper/mbigbapnjcgaff
ohmbkdlecaccepngjd
@daveminchala | #stateofsearch 38
40. Searching Google for Bad Data
Phone number searches are my go-to. You’ll need to check
several versions.
I use RegexReplace for that:
10-digit
phone Regex Replace result
2066022005RegexpReplace($A$2,"^.{3}","("&LEFT($A$2,3)&")") -->
(206)6022005
RegexpReplace($A$2,"^.{3}","("&LEFT($A$2,3)&") ") --> (206) 6022005
RegexpReplace($A$2,"(^.*)","("&LEFT($A$2,3)&") "&RIGHT(RegexpFind($A$2, "^.{6}"), 3)&"-"&RIGHT($A$2,4)) --> (206) 602-2005
RegexpReplace($A$2,"(^.*)","("&LEFT($A$2,3)&")"&RIGHT(RegexpFind($A$2, "^.{6}"), 3)&"-"&RIGHT($A$2,4)) --> (206)602-2005
RegexpReplace($A$2,"(^.*)",LEFT($A$2,3)&"-"&RIGHT(RegexpFind($A$2, "^.{6}"), 3)&"-"&RIGHT($A$2,4)) --> 206-602-2005
@daveminchala | #stateofsearch 40
41. Starting to sound like a good
option…
http://www.tellhimhespele.com/wp-content/uploads/2013/05/man-kissing-pigeons.jpg
@daveminchala | #stateofsearch 41
42. I’ve automated *a lot* of this
in Excel
@daveminchala | #stateofsearch 42
43. Put it all together & automate
Enter a query, tell me if it’s a phone number or something else
Then press the button and …
@daveminchala | #stateofsearch 43
44. Put it all together & automate
Get a table of up to 300 citation sources where your query
string appears. And who’s likely providing that data!
@daveminchala | #stateofsearch 44
45. Put it all together & automate
Here ya go
https://www.dropbox.com/s/p44p6tkaa0eez79/automatedNAP
audit.xlsm?dl=0
PLEASE tell me how to make it better!
@daveminchala | #stateofsearch 45