Получаем трафик из Tвиттера с помощью бота
Хочу рассказать об одной полезной вещи, которая уж точно не будет лишней для стартапа.Все мы слышали о twitter, но не все понимают как им можно пользоваться, а самое главное какую пользу он принесет нашему проекту. Тем более, что русскоязычная аудитория там — набирает обороты очень стремительно.
Итак мы создали себе аккаунт, нашли там своих друзей и подписались на их твиты (зафолловили их), они соответственно зафолловили нас.
То есть теперь, если мы запостим себе в твиттер сообщение (твит) с ссылкой на наш проект, то его увидят все наши друзья (фолловеры). И чем больше у нас будет этих самых фолловеров, тем большее количество людей увидят наш твтит, и высока вероятность, что кто-то из них перейдёт по нашей ссылке.
Наша цель — набрать фолловеров. Но если мы начнем приглашать всех подряд — это закончиться тем, что на нас пожалуются, а тут и до блокировки нашего аккаунта недалеко.
Одной из особенностей твиттера является поиск в реальном времени. Давайте представим себе что вы запостили себе следующий пост: «Ребята, посоветуйте классную онлайн игру.» И тут через 5 минут вам в фолловеры стучится твиттеровский аккаунт «онлайн игра». Не ужели Вы не зафолловите её?
Или например твитите: «Еду на майские в Москву, нужно снять на 3е суток однокомнатную квартиру» и через пару минут после вашего твита к вам стучится агентство и предлагает массу вариантов.
Уловили в чём суть?
Таким образом можно быстро и безболезненно набрать целевых фолловеров. Чтобы автоматизировать процесс поиска по нужным ключевым словам, нам на помощь приходит бот. Для реализации я выбрал Perl.
Идем под своим логином на dev.twitter.com/apps/new и выбираем имя для нашего бота. В поле Default Access type ставим Read & Write. После регистрации мы получим consumer_key,consumer_secret,access_token,access_token_secret.
В комплекте 5 файлов.
t_conf.txt — сюда бот будет записывать id последнего твита, чтоб каждый раз не сканировать устаревшие твиты.
t_requested.txt — тут хранятся id пользователей которых мы уже зафолловили, чтоб не стучаться несколько раз подряд к одному и тому же юзеру.
t_following.txt — тут тоже хранятся id пользователей которых мы зафолловили, плюс даты (время, когда мы их зафолловили). Это специально, что-бы чистить наш аккаунт от тех пользователей, котороые нас не зафолловили обратно в течении 5 дней (вы сами можете выставить какой угодно срок).
tweet.pl — бот который ищет твитты и фолловит их авторов, его нужно вешать на крон, периодичность — хотя бы раз в 1 час.
#!/usr/bin/perl -w
use Net::Twitter;
use Net::Twitter::Search;
use Scalar::Util 'blessed';
# тут те самые ключи которые мы получали при регистрации
my $twi = Net::Twitter->new(
traits => [qw/OAuth API::REST/],
consumer_key => 'Ef335JVH18ve7NMstSr8Zg',
consumer_secret => 'OqELqJr7D6XrJ2RFiVVDwKIQz4fpxMX80v2xgEyupE',
access_token => '14210921-HMFk59JoVV4euSDrYgh576vR7OW93uSCcycQAkE9F',
access_token_secret => 'NgSuhEDF7yaRAb7YRVFVpG9r9h3Jm5DRTjNUb7qK4',
);
#путь где лежат текстовые файлики
my $path='/home/www/cgi-bin/fd/adv/cron/';
my @conf=();
open (S,$path.'t_conf.txt') || die 'cant open';
@conf=<S>;
chomp @conf;
close(S);
$conf[0]=0 if ! $conf[0];
my $mt = Net::Twitter::Search->new;
# тут вписываем ключевые слова для поиска
my $r = $mt->search({q=>'dreamfoot OR "football manager" OR "soccer manager"',since_id=>$conf[0],rpp=>100});
my %targets=();
$targets{$_->{from_user_id}}=$_->{from_user} foreach @{$$r{results}};
my $reqs=0;
if (scalar(keys %targets)){
my %sended=();
open (F,$path.'t_requested.txt');
my @reqs=<F>;
chomp @reqs;
foreach (@reqs){$sended{$_}=''}
close(F);
foreach (keys %targets) {
if (! exists $sended{$_}) {
eval {$twi->create_friend($targets{$_})};
$reqs++;
open (S,'>>'.$path.'t_requested.txt') || die 'cant open';
print S $_."\n";
close(S);
#ставим лимит на 10000 операций за один запуск бота, чтоб не забанили
if ($reqs>10000){$$r{max_id}=0;last;}
}
}
}
open (S,'>'.$path.'t_conf.txt') || die 'cant open';
print S $$r{max_id}."\n";
close(S);
tweet_eraser.pl — бот смотрит список пользователей которых мы фолловим, и удаляет тех, кто не зафолловил нас обратно на протяжении 5ти дней.
#!/usr/bin/perl -w
use Net::Twitter;
use Scalar::Util 'blessed';
use Data::Dumper;
my $twi = Net::Twitter->new(
traits => [qw/OAuth API::REST/],
consumer_key => 'Ef665JVVV09fds7NMstSr8Zg',
consumer_secret => 'OqELqJreerXrJ2RFiVLHwKIQz4fpxMX80v2xgEyupE',
access_token => '2436011-HMFk59JoCC4euSDrYgh576vR7OW93uSCcycQAkE9F',
access_token_secret => 'NgSuhEdddyaRAb7YRBRVpG9y9h3Jm5DRTjNUb7qK4',
);
my $path='/home/dreamfoot.net/cgi-bin/fd/adv/cron/';
my @conf=();
open (S,$path.'t_following.txt') || die 'cant open';
@conf=<S>;
chomp @conf;
close(S);
my %data=();
foreach ( @conf ){
my ( $id , $key ) = split ( /,/ , $_ );
$data{$id}=$key;
}
my %alre=();
my $follower = $twi->followers_ids();
$alre{$_}='' foreach (@{$follower});
my $t = time ();
my $following = $twi-> following_ids();
foreach ( @ { $following } ){
if (exists $alre{$_}){delete $data{$_} if exists $data{$_}}
else {
# 432000 - это в секундах 5 дней
if (! exists $data{$_}){$data{$_}=$t}
else {
if ($t-$data{$_}>432000){
eval {$twi->destroy_friend($_)};
delete $data{$_};
}
}
};
};
open (S,'>'.$path.'t_following.txt') || die 'cant open';
print S $_.','.$data{$_}."\n" foreach keys %data;
close(S);
Есть одно ограничение: твиттер разрешает фолловить не больше чем 2000 юзеров. Вы с ним столкнетесь примерно после месяца работы вашего бота. Тогда вам нужно будет отписаться от тех за кем вы следите, надеясь что они в ответ не перестанут следить за вашими твитами.
Если у вас все будет успешно, то вы сможете получать дополнительно 100-150 хостов на ваш проект, благодаря аккаунту в твиттере. Хоть и мелочь, но приятно =)
Успехов Вам!
ХАБР.РУ
