Content Marketing Worth Imitating

I think content marketing is a scary concept for a lot of SEOs — it feels like it’s going to be hard and heavy… that you’re going to have to write the next great American novel to get your clients noticed. You might be afraid that you have an audience that won’t respond well to a ton of text or that you’re not a good enough writer. Fear not. Content marketing is easier than you think and might not even require you to write a single word.

Check out this presentation I gave at the Central PA Internet Marketing Meetup on Wednesday, July 18th, to see some great examples of content marketing that employ strategies worth imitating. None of this stuff is text-heavy. You can also pick up the companion white paper I wrote, which covers most of these examples in greater detail:

Pitching MozCon — Shameless Self-Promotion

Two weeks ago, the fine folks at SEOmoz announced that they were accepting speaker submissions to present at MozCon. When I read it, I got a little bit tingly inside — the good kind of tingly.

You see, I’m going to MozCon! And I love presenting stuff! Perfect storm! So I set out to craft the world’s greatest speaker pitch in the world (trademark pending). When I found out the odds of getting selected were roughly 20:1, I decided to try to shift the odds a bit with some shameless self-promotion, so here it is laid bare. My speaker pitch for MozCon (even though the lovely Jen Lopez says it won’t have any impact).

If you dig it and think this would be valuable, tweet the ish out of it for me, okay? All you have to do is click the button below. Thanks!


MozCon Speaker Pitch

Topic Idea:

Proving the value of SEO, paid search, and social efforts can be hard — particularly when you’re dealing with local, service-oriented business clients. No matter how hard we might try to entice their site visitors to fill out an online form, a lot of conversions sneak “off the radar,” as prospects pick up the phone to transact business.

In “10 minutes in nerd heaven,” I’ll reveal how to track these phone call conversions within Google Analytics at a fraction of the cost of paid services like ifbyphone (3 cents per minute vs. 8 cents per minute). I accomplish this task using Twilio’s API and a simple PHP script (less than 100 lines of code).

This presentation will also provide an inside-out look at Google Analytics, as we dissect the __utm.gif calls made by GA so that we can fire pageviews from the server side (not using javascript) to get our call data into Analytics. This has practical application for other use cases where a pageview or event needs to be registered without the use of javascript.

Most people will laugh at least twice during my presentation.

Also, it’s worth noting that I’ll provide the PHP script I use to enable phone tracking as a download with my presentation, so it will be very easy for people to actually put this stuff into action.

Additional Info (About Me):

I presented at the SEOmoz Search Church event in Philadelphia (The SEO’s Guide to Scraping Everything — http://www.youtube.com/watch?v=EV7oEiAcrWg) and regularly present at Philadelphia’s SEO Grail (http://www.meetup.com/seo-philly/) and other local meetups.

I wrote “How Garbage Ranks in the SERPs: A Case Study” (The 7th most thumbed-up post of the last year) for SEOmoz, and launched Link Detective (http://www.linkdetective.com), a widely-endorsed SEO tool.

I’m the highest ranked author on this page (http://www.seomoz.org/blog/popular/past-365-days) not already slated to speak at MozCon. An omen? I’d like to think so.

I’ve authored white papers like this one (on content marketing): http://www.jplcreative.com/lib/pdf/ChangesGoogleHighlightImportanceContentMarketing.pdf

I’ve launched (and sometimes sold) successful businesses like:
http://www.betterparenting.com
http://www.flipwebsites.com
http://www.ctrtheme.com
http://www.linkdetective.com

In my day job, I work with both big and small clients on their organic search, paid search, social, and analytics needs. I spearheaded the transition from Omniture to Google Analytics for Hershey’s (the candy company) and have integrated call tracking into GA for our smaller, local clients.

If you’re still not sure about my ability to entertain and provide value to your audience, check out this video of me rapping about my mustache (when it still adorned my lip): http://www.youtube.com/watch?v=iEx0hQSknJo

I’d Love Your Comments

I believe Jen that this likely won’t influence SEOmoz’s selection of speakers… but I still think there’s value in posting it. I’m not exactly a pro at getting picked to speak at events. I’ve presented at lots of small meetups and was VERY fortunate to be picked to present at the SEOmoz Search Church meetup… but I’ve gotten no response from some of the other large conferences I’ve pitched in the past.

I’d be thrilled if you’d let me know how my pitch could be improved. Did my humor not come off well? Did I pick a topic that’s too narrow for the proposed audience? Was I too charming and witty? Let’s talk about pitching conferences. Tell me how to get better.

Simple PHP Scraper Class

I gave a presentation entitled “The SEOs Guide to Scraping Everything” on May 10th at the SEOmoz and SEER Interactive Meetup in Philadelphia, PA.  Since I only had 8 minutes to present, I figured I’d augment my presentation by providing a simple PHP scraper class that people can use (and extend) to get started with scraping.

Update: The fine folks at SEER Interactive were kind enough to post a video of my presentation

You can download the scraper class here.

There’s a quick sample for how to use the scraper class below my slide deck from the meetup:

Using the Scraper:

<?php 
require_once('Scraper.php');
$scraper = new Eppie_Service_Scraper();
 
/* if you want to use proxies, list them as an array 
and pass into the setProxies method. Note that the
ip addresses listed here are not real proxies. */
$proxies = array(
    '123.123.123.123',
    '111.111.111.111'
);
$scraper->setProxies($proxies);
 
$scraper->scrape('http://www.cnn.com');
var_dump($scraper);
?>

 

And here’s the actual scraper class:

 

class Eppie_Service_Scraper{
 
    public function __construct(){
        // set proxies -- you can add your own here or use the setProxies method
        $this->_proxies = array();
    }
 
    public function scrape($url)
    {
        $this->_url = $url;
        $dom = new DOMDocument();
    	$proxy = $this->_pickProxy();
 
    	$ch = curl_init();
    	curl_setopt($ch, CURLOPT_URL, $url);
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    	curl_setopt($ch, CURLOPT_REFERER, "");
    	curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
    	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19");
    	if($proxy){
        	curl_setopt($ch, CURLOPT_PROXY, $proxy);
        	curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
    	}
    	$body = curl_exec($ch);
    	curl_close($ch);
 
    	$this->_curl_result = $body;
    	@$dom->loadHTML($body);
    	$this->_dom = $dom;
 
    	$this->_parseDOM();
    }
 
    public function setProxies($proxies)
    {
        $this->_proxies = $proxies;
    }
 
    private function _pickProxy()
    {
        if(count($this->_proxies) > 0)
            return $this->_proxies[rand(0, count($this->_proxies) - 1)];
        else return false;
    }
 
    public function setKeyword($keyword)
    {
        $this->_keyword = $keyword;
    }
 
    private function _parseDOM()
    {
        $xpath = new DOMXPath($this->_dom);
        $title = $xpath->query("//head/title");
        $meta_desc = $xpath->query("//head/meta[@name='description']/@content");
        $meta_kw = $xpath->query("//head/meta[@name='keywords']/@content");
        $h1 = $xpath->query("//h1");
        $h2 = $xpath->query("//h2");
        $h3 = $xpath->query("//h3");
	$h4 = $xpath->query("//h4");
	$h5 = $xpath->query("//h5");
	$h6 = $xpath->query("//h6");
        $img = $xpath->query("//img");
        $img_alt = $xpath->query("//img[@alt!='']/@alt");
        $strong = $xpath->query("//strong | //b");
        $body = $xpath->query("//body");
 
        if($title->length > 0)
            $this->_title = $title->item(0)->nodeValue;
 
        if($meta_desc->length > 0)
            $this->_meta_desc = $meta_desc->item(0)->nodeValue;
 
        if($meta_kw->length > 0)
            $this->_meta_kw = $meta_kw->item(0)->nodeValue;
 
        if($h1->length > 0)
        {
            for($i=0; $i < $h1->length; $i++)
                $this->_h1[] = $h1->item($i)->nodeValue;
        }
 
        if($h2->length > 0)
        {
            for($i=0; $i < $h2->length; $i++)
                $this->_h2[] = $h2->item($i)->nodeValue;
        }
 
        if($h3->length > 0)
        {
            for($i=0; $i < $h3->length; $i++)
                $this->_h3[] = $h3->item($i)->nodeValue;
        }
 
	if($h4->length > 0)
        {
            for($i=0; $i < $h4->length; $i++)
                $this->_h4[] = $h4->item($i)->nodeValue;
        }
 
	if($h5->length > 0)
        {
            for($i=0; $i < $h5->length; $i++)
                $this->_h5[] = $h5->item($i)->nodeValue;
        }
 
	if($h6->length > 0)
        {
            for($i=0; $i < $h6->length; $i++)
                $this->_h6[] = $h6->item($i)->nodeValue;
        }
 
        if($img_alt->length > 0)
        {
            for($i=0; $i < $img_alt->length; $i++)
                $this->_img_alt[] = $img_alt->item($i)->nodeValue;
        }
 
        $this->_img_alt_pct = ($img_alt->length / $img->length)*100;
 
        if($strong->length > 0)
        {
            for($i=0; $i < $strong->length; $i++)
                $this->_strong[] = $strong->item($i)->nodeValue;
        }
 
    }
 
}

You Suck at Attending Live Events

“WTF?” is what most of you are thinking from reading that headline.  “How could I suck at attending a live event?”

Maybe you’ve even taken it a step further — “Isn’t that impossible to suck at?  Show up and attend the seminars… shake hands with people, give them my card.  I’m a live event superstar.  You suck, Eppie… not me.”

Don’t lie. I know you’re thinking it.

Seriously, You Suck at Attending Live Events

This past weekend, I attended an internet marketing conference — JV Alert Live in Washington DC… and I almost sucked at attending it, too.  I almost didn’t sit at the bar instead of attending a session.  I almost went to bed early each night so I’d be bright-eyed and bushy-tailed when the next day’s events started.  I almost missed out on making real relationships.

I’m not saying you should go to an event and blow off all the organized stuff, but I am saying that you shouldn’t feel obligated to stay on schedule.

It wasn’t until 9:00 on Saturday night (I arrived at the conference on Thursday afternoon) that I stopped sucking.  That’s when Rick Toone, Larry Tosten, and I started filming Drunk Marketing Tips… and I KNOW that’s when people decided I was someone worth keeping in touch with… because I let loose and started being me.  Here’s that video:

When DMT wrapped, Bill Clemens, Bill Leopold, and Bryan Levens joined me in the Westin’s mens room to film Bathroom Tai Chi:

http://www.youtube.com/watch?v=qQrdKO5KCVg

I think those videos turned out to be quite funny, but it’s not the quality of the video that matters.  I did something memorable with these guys.  Working together on something made them memorable to me. It’s the reason I didn’t need to hunt down their names to reference them in the sentence above.  We had a blast, and left that conference with a great impression of each other.  That’s huge.

Follow Up FTW

So we started with a WTF and now we’re reversing it (double reverse, even?) for the win (FTW).  Ira Rosen (super smart and personable dude from Mojo Video Marketing) gave an awesome tip in the Drunk Marketing Tips video about following up with people via video, particularly with great speakers.  Killer idea.

Likewise, if you can produce some sort of recap video or an event overview (check out my buddy Tom Harari’s recap post for the NOLA Linklove conference for a text-based example), that will also put you in front of the right people again and leave a GREAT impression.

REMEMBER: You can learn things online, through a book, or a membership site.  It’s much harder to forge lasting relationships that way.  Live events = relationship starters.

Growing Better Parenting with Targeted SEO

It’s been a while since my last Better Parenting updated, but things have been going really well.  The site’s traffic is climbing and it’s definitely starting to bring in more revenue, but I know I’ve just hit the tip of the iceberg.

Through a little research, I was able to find a great search term that has relatively little competition, and I’ve started to rank for its long-tail variants.  The root term is parenting quotes, and the long-tail that I’m ranking for is inspirational parenting quotes.

Why is this such a great term?  Parenting quotes gets 3,600 exact match searches per month and nearly 15,000 broad match searches.  Inspirational parenting quotes get a more modest 210 exact match searches per month, but that’s still 7 per day.  The real key to these terms isn’t their volume though — it’s the limited competition to rank for them.  Note that for all stats below, I’m going to list my ranking — it may be different for you if you do a search, since we’re likely hitting different data centers.  They should be close though.

Details for Inspirational Parenting Quotes:
** All stats are for exact match (ie allintitle:”inspirational parenting quotes” — not allintitle:inspirational parenting quotes) — this shows sites that are most aggressively targeting the term.
Allintitle matches: 209 results (I’m number 1)
Allinurl matches: 20 results (I’m number 1)
Allinanchor matches: 7 results (I’m number 1)

Guess what?  Do an exact match search for the term and… I’m number 1.

Now let’s broad match those same stats and see how we do:
Allintitle matches: 310 results (I’m number 4)
Allinurl matches: 92 results (I’m number 2)
Allinanchor matches: 3,440,000 results (I’m number 4)

Building a few links to this page should secure the top spot for this search term.  The great news is that targeting this term, which is pretty easy to rank for also lets me target the much more difficult (but still surprisingly poorly targeted) term “parenting quotes.”  Let’s look at the data:

Details for Parenting Quotes:
Exact Match Stats:
Allintitle matches: 1,760 results (I’m number 12)
Allinurl matches: 701 results (I’m number 5)
Allinanchor matches: 46,200 results (I’m number 13)

On an exact match search for “parenting quotes,” I’m currently number 13 (number 16 on a broad match).  The allintitle and allinurl numbers for this term are VERY low given its search volume.

Broad Match Stats:
Allintitle matches: 7,740 results (I’m number 15)
Allinurl matches: 4,090 results (I’m number 7)
Allinanchor matches: 2,630,000 results (I’m number 15)

As you can see, I’m approaching competitive rankings for these terms, and I haven’t even started building links toward them.

Get Visitors to Do What You Want By Giving Fewer Options

In launching a site, it’s easy to try to do too much.  I realized that I fell into that trap a bit with Better Parenting.  I was trying to increase per-visitor pageviews, generate ad revenue, create an SEO benefit from interlinking posts, get social media support, and solicit comments… all in the same space.

The area immediately after a post is fairly prime real estate.  It’s where you can give a natural follow-up action for your visitors… and I gave them ALL of them.  The only problem was the one that I really want them to do right now was given the least emphasis.

So What Do You Want Visitors to DO?

I want people to comment on articles on the site.  And for those people who prefer not to comment, I want them to at least be able to read the additional contributions added by other readers.  That’s what rings true to the mission of Better Parenting – to crowdsource parenting advice.  You don’t need to have a PhD to contribute and improve the collective parenting skill of our readers.  So I eliminated some of the extra stuff at the bottom (popular posts, related posts), added more emphasis to the comment text, and made mention of the “Comments Count” contest that I’m running.  I’m going to do more with this too.  I should have additional changes rolled out tomorrow.

I’ve also made some other changes to the individual article pages:

  • I increased the size of the main image and placed it directly above the headline.
  • I increased the size of the headline and improved its styling by choosing a better font and color.
  • I removed the large (and distracting) categorization box that was previously above the headline.
  • I improved line spacing in the articles.

I did all of these things to increase the likelihood that someone will get to the bottom of the article — where the other changes should encourage them to comment.  It’s important to regularly remind yourself what you want people to do on your site, then do whatever you can to make it easier for them to do it.

Sometimes We Do Things We Know Are Dumb

Alternatively titled “Why I Sent My First Newsletter After Lunch on Good Friday.”

I work in web development and internet marketing.  Not the sleazy, dirty, 8 mile-long page with 40 fake testimonials and yellow highlighted text internet marketing.  I’m talking internet marketing for legitimate companies.  So I should know better than to send out an email newsletter on Good Friday after lunch…  But I did it anyway.

Fridays are generally bad days for email.  Open rates tend to be lower.  People are either trying to finish their work so they can get out of the office for the weekend or they’re already busy planning / starting the weekend.  In the middle of the week, you’re more likely to catch people bored at work, looking for something (anything) to capture their interest.

Holidays are even worse.  People are traveling, fewer people are at work… they’re just not looking for something to catch their attention.

None of this is news to me, but I still sent out a newsletter this afternoon.  In part, it’s because of necessity… I launched a contest and I want to get the word out.  In part it’s because I was tired of putting it off any longer.  But no matter what the reasoning, I’m going to suffer from reduced open rates for this campaign.

It sucks that open rates will be down, but it feels good to have actually started sending the weekly newsletter.  Next week, I’m going to split-test timing and report on its impact on open rates with my list.  I’m not likely going to use Friday afternoon as one of my test segments, however.

Month 1 Recap

It’s been a busy past two weeks at work, home, and at Better Parenting.  As a result, I’ve been less active here, but I’ve got a pretty thorough recap of what’s happened lately to follow.  I just finished up the first month of BetterParenting.com, and on the whole it went quite well.

  • Surpassed goal of 10,000 pageviews (had nearly 11,000 views on 4,300 visits).
  • List capture worked well with the Target giveaway, adding just shy of 100 names to the Parenting newsletter.  The first newsletter was sent today using MailChimp’s RSS to email.  I configured WordPress to hide a specific category (Parenting Tip of the Week), so it only appears in the RSS feed.  Since MailChimp pulls the RSS feed for publishing the newsletter, it includes this category.  I schedule the tip of the week to post right before MailChimp is scheduled to send the newsletter, and the tip appears at the top of the message exclusively for newsletter subscribers (and RSS feed readers).  I think it’s a pretty smart setup.  You can sign up for the newsletter here.
  • Winning technological battles (RSS to email solution) is easy for me.  The harder part is traffic generation, etc.  Search traffic continues to improve and is providing a solid 20+ visitors per day.  I’m starting to rank for more competitive terms as well.  I hope at the end of this month to receive between 50 and 100 search visits daily.  I’ll have to plan topic titles more carefully this month to ensure that it happens (and continue link building).
  • I hadn’t mentioned Twitter in past posts because I was in a holding pattern for weeks… since someone else had reserved the BetterParenting name on Twitter.  Thankfully, I was able to register BetterParents and make a trade with the other party.  I think this is a HUGE WIN!  If I had to use the name BetterParents, it would hurt my branding.  Making the switch was extremely important to me.  It took several weeks to complete, but I think Twitter will be very helpful in making some social connections with related sites.
  • My stable of writers continues to grow.  A friend from high school who is a very talented writer started writing articles for the site.  My brother’s neighbor is also going to start writing – from brief encounters with her in the past she seems to be very bright and a great mother.  She also has relevant educational and professional experience.  Two great assets.
  • I learned a lot from the Target giveaway.  It worked to increase traffic and build links, so I’m glad I ran it.  I wish I could have had Twitter up and running for a bonus opportunity, but I couldn’t get the name transfer worked out in time.  This month’s giveaway may get fewer entries, but I think it will do more for my site long-term.
  • The giveaway for this month is structured more around loyalty and community.  That’s what I want to build, so I’m trying to reward it.  Every comment made on Better Parenting this month counts as an entry (so go comment already! – I publish daily, so there’s bound to be something you’ll find interesting).  Following @BetterParenting on Twitter gains bonus entries and retweeting about the contest also results in bonus entries.  Hopefully this will create a habit for people to check back with the site daily and to comment on new content.
  • I just got an email from Bill Dwight from FamZoo – he’s going to be guest posting this week.  We initially discussed this guest posting opportunity in mid March, and Bill came through with a great post – it is AMAZING!  I feel so incredibly lucky to have run across Bill and can’t wait to publish his article.  I’m going to schedule it for Monday morning so it can get the best possible exposure.
  • Ad revenue was down for the second half of the month.  I moved down the top 300 x 250 block in the sidebar to feature my RSS feed and newsletters, and its CTR suffered a bit.  I also started running more CPA ads, and they haven’t converted yet, so those are clicks I would have made something from with Google.  I’m going to keep running the CPA stuff for now and see if conversions pick up.  I’m really hoping to push up to 30,000 plus pageviews soon so that I can start to pursue CPM advertising.  I think it’s a better fit for the site.

    On a related note, I can’t stop thinking about th Chevy Traverse, and I’ve never clicked on any of their ads… I just see them all over the place.  CPM works for major brands.

    OpenX Marketplace brought in some extra cash, which is worth noting.  You can set a CPM floor, and if advertisers will bid above it, it preempts your other ads.  It’s nice to score a few extra dollars, even if I’m not ready to go CPM for the whole site.

I still need to work harder on my “ground game.”  I know a lot of people locally who could benefit from the site, but I keep hesitating to push it because I want it to be perfect before sending people I know to it.  Quite frankly, it’s a terrible excuse and I need to man up.

If Content is King, Social is Queen

This month will continue to be about good content and making relationships online.  I would love to join the Extraordinary Life Network this month, or at least guest post on some of their sites.  I’ve been following the RSS feeds of their sites for a while, and I’m very impressed with where they’re going.  I origianlly found the network through member site Engaged Marriage (via a guest post on Pro Blogger).  Engaged Marriage is an impressive site that was launched within the last year.  Growth curve is impressive (and totally merited – he publishes good stuff).  I see big things for them because they’re building strong communities.  Although my site is different from theirs in that it has less personal focus (multi-author vs. individual tends to do that), I think we stand for a lot of the same things.

On a side note, I’m probably going to move off of WordPress and on to a custom Zend Framework solution by the end of the month.  I’m building an application that’s geared toward running a multi-author site and has my workflow in mind.  It will be nice having the additional flexibility of a custom solution.  Still, that’s low priority, since the tech stuff won’t make or break me – it’s content and relationships that yield a winner online.

Get More by Giving More

I’ve been sitting on a post about Dad blogs I like for a couple of weeks now, but it’s going to go live this week.  I’m also going to do a few other roundup articles and link out more liberally.  You get love by giving love, and I’m going to put that principle into practice this month.  This is another thing I’ve been meaning to do, but I didn’t want to jump the gun – linking out before I had established my site.  That’s selfish.  I’m going to publish this post (and others like it) because I think they’re worth sharing to my readers and the people I’m linking to deserve the support.

Goals for this month

  • 30,000 pageviews
  • At least 1 guest post per week on another related blog
  • Minimum 250 RSS subscribers (currently at 111)
  • At least 200 good comments this month on my blog (contest should help)
  • 50 search visitors per day (by the end of the month)
  • 300+ Twitter followers (by the end of the month)
  • Membership in ELN?