Depression sets in

I got a nastygram from eBay. I’ve probably been running on borrowed time for several months; but now they’ve cut me completely off. So my scrapbook page website (scrapbookitforme.com), my project car website (projectcarcatalog.com) and my naruto trading cards websites are all sitting dead in the water.

Sigh, back to the drawing board I suppose; I’ll have to find another $100/month to replace those. I guess I was getting complacent anyway.

Written by russ on November 9th, 2009 with no comments.
Read more articles on Uncategorized.

Another Way to get Fucked by 1and1

So, here’s the skinny on another way to be on the shit end of 1and1’s stick.

First, sign up at 1and1 for a package. Any package. The URL is 1and1.com; you can find their hosting packages, I’m sure. Oh this one looks good… The Beginner Package: $2/month for six months, then it doubles to $4. Right on, you say, and you sign right up. Great. You’re happily going along when you decide you need another domain. So you order another domain through 1and1’s not great prices, but hey, it’s all together.

Fast forward another ten months. You’ve got a pack of domains running, but you’ve outgrown your 1and1 service. You look at the offerings and decide to go with a HostGator package instead. Since you have multiple domains, check out their “baby” level service. Unlimited domain hosting. Great.

You gently move your sites from 1and1 to HostGator. Everything goes smoothly, and you go ahead and flip the switch, changing the nameservers from the 1and1 ones to the hostgator ones. Now everything’s beautific, you’ve got great service, you’ve got fantastic uptime, hostgator is really coming through for you. You’re ready to stop paying for the hosting at 1and1; you don’t need it, and frankly it wasn’t all that great anyway. You call up their “cancel.1and1.com” instructions, enter your username and password, and … shazam!

You can’t cancel your package without cancelling the domains!

So now you need to transfer the domains to (hostgator? I prefer namecheap) before you can cancel your account with 1and1. And you’ll probably be billed for another round at 1and1. As an added bonus, your domains will be locked in “updating status” for an indeterminite length of time) if you’ve recently changed something about them. For instance, their nameservers.

Thanks, 1and1. Again.

Written by russ on March 23rd, 2009 with no comments.
Read more articles on Projects and tips.

Google Adwords’ Game

Taking time out for a mild rant. I think they’re wrong, but it’s their game and if I want to play with them, I have to follow their rules.

There’s a Commission Junction advertiser advertising a job search guide, the “last job search guide you’ll ever need.” The advertiser is collegerecruiter.com. When you click through the link, it takes you to “trialpay.com” to purchase the book. “Trial Pay” is obviously a payment site (like paypal, right?).

So when I advertised the collegerecruiter.com deal through adwords, I put down the collegerecruiter.com site as the destination page. It’s the honest place where the money would go. However, Google Adwords wants trialpay.com as the destination domain. Which I would be down with, if it were trialpay.com selling the book.

Anyway. I thought it was stupid.

Written by russ on March 5th, 2009 with no comments.
Read more articles on Uncategorized.

Don’t be so hasty to remove that subdomain!

I’m working over a site; currently it’s running a bunch of McJiffy sites and getting diddly bupkiss for traffic. The fact that Google Hates It doesn’t help but there’s other sources out there. One of the subdomains is “Rachel Ray.”

Now, I don’t remember why I threw Rachel Ray up there; I suspect I was just tossing it out there because she was a hot search item about a year ago. As I do these subdomains, making them over from McJiffy to “something else,” I’m also evaluating whether or not I should keep the site alive. I mean, I removed britney-spears.portallane.com, didn’t I? And Kim Kardashian?

But looking over my stats, I saw a huge jump for Rachel Ray yesterday. Why? Because she “doesn’t regret those racy photos” and my site popped up on yahoo search for Rachel Ray.

“I think I was 35 at the time [the pictures were taken],” she says. “And I thought about it for a while, and I said, ‘You know what? This magazine has as young as 17-, 18-year-olds in hottie bikinis, and these are all actresses, models, pin-up girls. I don’t belong to any even remote club of theirs.’
“And I thought, ‘If I’m gutsy enough to do this, this is a good thing for everybody. This is the everywoman, here she is.’ And I did it, and it was the most scared I’ve ever been, and I wouldn’t change a thing. I’d do it again tomorrow.”

Yup, those FHM photos came back, and they’re still lovely. Since I’m moving the sites over anyway, I threw together a different page, just showing some of those photos and a couple of popular CPA ads. Heck, free traffic; I don’t suspect these visitors would buy eBay stuff but maybe they’ll click on these banners. And yeah, 200 free views in a day aren’t too shabby, in my mind.

So don’t be too hasty to remove old subdomains. If they’re just sitting there, maybe you should leave them alone. What’s the worst that could happen?

Written by russ on March 3rd, 2009 with no comments.
Read more articles on Uncategorized.

Want Some Free Money ?

This post was inspired by a conversation I had with a non-native english speaker over on IRC.

The basic problem for affiliate marketers is “impressions.” You need to get as many impressions as possible. Once you have a lot of impressions, your percentages for click-through-rates are more reliable, which leads to your conversion rate percentages being more reliable. The first thing you need to worry about is impressions.

People succeed at PPC because they’re paying for impressions. If you don’t want to pay for impressions, (and this is the important part), you’ll need to get them some other way.

Since he was looking for “free money,” my suggestion to him was that he get a blogspot.com blog; note that in this case I’m not encouraging wordpress.com. Wordpress (hosted) blogs don’t allow you to add advertising. With a blogspot blog, you can “edit the template” and insert a html or javascript snippet. This is where you can add advertising.

So, get a blogspot blog, add some advertising, and then figure out how to divert traffic to it.

What I suggested to him was that he write some fabulous, kick ass content, or post boobs, and submit it to digg and reddit and fark. There are two main problems with this approach. First, I suspect his content will get lost in the flood; he was a non-native speaker, and it may have been difficult to connect with his audience (unless he posts his boobs). The second problem with this is that fark, digg and reddit traffic doesn’t convert well. However, this is still true. Compelling content to get your users to your site, getting the eyeballs actually on the page, and then watching the impressions->click ratio and the click->purchase ratio.

Written by russ on February 22nd, 2009 with no comments.
Read more articles on Current Methods and Ebay RSS Blog and ppc campaign.

Unlimited Fresh Content

Need Content Generation? Tired of outsourcing blog entries and want to get-er-done? Need a way to track the backlinks of your sites?

Check out Datapresser!

Using cutting edge technology and scripting from the deep minds that brought you the seocracy databases, Datapresser allows you to track large networks of sites, from a one-off blog where you’re ranking for “kangaroo steaks” to a huge “offshore poker” splog site. You can track the position of your site for selected keywords and you can watch the backlinks roll in.

Or if you’re confident in the success of your own sites, you can track your opponents; watch your meteoric rise in the rankings against their waterfall slide down down, down.

The tracking tools are great but where datapresser shines (and where it gets its name), is when you’re creating fresh content. What you’re doing is creating a wordpress-backup of posts in the future. You can automatically generate thousands of unique articles for any niche; for any blogs.

However good it is, it’ll be worthless to you if you don’t sign up. It’s fairly resource intensive (for the creation of literally hundreds of thousands of posts daily ), so availability is limited. sign up now for this service. You won’t regret it, but you will regret waiting until your opponents learn about it.

Written by russ on January 16th, 2009 with 6 comments.
Read more articles on Uncategorized.

Micro Niches

Got a great email this morning about “micro niches.” But I took it a little differently than I think they intended it. You may have gotten the same email, if this “micro niche” rings a bell.

What is a microniche? Imagine, if you will, a niche for “credit cards with low apr” (those words in that sequence, not low apr credit). According to google, there are 70 pages in the whole world that come up for that page. Getting to the top of that page would be, to coin a phrase, easy. According to the google external keyword tool, there’s about 36 searches per month. About 500 a year.

Most affiliate marketers would avoid such a small niche. What if you didn’t? What if, instead, you built a page with excellent SEO and excellent information on these credit cards with low apr ?

Honestly, what if you took wordpress, whacked together a few pages, and put in some advertising for, you got it, low apr credit cards. You put it on your site and forgot about it.

Suppose your domain purchase is $8. And you put it on your current hosting plan as a parked domain. It won’t get enough traffic to warrant its own hosting plan. It might not get enough traffic to warrant its own domain. But if you’re aimed at selling credit card signups and the click - to - action rate is 1 percent, and the action pays $10, if you sell one credit card every two months, you’ll be making 52 bucks a year (((12/2) * 10) - 8). Ten of those sites would be 520. A hundred, well you see where I’m headed.

True, true, that’s not a lot.

What I’m saying, though, is that if your shotgun approach of finding something with 250,000 sites and 3 million searches per month isn’t working, maybe you should work on something smaller.

I should take my own advice. I’ve been complaining about Easy Spyware Removals not getting much traffic. However, it’s not very seo-optimized, and it’s not very sales oriented. It’s just a dumb bunny site. That specific keyword gets about 140 searches per month. There’s about 3000 sites that pop up in google for that search, and honestly, most of them suck. Of course, the niche is pretty competitive.

Written by russ on January 5th, 2009 with no comments.
Read more articles on Uncategorized.

How To: Twitter Spam

I feel so dirty for writing this, but I was inspired by this twitterer.

After reading how to create a twitter bot in 5 minutes, I realized that I could combine this with simplepie and create a twitter spammer in less than ten minutes. Well, ok it took me fifteen.

So the steps were:
Get something to say,
Get someone to say it to,
Say it.

First, I needed an account with something to say. I used my fsbo homes already-spamming twitter feed. ( . http://twitter.com/fsbohomes ). It just takes the new stuff in the fsbo auction site’s rss feed and twitters it via twitterfeed.

As it turns out, the public feed probably isn’t the best tool for this; a better tool would be twitter’s search at http://search.twitter.com/ . Note the rss feed icon on the results page.

Here’s what I came up with:

// simplepie makes the rss parsing very easy.
include_once( "libs/simplepie.inc" );
$keywords=
    array(
                    ‘fsbo’=>"Hey come check out great prices on real estate auctions: http://www.fsboauction.info"
);

$username = ‘fsbohomes’;
$password = ’somepassword’;

// read the public timeline. Note that this is cached for 60 seconds, so asking for it more often
// than that is silly. Also notice that it won’t catch _everything_ but you should get at least one a day.

$read=‘http://twitter.com/statuses/public_timeline.rss’;
$feed=new SimplePie( );
$feed->set_feed_url( $read );
$feed->set_cache_duration( 60 );
$feed->init();
$feed->handle_content_type();

$count=0;
foreach( $feed->get_items() as $item ){
// read the tweet.
                $tweet=$item->get_title();
// split it into username and the contents.
// we’ll be comparing our keywords against the contents and
// sending the username an @ message.
                list( $a, $t)=split(‘:’, $tweet, 2);
// I had a lot of multibyte-encoded lines but didn’t feel like parsing them.
// since I don’t speak the languages anyway.
                $e= mb_detect_encoding( $t );
                if ( $e == ‘ASCII’ ) {
// check each keyword
                    foreach( $keywords as $seek=>$message ){
                        $count++;
                        if ( strpos( $t, $seek ) !== false ) {
// if the keyword is found, send a message.
                                    $msg = ‘@’.$a.‘ ‘.$message;
                                    $msg = substr( $msg, 0, 140 );
                                    sendTweet( $msg );
                        }
                    }
                }
}
// http://twitter.com/statuses/public_timeline.format
// formats: xml, json, rss, atom

// this is from the twitter bot post referenced above
// it’s just a function for posting a twitter.
function sendTweet($msg){
                global $username;
                global $password;

    $url = ‘http://twitter.com/statuses/update.xml’;

    $curl_handle = curl_init();

    curl_setopt($curl_handle, CURLOPT_URL, $url);
    curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl_handle, CURLOPT_POST, 1);
    curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$msg");
    curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
    $buffer = curl_exec($curl_handle);
    curl_close($curl_handle);
    if (empty($buffer)) {
        echo "failed\n";
    }
    else {
        echo "succeeded\n";
    }
}
 

Ta-daa. I set it to run every five minutes and it caught about one twitter every few hours.

Written by russ on November 16th, 2008 with no comments.
Read more articles on Current Methods and code and tips.

Markoving your content

Markov content is automatically generated using some random input, based on the probability that word Y follows word X. You feed it some input text and then a script analyzes what words come after each word and then assembles an automatic post that’s supposed to look human-enough to fool web spiders. It’s not really a white or grey thing; you can create thousands of pages of keyword rich content, but it’s meaningless to a human.

One word followed by the next word is very unreadable, but basing your markoving on two words (and then randomizing the following word) is a better technique.

All code in these examples are PHP code. There’s a flaw somewhere in it, perhaps you can spot it.

Here are the steps that this markov generator goes through;

  1. Read in a bunch of topical content.
  2. Keeping it in order, split it up into an array of words.
  3. Go through the array, taking a pair of words:

    From “The quick brown fox” you’d get “the quick”, “quick brown”, “brown fox.”
  4. Now that you have the list of word-pairs, get a list of words that follow this pair.

    Keep that in an array, but don’t make it unique. This way it’ll weight the random selection. By which I mean, if you have a word pair like “credit card” and the array is “users, debt, debt,” the word “debt” will have twice the weight when you do a random selection from that array. Which is good, because in human-written content, the word “debt” appears twice as often as the word “users” after “credit card.”
  5. Start the content. I chose to start with the first word pair of my input, but it could and should be randomized.
  6. Take the last two words of the output ( in this case it’s the first word pair) and look up the array of words that follow. Then take a random word out of that array, and append it to the output.
  7. Is it long enough yet? If not, take the last two words of the output again, and look up the array of the words that follow those two words. Keep doing this until it’s long enough.

Here’s the script I came up with. Feel free to use it or abuse it. It’s got some extra verbose variables in it because I’m trying to track down a flaw. It randomly (heh) dies because it can’t find the word pair in the input. But that should be impossible, because I’m selecting it from the input. Hmm, it’s possible that the “find me” part doesn’t have the punctuation that the “input” has, and so it dies.

If I keep putting together code for this site, I’ll have to install one of those pretty-code plugins.

// how many words is our goal?
$wordcount=1000;

// read the input files. Really this should be a glob or a readdir() loop.
$i[]=file(’source/after-you-pay-off-credit-card-debt.txt’);
$i[]=file(’source/agency-card-credit-debt-settlement.txt’);
$i[]=file(’source/a-problem-called-credit-card-debt.txt’);
/*
$i[]=file(’source/bad-debt-credit-card-what-is-that.txt’);
$i[]=file(’source/before-you-go-for-credit-card-debt-help.txt’);
$i[]=file(’source/blogging-consolidation-debt-and-new-information-technology-239.txt’);
$i[]=file(’source/card-com-credit-debt-en-language-site.txt’);
$i[]=file(’source/college-student-credit-card-debt.txt’);
$i[]=file(’source/consolidate-credit-card-debt.txt’);
$i[]=file(’source/consolidate-your-credit-card-debt.txt’);
$i[]=file(’source/credit-card-debt-consolidation-loan.txt’);
$i[]=file(’source/credit-card-debt-consolidation.txt’);
$i[]=file(’source/credit-card-debt-counseling.txt’);
$i[]=file(’source/credit-card-debt-management.txt’);
$i[]=file(’source/credit-card-debt-negotiation.txt’);
$i[]=file(’source/credit-card-debt-reduction.txt’);
$i[]=file(’source/credit-card-debt-relief.txt’);
$i[]=file(’source/credit-card-debt-settlement.txt’);
$i[]=file(’source/credit-card-debt.txt’);
$i[]=file(’source/creditcarddebt.txt’);
$i[]=file(’source/eliminate-credit-card-debt.txt’);
$i[]=file(’source/excessive-credit-card-debt.txt’);
$i[]=file(’source/get-out-of-credit-card-debt.txt’);
$i[]=file(’source/is-consolidating-credit-card-debt-a-good-option.txt’);
$i[]=file(’source/reduce-credit-card-debt.txt’);
$i[]=file(’source/re-financing-to-consolidate-debt.txt’);
$i[]=file(’source/taking-a-step-towards-credit-card-debt-elimination.txt’);
$i[]=file(’source/teen-credit-card-debt-statistics.txt’);
$i[]=file(’source/the-benefits-from-credit-card-debt-consolodation.txt’);
*/

// some print output to mark my spot while I troubleshoot.
print count( $i )." files loaded\n";
// put them all together.
for ($j=0;$j<count($i);$j++ ){
    $input=array_merge($input, $i[$j] );
}
print "merged\n";

// clean up the input. We’re winding up with just a list of words separated by ONE space.
$input=implode(" ", $input );
$input=preg_replace(‘|[^a-zA-Z0-9 ]|’, ‘ ‘, $input );
// this next line cleans out all double spaces.
while( strpos( $input, ‘  ’) !== false ) { $input = str_replace( ‘  ’, ‘ ‘, $input ); }

$inputstring=$input;
$holder=explode(‘ ‘, $input );
unset( $input );
// not sure why I had empty elements in the $input array but this is to remove all of them.
$input=array();
foreach( $holder as $k=>$v) {
    if ( strlen( trim( $v )) > 0 ) {
        $input[]=trim( $v );
    }
}
print "cleaned\n";

// this array is for the word pairs.
$segments=array();
$holder=array_shift( $input );
while( count( $input ) ) {
        // take the current word and the next word from the input array.
    $matchme=$holder.‘ ‘.$input[0];
    $pattern="|$matchme (.*?) |";
        // get all the matches from input- the long string of words not the array
    preg_match_all( $pattern, $inputstring, $matches );
        // add the list of matched words to the segments array
    $segments[ $matchme ] = $matches[1];
        // cut the first item from the input array and move it over one.
        // note that the array_shift compares against the while strlen above, so the shift is important
    $holder=array_shift( $input );
}
// just some output
print count($segments)." segments calculated\n";
$keys=array_keys( $segments );

// starting to assemble the output. Using $keys[0] to be the first bit of the markoved content.
$output[]=$keys[0];
// $bracket is reused each loop, but $output holds the … wait for it … output.
$bracket=$output[0];
print "assembling\n";
// yeah yeah compare the length of output against the desired length.
while( count( $output )  < $wordcount ){
        // $bracket is the key for $segments.
    $index=$bracket;
    $possiblenext=$segments[$index];
        // $possiblenext is the array of words-that-follow ‘bracket’.
    if ( count( $possiblenext ) == 0 ) {
                // this is where it’s dying oddly
        print "no possible next for $bracket\n";
        die("\n\naiee!!\n");
    }
    $rand=rand(0, count( $possiblenext )-1 );
        // pick a random number out of the array. I had this all wrapped together but broke it apart when it wasn’t working
    $nextword=$possiblenext[$rand];
    $output[] = ‘ ‘.$nextword; // prepend a space so the words don’t mash together
        // the next bracket is the second word of this group plus the nextword variable.
    $holder=split( " ", $bracket );
        // makes me sad that I can’t use split(’ ‘, $bracket)[1];
    $nextbracket=$holder[1].‘ ‘.$nextword;
    $bracket = $nextbracket;
}
$output = implode( ‘ ‘, $output );
print $output;
print "\n";
 

So in a perfect world, I’d find that flaw and then maybe substitute some links into it from this stuff to a real site ( for instance, $output = str_replace(”bad debt”, “bad debt“, $output ) ) and then use xmlrpc and post it to a splog and ping pingomatic.

Hopefully this gets you going in writing your own markov generator. It’s important to write your own stuff, so you know how it works and to keep your stuff from looking too much like someone else’s stuff. My markov generator might generate different output ( different looking output ) from Nickycake’s generator. It’ll definitely be different output, because it’s all randomized. You can feel free to use the code above any way you want, I’m sure that since it’s unfinished, your touches will make it unique.

Written by russ on November 3rd, 2008 with no comments.
Read more articles on code.

WebWriMo ?

Wtf!

I’ve long been a fan of the National Novel Writing Month, NaNoWriMo. I don’t think I could keep up with the novel writing because of my other “irons in my fire” but the Old Blind Ape is hosting a shindig. We’re writing 50,000 words of content; which could be ( does the math ), 100 500 word articles for various sites.

I have sites that could use a few 500 word articles. It’ll be good to get the content running on them. And if I get the pump primed well enough, I’ll be able to talk myself into writing more often.

For instance, I don’t think I could come up with content for project car catalog, but with this, I should be able to come up with bloody something.

Written by russ on November 3rd, 2008 with no comments.
Read more articles on Current Methods and goals.

« Older articles

No newer articles