State of Search
David Minchala, @daveminchala
2@daveminchala | #stateofsearch
It’s hard out here for
a local SEO
http://1.bp.blogspot.com/-wCvqMTTE_z0/TVy6YgbYkKI/AAAAAAAAFqs/1OEKdaEzmso/s400/Picture%2B1.jpg
3@daveminchala | #stateofsearch
A lot of clients come to us
with, er, baggage…
http://4.bp.blogspot.com/-DTJqn2pS4Rw/UFtn3s3eIrI/AAAAAAAAAGA/DHpi-H-8bVk/s1600/DSC02641.JPG
@daveminchala | #stateofsearch 4
Google MyBusiness Issues
@daveminchala | #stateofsearch 5
Reputation Issues
@daveminchala | #stateofsearch 6
Data Issues
@daveminchala | #stateofsearch 7
Anti-Competitive Issues
@daveminchala | #stateofsearch 8
And then everything else…
http://moz.com/learn/local/local-search-data-us
@daveminchala | #stateofsearch 9
Usually, there are problems here…
http://moz.com/learn/local/local-search-data-us
@daveminchala | #stateofsearch 10
Well, *somewhere* in here…
https://getlisted.org/static/resources/listing_time_to_live.pdf
@daveminchala | #stateofsearch 11
And this certainly doesn’t help.
@daveminchala | #stateofsearch 12
The Arsenal
Type Example Providers Value Prop
Link research &
diagnosis
OpenSiteExplorer,
MajesticSEO, LinkRisk
Find links you might want & links you
should stay away from
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)
@daveminchala | #stateofsearch 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
Cross roads time…
@daveminchala | #stateofsearch 14
@daveminchala | #stateofsearch 15
Get overwhelmed…
https://c1.staticflickr.com/1/12/18359894_25cbbb0dcb.jpg
@daveminchala | #stateofsearch 16
…surrender to insanity…
http://www.tellhimhespele.com/wp-content/uploads/2013/05/man-kissing-pigeons.jpg
@daveminchala | #stateofsearch 17
…be Mike Tyson?...
http://i.huffpost.com/gen/1108191/thumbs/o-MIKE-TYSON-PIGEON-EX-facebook.jpg
@daveminchala | #stateofsearch 18
…OR GO BEAST-MODE!
@daveminchala | #stateofsearch 19
My Spirit Animals
I need goals.
@daveminchala | #stateofsearch 20
Sweet Photoshop skills, bro.
@daveminchala | #stateofsearch 21
@daveminchala | #stateofsearch 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
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/
I need a method.
@daveminchala | #stateofsearch 23
@daveminchala | #stateofsearch 24
@daveminchala | #stateofsearch 25
Getting the lay of the land
Required reading: http://moz.com/blog/ultimate-local-seo-
audit
That’s a lot of work… I need
to make it efficient.
@daveminchala | #stateofsearch 26
@daveminchala | #stateofsearch 27
First, go get this:http://nielsbosma.se/projects/seotools/download/
@daveminchala | #stateofsearch 28
@daveminchala | #stateofsearch 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 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 31
Getting sh*t done in Excel
Scrape Tickle Google and import directly into Excel
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))))))
@daveminchala | #stateofsearch 32
Getting sh*t done in Excel
Scrape Tickle Google and import directly into Excel
That’s better.
@daveminchala | #stateofsearch 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 34
Getting sh*t done in Excel
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.
@daveminchala | #stateofsearch 35
With apologies to Mac users..
There’s not SEOTools for Mac. Sorry.
But…
@daveminchala | #stateofsearch 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 38
Let’s start an audit
https://chrome.google.com/webstore/detail/scraper/mbigbapnjcgaff
ohmbkdlecaccepngjd
Start at Yext to get URLs you’ll definitely want to monitor
@daveminchala | #stateofsearch 39
Getting the Listng URLs
@daveminchala | #stateofsearch 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 41
Starting to sound like a good
option…
http://www.tellhimhespele.com/wp-content/uploads/2013/05/man-kissing-pigeons.jpg
I’ve automated *a lot* of this
in Excel
@daveminchala | #stateofsearch 42
Enter a query, tell me if it’s a phone number or something else
Then press the button and …
@daveminchala | #stateofsearch 43
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
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
Put it all together & automate