Генеруємо, наповнюємо і розкручуємо сайти за допомогою ZennoPoster

ДДЛ – дори для людей) – це категорія копіпастних, автогенерованих нейронками, перекладних сайтів або агрегаторів контенту, які досить складно відрізнити від звичайних сайтів, де контент в основному пишуть люди. Зазвичай користувачі активно використовують такі сайти й пошукові системи лояльно до них ставляться і не банять. Один із прикладів – численні перекладні клони stackoverflow, ви напевно часто стикалися з такими сайтами, коли гуглили методи C# або JS.

Кому буде корисна ця стаття?

  1. Тим, хто хоче нарешті почати заробляти на сайтах – на самому надійному, передбачуваному і маловитратному ($50 витрат на рік на один сайт) способі заробітку в мережі.
  2. Тим, хто вже переріс дорвеї і хоче отримувати більш якісний трафік.
  3. Тим, кому потрібні сітки трастових PBN для прокачування посилальним своїх money-сайтів.
  4. Тим, хто крім пошукового трафіку хоче отримувати трафік з соц. мереж і мати постійних відвідувачів.
  5. Тим, хто хоче монетизувати свої сайти не тільки редиректом на сірі партнерки, а й підключити рекламу Гугла або Яндекса.
  6. Тим, хто хоче будувати воронки, організовувати розсилки, формувати підписну базу користувачів, контактувати з ними в автоматичному режимі за допомогою ботів.
  7. Тим, хто хоче створити не тільки звичайний контентний проект заснований на ключах, а новинний сайт, user generated content, агрегатор даних, прибутковий сервіс, корисний ресурс, що розвивається.

WordPress багатьма критикується за повільність, уразливості, заплутаність структури таблиць. Частково це вірно, але в умілих руках сайт на WP може показувати PageSpeed – 95/100, а злом його практично неможливий. А завдяки величезній кількості тем, плагінів, доповнень, статей і активному ком’юніті, WP по праву займає перше місце серед CMS за популярністю.

Можливо експерти по WP зараз зададуться питанням – а навіщо взагалі потрібна Зенка? Зараз є тисячі плагінів, які вирішують грандіозні завдання з парсингу та автоматичного наповнення ВП сайтів без жодної участі адміністратора і тільки серверними скриптами. Навіщо тут потрібен десктопний софт?

Відповідаю:

  • Такого, що я описую в цій статті, не робить жоден скрипт або плагін. Можливо я погано шукав, але знайти мені не вдалося і 1/10 необхідного функціоналу.
  • Навіщо мені глючні чужі плагіни, в основній масі платні, в яких ще й розбиратися потрібно не один день, коли є такий надійний і добре зарекомендував себе інструмент як зп?
  • Багато завдань потрібно вирішувати комплексно, системно. І тут функціоналу плагінів явно не вистачає. Наприклад, ЗП зберігає посилання на статтю, яку потім запостить і в соц. мережі, і згенерує нейросіткой текстовку в веб 2.0, і сформує анкори під спам через ДСА.

Google.Random();

Ви, напевно, думаєте, що можливості Зенки обмежуються тільки рутинною роботою по генерації контенту, постингу і розпихування посилань на різні ресурси? Так, Зенно постер все це успішно вміє, але не тільки. ЗП допомагає також і створювати сайти. Написавши свої шаблони, ви зможете створювати складні сайти (десятки вкладених категорій, купа мов, теги, кілька меню, мобільна версія + AMP) буквально за пару годин. Такі сайти звичайні користувачі роблять тижнями. Так, я теж багато речей роблю руками (установка теми, набір плагінів, їх настройка, логотип, опис сайту), але найскладнішу і нудну частину віддаю на відкуп Зенці.

Але навіщо мені кожен день створювати по кілька сайтів, скажете ви? Виною всьому рандом Гугла. На особистому досвіді я і мої колеги не раз переконувалися, що далеко не завжди ефект від сайту залежить від кількості і якості вкладених в нього сил, ресурсів і грошей. Скільки прекрасних проектів загиналося через неправильне підібраний дроп-домен, абузи за порушення авторських прав через якісь картинки або взагалі без будь-якої на те причини.

А іноді, навпаки, зібраний на коліні сайт злітав сам собою і давав тонни трафіку. Тому найважливіший принцип дорвейщика: бери більше, кидай далі, в паузах уважно аналізуй. З 10 створених вами протягом тижня сайтів, 5, за статистикою, загнуться. 3-4-вийдуть на самоокупність. А ось один або два почнуть приносити стільки прибутку, що окуплять всі витрати і принесуть вам не тільки масло на хліб.

Дисклаймер. Описувані нижче методи і прикладу я даю тільки в ознайомчому, загальному вигляді. Немає сенсу публікувати мої реальні шаблони: вони вкрай заплутані і мають взаємозв’язки з іншими проектами і можуть тільки перешкодити нормальному вирішенню завдань. Тому краще на основі запропонованих прикладів писати свій власний велосипед, а не тупо копіювати код, який в 99% випадків не буде працювати у вашому проекті.

Категорично-починаємо.

У вкладенні є шаблон в якому додані всі методи описані в цій статті, а також власне плагін “WP Zenno”.

Почнемо з чогось простого. Ми створюємо по суті дорвеї, тому нам потрібні десятки категорій щоб максимально розширити семантику. Ну, категорії можна і руками додати, скажете ви. А якщо дорвей багатомовний? І якщо категорії мають рівні вкладеності? Тільки автоматизувати!

Зібрали Ключі, відкластеризували – кожен кластер відповідає категорії. Якщо кластеризуєте Зенкою, то можна в тому ж шаблоні і категорії створювати, але я віддаю перевагу зберіганню в Ексель таблиці де кожен ключ в окремому рядку, до нього підкатегорія з назвою і id, і потім батьківська категорія з id. Вірніше, спочатку id немає, ми їх отримуємо як результат POST запиту, який ви можете знайти в прикладеному шаблоні.

Відповідно до логіки ваших ключів / підкатегорій / категорій налаштовуєте цикл, який послідовно створює зазначені вище сутності і заповнює табличку. Приклад запиту як завжди у вкладеному шаблоні. і, так, це чистий WP REST API який працює “з коробки” – поки все не складно.

Офіціант, принесіть меню!

Категорії створені, але який сайт без меню! Немає проблем, але це завдання складніше. Для цього вже з коробки немає rest запитів і ми будемо писати свій ендпоінт для підключення до Хакам WP.

Так, ми будемо створювати свій плагін для WP!

У новий PHP-файл додаємо Хук add_action і в ньому реєструємо ендпоінти для кожної дії – в даному випадку для створення меню.

PHP:
add_action('rest_api_init', function() { register_rest_route('create_menu/v1', '/menus/', [ 'methods' => 'POST', 'callback' => 'generate_site_nav_menu', ]); }

Далі нам потрібно в функції “generate_site_nav_menu” виконати дії по створенню меню. Не буду описувати всі деталі, щоб стаття не перетворилася в “війну і мир” – ви впораєтеся.

PHP:
function generate_site_nav_menu(WP_REST_Request $request) { $data = $request->get_params(); $menu_primary = $data['menu_name']; $result = wp_create_nav_menu( $menu_primary ); $menu_primary_obj = get_term_by( 'name', $menu_primary, 'nav_menu' ); $location_target = $data['location_target']; $menu_items_array = json_decode($data['menu_items_array']); $menu_items_array_count = count($data); for ($x = 0; $x < $menu_items_array_count; $x++) { $str = $data['menu_items_array_'.$x]; if (strlen($str) > 0 && $pos1 == -1) { $pos1 = $x; } elseif (strlen($str) > 0 && $pos2 == -1) { $pos2 = $x; } } $i = 0; $parent_id = array(); foreach( $menu_items_array as $page_name => $page_location ){ $parent_id[$i] = generate_site_nav_menu_item( $menu_primary_obj->term_id, $page_name, $page_location ); $i++; } $locations_primary_arr = get_theme_mod( 'nav_menu_locations' ); $locations_primary_arr[$location_target] = $menu_primary_obj->term_id; set_theme_mod( 'nav_menu_locations', $locations_primary_arr ); update_option( 'menu_check', true ); } //функция создания родительского итема function generate_site_nav_menu_item( $term_id, $title, $url ) { $p_id = wp_update_nav_menu_item($term_id, 0, array( 'menu-item-title' => sprintf( __('%s', 'text_domain'), $title ), 'menu-item-url' => home_url( '/' . $url ), 'menu-item-status' => 'publish' ) ); return $p_id; }

Якщо сайт багатомовний або меню має ієрархію, то код вище підлягає додатковій обробці напилком.
Після створення файлу плагіна (він, до речі, є у вкладенні), додаємо його також як інші плагіни й активуємо.

HINT: коли ви станете масово створювати сайти за цією технологією, то напевно захочете об’єднати три стартових шаблони (Basic Auth, Rest API meta endpoints і Zenno) в один і додавати його в усі нові сайти в три кліка.

Тепер вже в Зенно постері в циклі беремо раніше створений при генерації категорій Ексель і заповнюємо меню в циклі за допомогою POST запиту.

Авторські аватарки ручної роботи

А навіщо на дорі потрібно багато авторів? Щоб створювалася імітація великого ком’юніті, щоб статті були від різних авторів, щоб в коментарях були дискусії та складні діалоги, щоб один бот запитував, а інший відповідав. У нас же не якийсь дорвей!

Створення автора можливо за допомогою звичайного WP API, але встановити аватару у вас навряд чи вийде. Для цього ми створимо окремий ендпоінт. Діяти потрібно у 2 етапи: спочатку заливаємо картинку в медіа-каталог, потім привласнюємо автору цю картинку по id як аватару.

І потім встановлюємо аватарку по URL

PHP:
function set_avatar_url(WP_REST_Request $request) { $data = $request->get_params(); include_once( ABSPATH . 'wp-admin/includes/image.php' ); $imageurl = $data['avatar_url']; $imagetype = end(explode('/', getimagesize($imageurl)['mime'])); $uniq_name = date('dmY').''.(int) microtime(true); $filename = $uniq_name.'.'.$imagetype; $uploaddir = wp_upload_dir(); $uploadfile = $uploaddir['path'] . '/' . $filename; $contents= file_get_contents($imageurl); $savefile = fopen($uploadfile, 'w'); fwrite($savefile, $contents); fclose($savefile); $wp_filetype = wp_check_filetype(basename($filename), null ); $attachment = array( 'post_mime_type' => $wp_filetype['type'], 'post_title' => $filename, 'post_content' => '', 'post_status' => 'inherit' ); $attach_id = wp_insert_attachment( $attachment, $uploadfile ); $imagenew = get_post( $attach_id ); $fullsizepath = get_attached_file( $imagenew->ID ); $attach_data = wp_generate_attachment_metadata( $attach_id, $fullsizepath ); wp_update_attachment_metadata( $attach_id, $attach_data ); global $wpdb; $resultss = update_user_meta($data['id'], $wpdb->get_blog_prefix() . 'user_avatar', $attach_id); print_r($resultss); }

Зіркові кастомні поля

Відмінно! Сайт створений, налаштований і організований регулярний постинг. Але нам же потрібно щоб пост був не просто у вигляді скопіпастенного тексту. Важливо додавати якусь цінність контенту. Рейтинги, відгуки, рекламні фрейми, вставки динамічного тексту, блоків уваги. Все це позитивно впливає на поведінкові фактори і покращує SEO нашого ДДЛ. Давайте розглянемо, як додавати кастомне поле в усі пости, що публікуються.

Допоможе нам в цьому плагін ACF (Advanced Custom Fields). Створюємо кастомне поле – наприклад, рейтинг. Конкретно для рейтингу у вигляді зірок потрібно ще одне доповнення – Advanced Custom Fields: Star Rating Field. Створюємо поле “rating” з типом “Star Rating”. Потім нам потрібно вивести це поле, припустимо на початку статті.

Для цього редагуємо в темі файлик, що відповідає за контент поста. Наприклад в темі Kadence це single-entry.php (template-parts/content/single-entry.php). Додаємо в потрібне місце висновок рейтингу в цифрах і у вигляді зірочок.

PHP:
$rating = get_field( 'rating' ); if ( $rating ) { $average_stars = round( $rating * 2 ) / 2; $drawn = 5; echo 'Rating: <div class="star-rating">'; // full stars. for ( $i = 0; $i < floor( $average_stars ); $i++ ) { $drawn--; echo '<svg aria-hidden="true" data-prefix="fas" data-icon="star" class="svg-inline--fa fa-star fa-w-18" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z"/></svg>'; } // half stars. if ( $rating - floor( $average_stars ) === 0.5 ) { $drawn--; echo '<svg aria-hidden="true" data-prefix="fas" data-icon="star-half-alt" class="svg-inline--fa fa-star-half-alt fa-w-17" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 536 512"><path fill="currentColor" d="M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z"/></svg>'; } // empty stars. for ( $i = 0; $i < $drawn; $i++ ) { echo '<svg aria-hidden="true" data-prefix="far" data-icon="star" class="svg-inline--fa fa-star fa-w-18" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z"/></svg>'; } echo '</div>'; }

Додаємо в наш Зенно-плагін код:

PHP:
function acf_posts(WP_REST_Request $request) { $data = $request->get_params(); update_field("rating", $data['rating'], $data['id']); print_r("success ".$data['id']); }

І не забуваємо його ініціалізувати:

PHP:
register_rest_route('acf/v4', '/posts/(?P<id>\d+)', [ 'methods' => 'POST', 'callback' => 'acf_posts', ]);

Тепер в шаблоні після публікації будь-якого поста, REST API поверне id поста, а наступним кубиком ми відправляємо якийсь рейтинг (наприклад просто генеруємо його випадково) до цього посту. Додавайте таким же образів до постів згенеровані картинки, опитування, міні-задачки, цитати. Використання кастомних полів вкрай популярно в інтернет-магазинах, каталогах, різних агрегаторах даних.

Не соромимося, оновлюємося

Чим ще допомагає ЗП при роботі з WP? Оновлення статей. Ви не знали, що ПС дуже люблять, щоб не тільки сайт наповнювався свіжими статтями, а й самі статті іноді оновлювалися і доповнювалися? І не просто новим контентом, але коментарями, і щоб в статтях з’являлася вставка UPTATED (як варіант з датою) і додано 1-2 абзаци, які наша трудівниця Зенка дбайливо допарсила по ключу статті.

Алгоритм такий:

  1. Експортуємо з GSC (консоль вебмастера) таблицю по вашому сайту.
  2. У вкладці “сторінки” збираємо в список найбільш трафікові сторінки за останні 6-12 місяців.
  3. Згодовуємо цей список Зенці, яка по апі отримує тайтл сторінки, теги, якщо ви їх проставляли, категорію, і на основі комбінації цих даних шукає свіжий контент (так, шукаємо з параметром……).
  4. Формуємо блок “UPDATE”, його можна виділити стилями і додати дату оновлення, і по апі редагуємо сторінку з заданим інтервалом (наприклад 1 сторінка на добу).
  5. Бажано відправити сторінку через GSC в переобхід.

ZP + WP = $$$

Безумовно, методи генерації сайту і його наповнення, в яких допомагає ЗенноПостер, набагато ширше: генерація картинок, створення динамічних віджетів (це такі блоки на сайті), контекстна перелінковка. або, наприклад, така тема. ЗП при постингу статті додає не один варіант заголовка, а 2-4, і WP сайт при кожному перегляді юзера головної показує йому випадковий заголовок, аналізує на які заголовки частіше клацають і, за результатами тестів, починає підставляти заголовок, який володіє найвищим CTR. В результаті зростають ПФ і залученість користувачів.

Ну і нарешті, вищий пілотаж комплексної інтеграції ЗенноПостера і WordPress я можу продемонструвати на прикладі одного міні-сервісу-розділу прогнозів на криптовалютному сайті. Багато з вас стежать за курсом біткоіну і намагаються спрогнозувати його курс. Щоб додати гейміфікацію у звичайний інформаційнник я модернізував плагін квізів і додав в нього імітацію голосування ботами ЗенноПостера і Шерінга в ФБ. Це досить складно описати словами, простіше показати на відео. Дивіться відео, яке є додатком до цієї статті, там же я розповім про налаштування WP сайту і покажу які теми і плагіни я найчастіше використовую при створенні ДДЛ.

БОНУС: Як підібрати ключі за правилом «золотого перетину»?

Десь рік тому в буржунеті спливла в пабліку одна методика пошуку трафікових ключів (Keyword Golden Ratio). Не так давно я спробував адаптувати її під свої ДДЛ і автоматизував за допомогою Зенно-постера.
Основний алгоритм пошуку таких ключів і підготовки контенту такий:

  1. Вивантажуємо з будь-якого сервісу типу Ahrefs (платно) або Google keyword planner (безкоштовно) низькочастотні ключі по вашій тематиці. Я беру volume в інтервалі від 100 до 1000 якщо по США. Бажано щоб не було відвертого шлаку і краще відфільтрувати на кількість символів (не більше 70), слів (не більше 7) і наявність чисел.
  2. Зенкою збираємо з видачі Гугла значення allintitle по вашим запитам. Запит виглядає приблизно так, якщо потрібні ТОП США: https://www.google.com/search?q=allintitle:{-Variable.key -}&hl=en&gl=us
  3. Потім фільтруємо запити за формулою allintitle / volume – вони повинні бути не більше 0.3
  4. Отримані ключі ще раз перевіряємо руками й заряджаємо Зенку на парсинг і складання статей по цих ключах. Бажано зробити контентний мікс (текст, картинки, Youtube відео) зі вставками різних блоків: FAQ, пости з соц. мереж (embed Facebook і Twitter), таблиці порівняння, авторське цитування і т.п. бажано невелика унікалізація перекладами або синонімізація.
  5. Відправляємо URL на індексацію через GSC або сервіс індексації.
    Опціонально: проставляємо 1-2 беклінка з соц. мереж або web 2.0. Робиться також на автоматі.
  6. Якщо Гуглу сподобається контент, то ТОП 1-10 зазвичай приходить на 5-7 добу.

Ось так виглядає основний алгоритм збору даних з Google і обчислення коефіцієнта “золотого перетину”.

Додаткові файли.

Оцініть статтю
Додати коментар