Налаштування обладнання та програмного забезпечення

Давай напишемо ядро! Створюємо найпростіше робоче ядро ​​операційної системи. Семантичне ядро ​​— як правильно скласти? Зробити семантичне ядро

Розробка ядра по праву вважається завданням не з легких, але написати просте ядро ​​може кожен. Щоб доторкнутися до магії кернел-хакінга, потрібно лише дотриматись деяких умов і впоратися з асемблером. У цій статті ми на пальцях розберемо, як це зробити.


Привіт світ!

Давай напишемо ядро, яке завантажуватиметься через GRUB на системах, сумісних з x86. Наше перше ядро ​​показуватиме повідомлення на екрані і на цьому зупинятиметься.

Як завантажуються x86-машини

Перш ніж думати про те, як писати ядро, давай подивимося, як комп'ютер завантажується та передає управління ядру. Більшість регістрів процесора x86 мають певні значення після завантаження. Реєстр - вказівник на інструкцію (EIP) містить адресу інструкції, яка буде виконана процесором. Його захардшкірене значення – це 0xFFFFFFFF0. Тобто x86-й процесор завжди починатиме виконання з фізичної адреси 0xFFFFFFF0. Це останні 16 байт 32-розрядного адресного простору. Ця адреса називається "вектор скидання" (reset vector).

У карті пам'яті, що міститься в чіпсеті, прописано, що адреса 0xFFFFFFF0 посилається на певну частину BIOS, а не на оперативну пам'ять. Однак BIOS копіює себе в оперативку для швидшого доступу - цей процес називається «шедоуінг» (shadowing), створення тіньової копії. Так що адреса 0xFFFFFFF0 міститиме лише інструкцію переходу до того місця в пам'яті, куди BIOS скопіювала себе.

Отже, BIOS починає виконуватись. Спочатку вона шукає пристрої, з яких можна завантажуватися в порядку, заданому в налаштуваннях. Вона перевіряє носії на наявність «чарівного числа», яке відрізняє завантажувальні диски від звичайних: якщо байти 511 та 512 у першому секторі дорівнюють 0xAA55, значить, диск завантажувальний.

Як тільки BIOS знайде завантажувальний пристрій, вона скопіює вміст першого сектора в оперативну пам'ять, починаючи з адреси 0x7C00, а потім переведе виконання на цю адресу і почне виконання коду, який щойно завантажила. Ось цей код і називається завантажувачем (bootloader).

Завантажувач завантажує ядро ​​на фізичну адресу 0x100000. Саме він і використовується більшістю популярних ядер для x86.

Усі процесори, сумісні з x86, починають свою роботу в примітивному 16-розрядному режимі, які називають реальним режимом (real mode). Завантажувач GRUB перемикає процесор у 32-розрядний захищений режим (protected mode), переводячи нижній біт регістру CR0 в одиницю. Тому ядро ​​починає завантажуватися вже у 32-бітному захищеному режимі.

Зауваж, що GRUB у випадку з ядрами Linux вибирає відповідний протокол завантаження і завантажує ядро ​​в реальному режимі. Ядра Linux переключаються в захищений режим.

Що нам знадобиться

  • Комп'ютер, сумісний з x86 (очевидно),
  • Linux,
  • асемблер NASM,
  • ld (GNU Linker),
  • GRUB.

Вхідна точка на асемблері

Нам би, звичайно, хотілося написати все на C, але уникнути використання асемблера не вийде. Ми напишемо на асемблері x86 невеликий файл, який стане стартовою точкою для нашого ядра. Все, що робитиме асемблерний код, - це викликати зовнішню функцію, яку ми напишемо на C, а потім зупиняти виконання програми.

Як зробити так, щоб асемблерний код став стартовою точкою для нашого ядра? Ми використовуємо скрипт для компонувальника (linker), який лінкує об'єктні файли та створює фінальний виконуваний файлядра (докладніше поясню трохи нижче). У цьому скрипті ми вкажемо, що хочемо, щоб наш бінарний файл завантажувався за адресою 0x100000. Це адреса, як я вже писав, за якою завантажувач очікує побачити вхідну точку в ядро.

Ось код на асемблері.

kernel.asm
bits 32 section .text global start externe kmain start: cli mov esp, stack_space call kmain hlt section .bss resb 8192 stack_space:

Перша інструкція bits 32 – це не асемблер x86, а директива NASM, що повідомляє, що потрібно генерувати код для процесора, який працюватиме в 32-розрядному режимі. Для нашого прикладу це не обов'язково, але вказувати це явно – гарна практика.

Другий рядок починає текстову секцію, також відому як секція коду. Сюди піде весь код.

global - це ще одна директива NASM, вона оголошує символи із нашого коду глобальними. Це дозволить компонувальнику знайти символ start, який і є нашою точкою входу.

kmain - це функція, яка буде визначена у нашому файлі kernel.c. extern оголошує, що функція декларована десь ще.

Далі йде функція start, яка викликає kmain і зупиняє процесор інструкцією hlt. Переривання можуть будити процесор після hlt , тому спочатку ми відключаємо переривання інструкцією cli (clear interrupts).

В ідеалі ми повинні виділити певну кількість пам'яті під стек і направити на неї покажчик стека (ESP). GRUB, здається, це й так робить за нас, і на цей момент вказівник стеку вже заданий. Однак про всяк випадок виділимо трохи пам'яті в секції BSS і направимо покажчик стека на її початок. Ми використовуємо інструкцію resb – вона резервує пам'ять, задану в байтах. Потім залишається мітка, що вказує на край зарезервованого шматка пам'яті. Прямо перед викликом kmain покажчик стека (esp) іде на цю область інструкцією mov .

Ядро на C

У файлі kernel.asm ми викликали функцію kmain(). Так що в коді на виконання C почнеться з неї.

kernel.c
void kmain(void) ( const char *str = "my first kernel"; char *vidptr = (char*)0xb8000; unsigned int i = 0; unsigned int j = 0; while(j< 80 * 25 * 2) { vidptr[j] = " "; vidptr = 0x07; j = j + 2; } j = 0; while(str[j] != "\0") { vidptr[i] = str[j]; vidptr = 0x07; ++j; i = i + 2; } return; }

Все, що робитиме наше ядро ​​- очищати екран і виводити рядок my first kernel.

Насамперед ми створюємо покажчик vidptr, який вказує на адресу 0xb8000. У захищеному режимі це початок відеопам'яті. Текстова екранна пам'ять - це частина адресного простору. Під екранне введення-виведення виділено ділянку пам'яті, яка починається з адреси 0xb8000, - в нього міститься 25 рядків по 80 символів ASCII.

Кожен символ у текстовій пам'яті представлений 16 бітами (2 байти), а чи не 8 бітами (1 байтом), яких ми звикли. Перший байт - це код символу ASCII, а другий байт - це attribute-byte . Це визначення формату символу, зокрема - його колір.

Щоб вивести символ зеленим по чорному, нам потрібно помістити s в перший байт відеопам'яті, а значення 0x02 - в другий байт. 0 тут означає чорний фон, а 2 – зелений колір. Ми будемо використовувати світло-сірий колір, його код – 0x07.

У першому циклі while програма заповнює порожніми символами з атрибутом 0x07 усі 25 рядків по 80 символів. Це очистить екран.

У другому циклі while символи рядка my first kernel, що закінчується нульовим символом, записуються у відеопам'ять і кожен символ отримує attribute-byte, що дорівнює 0x07. Це має призвести до виведення рядка.

Компонування

Тепер ми повинні зібрати kernel.asm в об'єктний файл за допомогою NASM, а потім за допомогою GCC скомпілювати kernel.c в інший об'єктний файл. Наше завдання - об'єднати ці об'єкти в ядро, що придатне до завантаження. Для цього потрібно написати для компонувальника (ld) скрипт, який ми будемо передавати як аргумент.

link.ld
OUTPUT_FORMAT(elf32-i386) ENTRY(start) SECTIONS ( . = 0x100000; .text: ( *(.text) ) .data: ( *(.data) ) .bss: ( *(.bss) ) )

Тут ми спочатку задаємо формат (OUTPUT_FORMAT) нашого виконуваного файлу як 32-бітовий ELF (Executable and Linkable Format), стандартний бінарний формат для Unix-подібних систем для архітектури x86.

ENTRY приймає один аргумент. Він задає назву символу, який буде служити вхідною точкою файлу, що виконується.

SECTIONS – це найважливіша для нас частина. Тут ми визначаємо розкладку нашого файлу, що виконується. Ми можемо визначити, як різні секції будуть об'єднані і куди кожна буде поміщена.

У фігурних дужках, які йдуть за виразом SECTIONS, точка означає лічильник позиції (location counter). Він автоматично ініціалізується значенням 0x0 на початку блоку SECTIONS, але його можна міняти, призначаючи нове значення.

Раніше я вже писав, що код ядра повинен починатися на адресу 0x100000. Саме тому ми і привласнюємо лічильник позиції значення 0x100000.

Поглянь на рядок.text: (*(.text)). Зірочкою тут задається маска, під яку підходить будь-яка назва файлу. Відповідно, вираз *(.text) означає всі вхідні секції.text у всіх вхідних файлах.

В результаті компонувальник зіллє всі текстові секції всіх об'єктних файлів в текстову секцію файлу, що виконується, і розмістить за адресою, вказаною в лічильнику позиції. Секція коду нашого файлу, що виконується, буде починатися за адресою 0x100000.

Коли компонувальник видасть текстову секцію, значення лічильника позиції буде 0x100000 плюс розмір текстової секції. Так само секції data і bss будуть злиті і поміщені за адресою, яку задано лічильником позиції.

GRUB та мультизавантаження

Тепер усі наші файли готові до збирання ядра. Але оскільки ми завантажуватимемо ядро ​​за допомогою GRUB , залишається ще один крок.

Існує стандарт для завантаження різних ядер x86 за допомогою бутлоадера. Це називається "специфікація мультибуту". GRUB завантажуватиме лише ті ядра, які їй відповідають.

Відповідно до цієї специфікації ядро ​​може містити заголовок (Multiboot header) у перших 8 кілобайтах. У цьому заголовку має бути прописано три поля:

  • magic- містить «чарівне» число 0x1BADB002, яким ідентифікується заголовок;
  • flags- це поле для нас не важливе, можна залишити нуль;
  • checksum- контрольна сума повинна дати нуль, якщо додати її до полів magic і flags .

Наш файл kernel.asm тепер буде виглядати так.

kernel.asm
bits 32 section .text ;multiboot spec align 4 dd 0x1BADB002 ;magic dd 0x00 ;flags dd - (0x1BADB002 + 0x00) ;checksum

Інструкція dd визначає подвійне слово розміром 4 байти.

Збираємо ядро

Отже, все готове для того, щоб створити об'єктний файл із kernel.asm та kernel.c та злінкувати їх із застосуванням нашого скрипту. Пишемо в консолі:

$ nasm -f elf32 kernel.asm -o kasm.o

За цією командою асемблер створить файл kasm.o у форматі ELF-32 bit. Тепер настала черга GCC:

$ gcc -m32 -c kernel.c -o kc.o

Параметр -c вказує, що файл після компіляції не потрібно лінкувати. Ми це зробимо самі:

$ ld -m elf_i386 -T link.ld -o kernel kasm.o kc.o

Ця команда запустить компонувальник з нашим скриптом і згенерує файл під назвою kernel .

WARNING

Хакінг ядра найкраще займатися у віртуалці. Щоб запустити ядро ​​в QEMU замість GRUB, використовуй команду qemu-system-i386 -kernel kernel.

Налаштовуємо GRUB та запускаємо ядро

GRUB вимагає, щоб назва файлу з ядром слідувала конвенції kernel-<версия>. Так що перейменовуємо файл – я назву свій kernel-701.

Тепер кладемо ядро ​​в каталог /boot. На це знадобляться привілеї суперкористувача.

У конфігураційний файл GRUB grub.cfg потрібно буде додати щось таке:

Title myKernel root (hd0,0) kernel /boot/kernel-701 ro

Не забудь прибрати директиву hiddenmenu, якщо вона прописана.

GRUB 2

Щоб запустити створене нами ядро ​​в GRUB 2, яке за замовчуванням поставляється в нових дистрибутивах, твій конфіг має виглядати так:

Menuentry "kernel 701" (set root="hd0,msdos1" multiboot /boot/kernel-701 ro)

Дякую Рубену Лагуану за це доповнення.

Перезавантажуй комп'ютер, і ти маєш побачити своє ядро ​​у списку! А обравши його, ти побачиш той самий рядок.



Це і є твоє ядро!

Пишемо ядро ​​з підтримкою клавіатури та екрану

Ми закінчили роботу над мінімальним ядром, яке завантажується через GRUB, працює у захищеному режимі та виводить на екран один рядок. Настав час розширити його і додати драйвер клавіатури, який читатиме символи з клавіатури і виводити їх на екран.

Ми будемо спілкуватися з пристроями вводу-виводу через порти введення-виводу. По суті вони просто адреси на шині введення-виводу. Для операцій читання та записи у них існують спеціальні процесорні інструкції.

Робота з портами: читання та виведення

read_port: mov edx, in al, dx ret write_port: mov edx, mov al, out dx, al ret

Доступ до портів вводу-виводу здійснюється за допомогою інструкцій in і out, що входять до набору x86.

У read_port номер порту передається як аргумент. Коли компілятор викликає функцію, він кладе всі аргументи у стек. Аргумент копіюється в регістр edx за допомогою вказівника на стек. Регістр dx – це нижні 16 біт регістру edx. Інструкція in тут читає порт, номер якого заданий dx , і кладе результат al . Регістр al – це нижні 8 біт регістру eax. Можливо, ти пам'ятаєш із інститутського курсу, що значення, що повертаються функціями, передаються через регістр eax. Таким чином, read_port дозволяє нам читати з портів вводу-виводу.

Функція write_port працює подібним чином. Ми приймаємо два аргументи: номер порту та дані, які будуть записані. Інструкція out пише дані у порт.

Переривання

Тепер, перш ніж ми повернемося до написання драйвера, нам потрібно зрозуміти, як процесор дізнається, що якийсь із пристроїв виконав операцію.

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

За переривання в архітектурі x86 відповідає чіп під назвою Programmable Interrupt Controller (PIC). Він обробляє хардверні переривання та спрямовує та перетворює їх у відповідні системні переривання.

Коли користувач щось робить з пристроєм, PIC чіпу відправляється імпульс, званий запитом на переривання (Interrupt Request, IRQ). PIC переводить отримане переривання в системне перериванняі надсилає процесору повідомлення про те, що настав час зупинити те, що він робить. Подальша обробка переривань – це завдання ядра.

Без PIC нам би довелося опитувати всі пристрої, які є в системі, щоб подивитися, чи не відбулася подія за участю якогось з них.

Давай розберемо, як це працює у випадку із клавіатурою. Клавіатура висить на портах 0x60 та 0x64. Порт 0x60 віддає дані (коли натиснута якась кнопка), а порт 0x64 передає статус. Однак нам потрібно знати, коли саме читати ці порти.

Переривання тут припадають якомога до речі. Коли натиснута кнопка, клавіатура відправляє PIC сигнал по лінії переривань IRQ1. PIС зберігає значення offset, збережене під час його ініціалізації Він додає номер вхідної лінії до цього відступу, щоб сформувати вектор переривання. Потім процесор шукає структуру даних, що називається «таблиця векторів переривань» (Interrupt Descriptor Table, IDT), щоб дати функції - обробнику переривання адрес, відповідний його номеру.

Потім код за цією адресою виконується та обробляє переривання.

Задаємо IDT

struct IDT_entry( unsigned short int offset_lowerbits; unsigned short int selector; unsigned char zero; unsigned char type_attr; struct IDT_entry IDT; void idt_init(void) ( unsigned long keyboard_address; unsigned long idt_address; unsigned long idt_ptr; keyboard_address = (unsigned long)keyboard_handler; IDT.type_attr = 0x8e;/* INTERRUPT_GATE */ IDT.offset_higherbits = (keyboard_address & 0xffff0000) >> 16; 0x28), write_port(0x21 , 0x00); write_port(0xA1 , 0x01); )IDT ;idt_ptr = (sizeof (struct IDT_entry) * IDT_SIZE) + ((idt_address & 0xffff)<< 16); idt_ptr = idt_address >> 16; load_idt(idt_ptr); )

IDT - це масив, який би структури IDT_entry. Ми ще обговоримо прив'язку клавіатурного переривання до обробника, а зараз подивимося, як PIC працює.

Сучасні системи x86 мають два чіпи PIC, у кожного вісім вхідних ліній. Будемо називати їх PIC1 та PIC2. PIC1 отримує від IRQ0 до IRQ7, а PIC2 – від IRQ8 до IRQ15. PIC1 використовує порт 0x20 для команд та 0x21 для даних, а PIC2 - порт 0xA0 для команд та 0xA1 для даних.

Обидва PIC ініціалізуються восьмибітними словами, які називаються командні слова ініціалізації (Initialization command words, ICW).

У захищеному режимі обом PIC насамперед потрібно віддати команду ініціалізації ICW1 (0x11). Вона повідомляє PIC, що слід чекати ще трьох ініціалізаційних слів, які прийдуть на порт даних.

Ці команди передадуть PIC:

  • вектор відступу (ICW2),
  • які між PIC відносини master/slave (ICW3),
  • додаткову інформацію про оточення (ICW4).

Друга команда ініціалізації (ICW2) теж надсилається на вхід кожного PIC. Вона призначає offset , тобто значення, якого ми додаємо номер лінії, щоб отримати номер переривання.

PIC дозволяють каскадне перенаправлення їх висновків на введення один одного. Це робиться за допомогою ICW3 і кожен біт представляє каскадний статус для відповідного IRQ. Зараз ми не будемо використовувати каскадний перенапрямок та виставимо нулі.

ICW4 визначає додаткові параметри оточення. Нам потрібно визначити лише нижній біт, щоб PIC знали, що ми працюємо як 80x86.

Та-дам! Тепер PIC проініціалізовані.

У кожного PIC є внутрішній восьмибітний регістр, який називається регістр масок переривань (Interrupt Mask Register, IMR). У ньому зберігається бітова карта ліній IRQ, які у PIC. Якщо біт заданий, PIC ігнорує запит. Це означає, що ми можемо увімкнути або вимкнути певну лінію IRQ, виставивши відповідне значення 0 або 1.

Читання з порту даних повертає значення регістрі IMR, а запис - змінює регістр. У нашому коді після ініціалізації PIC ми виставляємо всі біти в одиницю, ніж деактивуємо всі лінії IRQ. Пізніше ми активуємо лінії, які відповідають клавіатурним перериванням. Але для початку все ж таки виключимо!

Якщо лінії IRQ працюють, наші PIC можуть отримувати сигнали IRQ і перетворювати їх у номер переривання, додаючи офсет. Нам потрібно заповнити IDT таким чином, щоб номер переривання, що прийшов з клавіатури, відповідав адресою функції-обробника, яку ми напишемо.

На який переривання нам потрібно зав'язати в IDT обробник клавіатури?

Клавіатура використовує IRQ1. Це вхідна лінія 1, що її обробляє PIC1. Ми проініціалізували PIC1 з офсетом 0x20 (див. ICW2). Щоб отримати номер переривання, потрібно скласти 1 та 0x20, вийде 0x21. Отже, адреса обробника клавіатури буде зав'язана в IDT на переривання 0x21.

Завдання зводиться до того, щоб заповнити IDT для переривання 0x21. Ми замапимо це переривання на функцію keyboard_handler, яку напишемо в асемблерному файлі.

Кожна запис IDT складається з 64 біт. У записі, який відповідає перериванню, ми не зберігаємо адресу функції-обробника повністю. Натомість ми розбиваємо його на дві частини по 16 біт. Нижні біти зберігаються в перших 16 біт запису в IDT, а старші 16 біт - в останніх 16 біт запису. Все це зроблено для сумісності з 286 процесорами. Як бачиш, Intel виробляє такі номери на регулярній основі і в багатьох місцях!

У записі IDT нам залишилося прописати тип, позначивши таким чином, що це робиться, щоб відловити переривання. Ще нам потрібно поставити офсет сегмента коду ядра. GRUB ставить GDT за нас. Кожен запис GDT має довжину 8 байт, де дескриптор коду ядра - це другий сегмент, так що його офсет становитиме 0x08 (подробиці не влізуть у цю статтю). Гейт переривання представлений як 0x8e. Ті, що залишилися в середині 8 біт заповнюємо нулями. Таким чином, ми заповнимо запис IDT, який відповідає клавіатурному перериванню.

Коли з мапінг IDT буде покінчено, нам треба буде повідомити процесору, де знаходиться IDT. І тому існує асемблерна інструкція lidt, вона приймає один операнд. Їм служить покажчик на дескриптор структури, яка визначає IDT.

З дескриптором жодних складнощів. Він містить розмір IDT у байтах та його адресу. Я використав масив, щоб вийшло компактніше. Так само можна заповнити дескриптор за допомогою структури.

У змінній idr_ptr ми маємо вказівник, який ми передаємо інструкції lidt у функції load_idt() .

Load_idt: mov edx, lidt sti ret

Додатково функція load_idt() повертає переривання під час використання інструкції sti .

Заповнивши та завантаживши IDT, ми можемо звернутися до IRQ клавіатури, використовуючи маску переривання, яку ми говорили раніше.

Void kb_init(void) ( write_port(0x21 , 0xFD); )

0xFD - це 11111101 - включаємо лише IRQ1 (клавіатуру).

Функція – обробник переривання клавіатури

Отже, ми успішно прив'язали переривання клавіатури до функції keyboard_handler створивши запис IDT для переривання 0x21. Ця функція буде викликатися щоразу, коли ти натискаєш якусь кнопку.

Keyboard_handler: call keyboard_handler_main iretd

Ця функція викликає іншу функцію, написану на C, та повертає керування за допомогою інструкцій класу iret. Ми могли б тут написати весь наш обробник, але на C кодити значно легше, так що перекочуємося туди. Інструкції iret/iretd потрібно використовувати замість ret , коли управління повертається з функції, що обробляє переривання, програму, виконання якої було ним перервано. Цей клас інструкцій піднімає прапорний регістр, який потрапляє у стек під час виклику переривання.

Void keyboard_handler_main(void) ( unsigned char status; char keycode; /* Пишемо EOI */ write_port(0x20, 0x20); status = read_port(KEYBOARD_STATUS_PORT); /* Нижній біт статусу буде виставлений, якщо буфер не біт & 0x01) ( keycode = read_port(KEYBOARD_DATA_PORT); if(keycode< 0) return; vidptr = keyboard_map; vidptr = 0x07; } }

Тут спочатку даємо сигнал EOI (End Of Interrupt, закінчення обробки переривання), записавши їх у командний порт PIC. Тільки після цього PIC дозволить подальші запити на переривання. Нам потрібно читати два порти: порт даних 0x60 та порт команд (він же status port) 0x64.

Насамперед читаємо порт 0x64, щоб отримати статус. Якщо нижній біт статусу - це нуль, це означає, що буфер порожній і даних для читання немає. В інших випадках ми можемо прочитати порт даних 0x60. Він видаватиме нам код натиснутої кнопки. Кожен код відповідає одній кнопці. Ми використовуємо простий масив символів, заданий у файлі keyboard_map.h для прив'язування кодів до відповідних символів. Потім символ виводиться на екран за допомогою тієї ж техніки, що ми застосовували у першій версії ядра.

Щоб не ускладнювати код, я тут обробляю лише малі літери від a до z та цифри від 0 до 9. Ти з легкістю можеш додати спецсимволи, Alt, Shift та Caps Lock. Дізнатися, що клавіша була натиснута або відпущена, можна вивести командний порт і виконувати відповідну дію. Так само можеш прив'язати будь-які сполучення клавіш до спеціальних функцій на кшталт вимкнення.

Тепер ти можеш зібрати ядро, запустити його на реальній машині або емуляторі (QEMU) так само, як і в першій частині.

Самі запити можна поділити на три групи:

  1. Первинні запитихарактеризують сайт загалом. Наприклад, для мого сайту: заробіток вдома, заробіток в інтернеті, робота в інтернеті.
  2. Основні запитивходять у семантичне ядро ​​і з них варто просувати сайт. Наприклад: заробіток в інтернеті без вкладень, робота в інтернеті для мам.
  3. Допоміжні запитичи асоціативні, тобто. схожі за змістом із основними. Наприклад, ким працювати у декреті, підробіток для мами у декреті.

Складаємо семантичне ядро ​​своїми руками онлайн

wordstat.yandex.ruсамий доступний спосібдо створення СЯ. На цьому сайті показується, скільки разів на місяць люди вбивають у пошук ту чи іншу фразу (ключовий запит).

Працювати досить просто – в головне поле введіть первинний запит, який охарактеризує сайт загалом або потрібну сторінку/розділ сайту. Наприклад, «заробіток в інтернеті».

Зліва ви отримаєте список основних запитів (заробіток в інтернеті без вкладень) та допоміжних (заробіток у мережі, додатковий дохід).

Майте на увазі, що дані цифри показують скільки разів зустрічався даний запит, але не саме у такому вигляді. Так, наприклад, люди шукали не заробіток без вкладень, а заробіток в інтернеті без вкладень, заробіток грошей без вкладень тощо.

Щоб зрозуміти, скільки разів люди шукали конкретну фразу, потрібно взяти її в лапки і поставити на початку знак оклику: «!заробіток без вкладень». Значення стало у кілька разів менше, але ви знаєте точну частотність, тобто. скільки людей вбивають у пошук саме цю фразу.

Аналогічним чином відбувається підбір ключових запитівдля гугла (Google.Adwords) та рамблера (Rambler.Adstat). Інші пошукові системи надто незначні, щоб підбирати під них запити.

Але погодьтеся, вручну підбирати всі ці запити дуже складно, нудно і довго. Тому краще скористатися програмами.

Складаємо семантичне ядро: програми

  1. На верхній панелінатисніть на шестірню і зайдіть в налаштування. Тут багато всього можна підлаштувати під себе, але зараз перейдіть до останню вкладку Yandex.Direct;
  2. Введіть логін і пароль від Яндекса (створіть додаткову скриньку, тому що його можуть забанити);
  3. Натисніть створити новий проект, назвіть та збережіть його;
  4. Натисніть «Пакетний збір слів з лівої колонки Yandex Wordstat»;
  5. Внесіть первинний запит і пару основних, потім натисніть Почати збір;
  6. Перегляньте видачу і позначте галочкою всі, які не підходять для вас, потім клацніть правою кнопкоюмиші та Видалити зазначені рядки;
  7. Натисніть «Збір частотності із сервісу Yandex.Wordstat» — Збирати частотність «!».
  8. Орієнтуйтеся саме на стовпець «Частотність!» - це конкретна кількість запитів саме цієї фрази (на місяць). Можна відфільтрувати за зростанням, і відразу відкинути всі КЗ із частотністю нижче 30 – це лише 1 запит на день.
  9. Експортуйте дані до Excel – натисніть на верхній панелі відповідний значок.

платна програма(близько 1700 рублів). З ним працюють професійні сеошники. Якщо ви хочете просто підібрати СЯ для невеликого блогу і все, не варто платити такі гроші за програму, краще використовувати Слово. Найчастіше її купують досвідчені блогери з безліччю сайтів або веб-райтери, що займаються сео-статтями.

Працювати з програмою дуже просто:

  1. Розпочати новий проект;
  2. Вибрати регіон Росія + СНД (або інше);
  3. Введіть пошуковий запит і натисніть на кнопку Яндекс.Вордстат (1 виділена зелена кнопка);
  4. Перегляньте варіанти та виберіть відповідні;
  5. Перенесіть відповідні запити у 2 та 3 кнопки, виділені зеленим на скріні;
  6. Отримайте відповідні ключі.

Сама програма досить проста у використанні + є інструкції в Інтернеті. За бажання можна купити та користуватися.

Складаємо семантичне ядро ​​своїми руками

Підберіть вищезазначеними способами відповідні ключові запити. Не варто одразу набирати 2000, можна обмежитись 200 запитами, а потім розвивати. Посидіть та подумайте, які ключі можна використовувати та складіть повний список. Вам потрібно набрати ключі для першої сторінки та ще кількох статей.

Відсійте слова та запити, за якими ви не плануєте просуватися. У мене часто трапляються запити на кшталт «робота вдома Перм» або в інших містах, тому їх відразу викидаю. Оцінюйте відразу – що хочуть отримати люди на цей запит і чи зможете ви це дати?

Забирайте висококонкурентні запити, за якими ви не зможете пробитися до ТОП10. У разі виникнення сумнівів подивіться на сайті Мутаген рівень конкуренції. Ну чи вручну оцінюйте видачу – популярні запити видно одразу.

Розподіліть запити по сайту. Середньочастотні запити йдуть на головну сторінку, низькочастотні згрупуйте за змістом та використовуйте у статтях або розділах. Використовуйте їх як ключові словау статтях (1 середньочастотний головний, пара низькочастотних у статті та підзаголовках, та розбавте за текстом допоміжними). Вписуйте в середньому 1-2 ключі на 2000 знаків, не частіше.

Деякі не створюють СЯ і все одно досягають успіху. Але краще знати, як скласти семантичне ядро ​​своїми руками, програми для підбору слів зроблять це на автоматі (словоб). А вам потім буде набагато простіше розвиватися і писати статті.

Вітаю вас, дорогі мої читачі!

Я впевнений, що багато хто з вас не те, що б не чув, а навіть і не здогадується, що є таке поняття як семантичне ядро! І що це таке запитаєте ви? - Постараюся пояснити вам простими словами. Семантичне ядро ​​– це набір ключових слів, словосполучень, простих речень, фраз тощо, які видає пошукова система (далі – ПС) під час введення вами запиту в рядку браузера.

Навіщо потрібне семантичне ядро? Семантичне ядро ​​сайту - це основа просування та розкрутки, воно необхідне для внутрішньої оптимізації. Без семантичного ядрапросування вашого проекту (сайту) буде неефективним. Чим грамотніше складено семантичне ядро ​​сайту, тим менше грошей вам знадобиться для його успішного просування. Нічого поки не зрозуміло, адже? Не лякайтеся, далі я постараюся, як можна докладно розкласти все по поличках. Читайте уважно і все зрозумієте!

Як скласти семантичне ядро!

Перше, що вам необхідно зробити після того, як ви визначилися з тематикою блогу, скласти семантичне ядро. Для цього потрібно взяти зошит та ручку та записати всі слова, словосполучення, речення, які характеризують тематику вашого блогу. Кожне слово, словосполучення або речення це, по суті, будуть майбутні заголовки для ваших постів, і чим більше слів ви придумаєте, тим надалі у вас буде більший вибір при написанні статей.

А щоб скласти солідний список (200-300 слів) у вас на це піде чимало часу. Тому для зручності ми скористаємося спеціальними сервісами, такими як Yandex wordstat, Google adwords, Rambler adstat, вони нам значно спростять завдання при . Звичайно, можна було б обійтися лише Yandex та Google, т.к. це гіганти в пошуку ключових запитів у порівнянні з Rambler, але статистика говорить про те, що 5-6% людей все ж таки використовують як пошукову систему Rambler, тому не будемо її нехтувати.

Що б вам було набагато легше освоїти матеріал, показуватиму все на конкретних прикладах. Погодьтеся, теорія це добре, але коли справа доходить до практики у багатьох починаються проблеми. Тому ми з вами разом складемо семантичне ядро, щоб надалі ви з легкістю змогли перенести отримані знання та досвід на тематику вашого блогу. Допустимо, тема вашого блогу «фотошоп » і все, що з ним пов'язане. Тому як було написано вище, ви повинні придумати і записати в зошит якнайбільше слів, словосполучень, фраз, виразів - можете як завгодно їх називати. Ось ті слова, які у мене характеризуються тематикою блогу про фотошоп. Звичайно ж, я не перераховуватиму весь список слів, а лише частину, щоб вам був зрозумілий сам сенс складання семантичного ядра:

кисті для фотошоп
кисті для photoshop
кисті фотошоп
кисті photoshop
ефекти фотошоп
ефекти photoshop
фотоефект
малюнки фотошоп
малюнки photoshop
колаж
фотоколаж
фотомонтаж
рамки для світлин
фото дизайн

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

Статистика ключових слів Yandex wordstat

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

Далі ви бачите, що в Yandex wordstat є два стовпці. Стовпець ліворуч показує вам, що шукали люди, вбиваючи, в пошуковий рядок, у нашому випадку фразу «кисті для фотошоп». Правий стовпець показує, що ще шукали люди, які шукали фразу «пензля для фотошоп», раджу вам не ігнорувати правий стовпець, а вибрати з нього всі слова, які підходять для вашої тематики.

Добре, з цим теж розібралися, йдемо далі. Ще один дуже важливий момент, як ви бачите за результатом пошуку «пензлики для фотошоп» ми спостерігаємо величезну цифру 61134 запиту! Але це не означає, що фразу «кисті для фотошоп» вбивали стільки разів на місяць у пошуковий рядок Яндекс. Yandex wordstat влаштований таким чином, що якщо допустимо вбити словосполучення «пензля для фотошоп» він вам видасть кількість запитів, яке означатиме, скільки разів люди шукали будь-які словоформи (кисті фотошоп, кисті для фотошоп а, кіст ьфотошопа і.т.д.), словосполучення (пропозиції) (безкоштовні кисті для фотошоп, скачати кисті фотошоп безкоштовно і т.д.), в яких є фраза «кисті для фотошоп». Я думаю, це теж зрозуміло.

Для того щоб Yandex wordstat видавав нам (щодо) точну кількість запитів, існують спеціальні оператори, такі як («», «!»). Якщо ви вводите словосполучення «пензлі для фотошоп» у лапках, ви побачите зовсім іншу цифру, яка вам показує скільки разів люди шукали словосполучення «кисті для фотошоп» у різних словоформах (кисті для фотошоп аі т.д.).

При введенні словосполучення «! кисті! для! фотошоп» у лапках і з знаком окликуми отримаємо точну кількість запитів «!кисті!для!фотошоп» у вигляді як він є, тобто. без будь-яких відмін, словоформ і словосполучень. Я думаю, ви зрозуміли сенс, розжував як зміг.

Так ось після того як у вас сформувався значний список в excel, вам необхідно застосувати до кожного слова (словосполучення) оператор «!». Коли ви все зробите, у вас з'явиться список з точним числом запитів на місяць, який потрібно буде знову підкоригувати.

Але про це трохи пізніше, після того, як ми розглянемо дві інші системи підбору ключових слів (Google adwords і Rambler adstat). Оскільки після їх розгляду ваш список ключових слів суттєво поповниться.

Добір ключових слів Google adwords

Для підбору ключових слів також використовують Google adwords, це аналогічний сервіс з Yandex wordstat. Давайте так само перейдемо ось. Перед нами відкриється вікно вибору ключових слів Google Adwords. Так само вбиваємо у пошуковому рядку першу фразу з нашого списку «пензлі для фотошоп». Зверніть увагу, що в Google adwords немає жодних операторів, а достатньо поставити галочку напроти слова [Точне] у стовпці Типи відповідності. Як бачимо, кількість запитів/на місяць у Google adwords істотно відрізняється від Yandex wordstat. Це говорить про те, що все ж таки більше людей використовують пошукову систему Yandex. Але якщо переглянути весь список, то можна знайти ключові слова, які Yandex wordstat взагалі не показує.

Також у Google adwords можна дізнатися ще багато чого цікавого (наприклад, приблизна ціна за клік), що також слід враховувати під час відбору ключових слів. Чим більша ціна за клік – тим більш конкурентний запит. Детально зупинятися тут я не буду, принцип відбору ключових слів схожий на Yandex wordstat і трохи покопавшись, ви й самі зможете з усім розібратися. Йдемо далі.

Статистика пошукових запитів Rambler adstat

Як я вже згадував вище, що Rambler adstat набагато поступається двом попереднім сервісам, але все ж таки з нього теж можна, почерпнути деяку інформацію. Давайте так само перейдемо ось і введемо в пошуковому рядку першу фразу з нашого списку «пензлі для фотошоп». Тут я думаю, теж докладно не варто зупинятися. Повторюся ще раз принцип відбору ключових слів у всіх трьох систем схожий.

Ми з вами ознайомилися з трьома сервісами щодо підбору ключових слів. У результаті у вас з'явився величезний список, сформований з усіх трьох сервісів, в якому ви вже зробили відбір за тими запитами, за якими ви не плануєте просуватися і запитам дублерам. Про це я вже писав вище. Але це лише півдорозі у складанні семантичного ядра. У вас, напевно, вже закипіли мізки, але насправді якщо це вникнути і розібратися, то тут немає нічого складного. Повірте, краще один раз правильно скласти семантичне ядро, ніж надалі доведеться все виправляти. А виправляти набагато складніше, аніж робити все з нуля. Тому запасіться терпінням і йдемо далі.

ВЧ, СЧ та НЧ запити або ВЧЗ, СЧЗ та НЧЗ

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

Тепер запам'ятайте один дуже важливий момент. На початковому етапірозвитку блогу, його слід просувати лише за НЧ запитами, іноді використовують і СЧ запити, це залежатиме від конкурентності запиту. За ВЧ запитами ви навряд чи зможете, у вас просто не вистачить на це грошей. Не лякайтеся за НЧ запитами вийти в ТОП можливо та без вкладення коштів. У вас швидше за все постало питання, а які запити вважати ВЧ запитами, СЧ запитами та НЧ запитами?

Тут точна відповідь я думаю, не може дати ніхто! У блогів різних тематик він буде різним. Є тематики дуже популярні, в яких точна кількість запитів («!») досягає 20 тис. показів/на місяць і більше (наприклад, «! уроки! фотошопу»), а є менш популярні, в яких точна кількість запитів не досягає і 2000 показів/на місяць (наприклад «! уроки! англійської»).

Я в цьому випадку дотримуюся простої формули, яку вирахував для себе, продемонструю на прикладі «! Уроки! Фотошопу»:

ВК, СК та НК запити ВКЗ, СКЗ та НКЗ

За повз ВЧ, СЧ та НЧ запитів існує ще одна категорія. Це високо конкурентні (ВК), середньо конкурентні (СК) та низько конкурентні (НК) запити, також можуть зустрічатися ВКЗ, СКЗ та НКЗ. В цьому випадку нам потрібно буде визначити конкурентність тих запитів, за якими ми плануємо просуватися в ТОП, але про це буде окрема посада, на тему «». . А поки що давайте вважати, що ВЧ запити є ВК запитами, СЧ – СК та НЧ – ПК. Найчастіше ця формула працює, але бувають винятки, коли наприклад НЧ запити є високо конкурентними (ВК) і навпаки ВЧ запити є НК. Все залежить від тематики блогу.

Схема складання семантичного ядра

Для наочності давайте подивимося на схематичний приклад семантичного ядра. Приблизно так має виглядати стандартна схема семантичного ядра.

Але не варто прив'язуватися до цієї схеми, т.к. у міру ведення блогу вона може змінюватися. На початковому етапі у вас можливо, допустимо всього чотири рубрики, що містять по три НЧ запити, а згодом може все змінитися.

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

Відразу хочу сказати, що я не фахівець у «фотошопі», просто ця тема мені спала на думку при написанні посту. Тому я підбирав запити за змістом. Добре, яка схема семантичного ядра в мене вийшла на тему «фотошоп». У вас має вийти щось на кшталт:

Види запитів

Всі запити (наші ключові слова) можна розділити на три категорії:

  • Первинні запити– це запити, які одним-двома словами можуть дати загальне визначеннявашого ресурсу чи його частини. Первинні запити, що найбільше охоплюють загальну тематику вашого блогу, краще залишити на головній сторінці. У нашому випадку це: уроки фотошоп, ефекти фотошоп, як зробити фотоколаж.
    Первинні запити, що менш охоплюють загальну тематику вашого блогу, але найбільш точно характеризують його якусь частину, рекомендується використовувати як окремі рубрики вашого блогу. У нашому випадку це: кисті фотошоп, фотошоп рамки, шаблони фотошоп, фото дизайн.
  • Основні запити- Це ті запити, які досить точно визначають тематику вашого проекту і здатні дати корисну інформацію читачеві, навчити його тому, що він хоче, або відповісти на запитання, що часто задається? Тобто, в нашому випадку це: як додати кисті у фотошопі, як зробити шаблон у фотошопі, як зробити фотоколаж у фотошопі і т.д. Основні запити, по суті, мають бути заголовками наших майбутніх статей.
  • Додаткові (допоміжні) запити або ще їх називають асоціативними– це запити, які люди вводили в пошуковий рядок браузера при пошуку основного запиту. Тобто. це ключові фрази, що є частиною основного запиту. Вони будуть доповнювати основний запит, і є ключовими словами при просуванні її в ТОП. Наприклад: фотошоп для початківців онлайн, фотошоп прибрати ефект червоних очей, колаж із кількох фотографій. Я думаю, це зрозуміло.

Стратегія складання семантичного ядра

Тепер нам необхідно розбити весь список сторінок. Тобто. потрібно зі всіх ваших ключових слів вибрати первинні запити, які будуть рубриками вашого блогу і зробити окремі вкладкиу excel. Далі, вибрати основні та допоміжні запити, що відносяться до них, і розмістити їх по різним сторінкаму створеному вами документі excel (тобто за рубриками). Ось що в мене вийшло:

Як я вже писав вище: на початковому етапі варто просувати свій блог за НЧ або ПК запитами. А що ж робити із СЧ (СК) та ВЧ (ВК) запитами, запитаєте ви? Пояснюю.

Просуватися по ВЧ (ВК) запитам у вас навряд чи вийде, тому їх можна видалити, але рекомендується залишити один-два ВЧ (ВК) запиту головної сторінки. Відразу ж обмовлюся: не треба кидатися на самий ВЧ запит, такий як «фотошоп», у якого точне число показів/на місяць становить – 163384. Наприклад, ви хочете за допомогою вашого блогу навчити людей роботі у фотошопі. Ось і візьміть за основу ВЧ запиту – «уроки фотошоп», у якого точне число показів/на місяць становить – 7110. Цей запит характеризує вашу тему і по ньому вам буде легше просунутися.

А ось СЧ (СК) запити можна помістити на окремій сторінці Excel. У міру того як ваш блог буде підніматися в очах ПС вони (СЧ (СК) запити) будуть потроху ставати затребуваними.

Я знаю, що новачки зараз взагалі не розуміють, про що я говорю, раджу вам почитати статтю про те, вивчивши яку вам стане все зрозуміло.

Висновок

Ось у принципі, мабуть, і все. Звичайно ж, є програми, які допоможуть вам складанні семантичного ядраяк платні (Key Kollektor), так і безкоштовні (Словоєб, Словодер), але про них я писати в цьому пості не буду. Можливо, якось напишу про них окрему статтю. Але вони вам тільки підберуть ключові слова, а рознести їх за рубриками і за постами вам доведеться самостійно.

А як ви складаєте семантичне ядро? А може ви його взагалі не складаєте? Які використовуєте програми та послуги при складанні? Радий почути ваші відповіді у коментарях!

І насамкінець подивіться цікаве відео.

Семантичне ядро ​​сайту – це список запитів, за якими ви плануєте просувати сайт у пошукових системах. Запити з семантичного ядра групуються на сторінках сайту. Готова семантика для сайту включає запити кожної сторінки сайту, яка буде просуватися.

Основні правила складання семантичного ядра

  1. За одним запитом просувається лише одна сторінка. Не допускається, щоб одному запиту відповідали дві або більше сторінок на сайті – в іншому випадку пошукові системи можуть вибрати для показу на запит не ту сторінку, яка просувається.
  2. Сторінка має відповідати на запит користувача. Наприклад, якщо запит включає слово «ціни» – на сторінці, що просувається, повинні бути вказані ціни на товар. Якщо ви просуваєте сторінку на запит «калькулятор каско» – на сторінці має бути форма розрахунку вартості КАСКО.
  3. Семантичне ядро ​​має включати високо, середньо та низько-частотнізапити. Необхідно знайти максимальну кількість відповідних запитів, інакше ви не отримаєте повної віддачі від просування.
  4. При групуванні запитівв одну групу необхідно включати запити, якими реально просувати одну сторінку. Для цього подивіться, чи є результати пошуку сторінки, які знаходяться в ТОП-10 за обраними вами запитами. Якщо таких сторінок немає – запити слід розводити по різних групах.
  5. Перевірте вплив «Спектру» в Яндексі. Може виявитись, що для вашої теми «Спектр» залишив у ТОПі не 10 місць, а лише 1 або 2 – конкуренція за них посилюється. Також є запити, за якими необхідно виводити в ТОП інформаційні статті, а сторінку з комерційною інформацією не вийде.
  6. Увага, реклама та чаклунники!У конкурентних тематиках у результатах пошуку може бути багато реклами Директу та чаклунів, які зміщують результати пошуку сильно вниз і знижують віддачу від знаходження в ТОПі. Приклад такого запиту: «авіаквитки купити» (див. скріншот нижче та спробуйте знайти на екрані органічну видачу).

Скільки запитів має містити семантичне ядро?

Максимально можлива кількість – в ідеалі всі запити, які є у вашій тематиці та підходять вам (тобто за цими запитами ваш сайт може відповісти).

Як правило, невеликі та середні сайти мають семантичне ядро ​​з кількох сотень – тисяч запитів. Великі проекти можуть просуватися за десятками та сотнями тисяч запитів.

Наприклад, наш блог про просування сайтів сайт отримує переходи з пошукових систем більш ніж за 2000 різних запитів на місяць.

Приклад простого семантичного ядра для SEO-блогу

Цей приклад навчальний і відбиває суть угруповання, але є реальним семядром будь-якого проекту.

Як можна зібрати семантичне ядро?

  1. Копіювати у конкурентів. В даному випадку вибирається 2-3 сайти конкурентів і через спеціальні програмивикачується інформація, за якими запитами їхні сайти знаходяться у ТОП-10. Наприклад, безкоштовно отримати таку інформацію можна за допомогою сервісу Seopult.ru. Як сайти конкурентів можна вибирати найпопулярніші сайти в тематиці або сайти компаній, асортимент яких максимально близький до вашого проекту.
    Плюси способу:економія часу на створенні семантичного ядра, відносна простота та безплатність.
    Мінуси способу:велика кількість «сміттєвих» запитів, отримані дані потрібно фільтрувати та додатково обробляти, є ризик копіювання помилок конкурентів. У семантику не пропадуть запити, які з якихось причин конкуренти не вибрали чи не знайшли.
  2. Просувати запити, близькі до ТОПу. Просування сайту за запитами, позиції за якими близькі до ТОПу. Цей спосібпідходить тільки для старих сайтів, які раніше просувалися. Через системи з п.1 збирається інформація, за якими запитами проект знаходиться в ТОП-30 і ці запити включаються в семантичне ядро.
    Плюси способу: економія часу та бюджету замовника. Швидша віддача від просування.
    Мінуси способу: цей підхід дозволяє зібрати мінімальну кількість запитів. Надалі семантичне ядро ​​необхідно розширювати. Немає гарантій, що всі запити, які будуть отримані, є ефективними для бізнесу клієнта.
  3. Створити семантичне ядро ​​"з нуля". Семантика формується, виходячи з глибокого аналізузапитів, за якими можуть шукати товари, послуги або інформацію, що просуваються.
    Плюси способу: збір максимальної кількостізапити для максимально ефективного просування.
    Мінуси способу: довго та дорого.

Етапи складання семантичного ядра для сайту "з нуля"

  1. Аналіз проекту. В рамках аналізу необхідно скласти повний перелікпослуг, категорії товарів або типів інформації, представленої на сайті клієнта. На цьому етапі також аналізується потенційний клієнт компанії. Наприклад, якщо компанія бажає продавати товари в преміальному сегменті - немає сенсу пропонувати для просування запити зі словом "дешево". Оптимально все виписувати на листок, ще краще формувати таблиці в Excel.
  2. Мозковий штурм. На даному етапі команда проекту складає перелік запитів, за якими, на думку учасників команди, можуть шукати кожен товар, послугу або тип інформації на сайті клієнта. До мозкового штурму можна залучати клієнта та сторонніх людей, не пов'язаних із SEO, і ставити їм питання, як вони шукатимуть ту чи іншу інформацію в мережі – які запити ставити тощо. Люди дуже різні і часом вони шукають інформацію за такими запитами – за якими жоден фахівець не здогадається! Корисно вивчити тексти на сайті клієнта і конкурентів - як правило, в них містяться частини пошукових запитів, різні назви одних і тих же товарів - тобто, по суті, всі комбінації слів і фраз, за ​​якими їх можуть шукати через пошукові системи.
  3. Викачування пошукових запитів з інших джерелнаприкінці статті будуть дані посилання на найбільш корисні програмидля вирішення цього завдання):
    • Статистика запитів в Яндексі та Google;
    • Пошукові підказки у пошукових системах;
    • Статистика переходів на сайт із пошукових систем (якщо сайт має трафік);
    • Ключові запити конкурентів;
    • База Пастухова містить близько 800 млн. запитів, які задавали користувачі пошукових систем. База постійно оновлюється та доповнюється. Платне.
  4. Фільтрування запитів, видалення дублів та «порожніх» фраз. На цьому етапі поєднуються списки запитів, отриманих із різних джерел. З цього списку видаляються дублі та «порожні» запити. Такими вважаються фрази, якщо за введенні в лапках у системах статистики пошукових систем видається нульова частота. Докладніше про визначення частоти запитів.
  5. Угруповання запитів. На даному етапі з усіх запитів виділяються групи, за якими будуть просуватися окремі розділи та сторінки сайту. Якщо на вашому сайті немає відповідних сторінок для просування певних груп запитів – такі сторінки необхідно створити.
  6. Подумати ще. Іноді корисно після створення семантичного ядра відпочити 1-2 дні і знову повернутись до цього питання – поглянути на всю зібрану інформацію свіжим поглядом. Іноді з'являються нові ідеї, як люди шукають інформацію через пошукові системи – і виходить розширити семантичне ядро.

Тестування семантичного ядра

Якщо ви підібрали семантичне ядро ​​для сайту, його бажано протестувати. Зробити це за допомогою запуску тестової рекламної кампанії у системі контекстної реклами. Це дорого, але дозволить визначити найефективніші запити і, можливо, відсіяти запити – які не приносять великих продажів.

Докладніше про тестування семантичного ядра можна прочитати у статті п'ять причин купувати контекстну рекламу.

Розвиток семантики сайту

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

У коментарях ви можете поставити запитання, як створити семантичне ядро ​​– ми по можливості допоможемо та відповімо.

Корисні сайти та сервіси для підбору семантичного ядра:

  • Wordstat.yandex.ru – інструмент для перегляду статистики запитів у Яндексі;
  • Rush-analytics.ru – сервіс дозволяє збирати великі ядра на основі даних Яндекс.Wordstat та збору пошукових підказок в Яндексі та Google. Дають приємний бонус під час реєстрації в системі.
  • Topvisor.ru – сервіс дозволяє автоматично згрупувати запити із семантичного ядра. Можна встановити точність угруповання, яка впливає на кількість запитів в одній групі.
  • Advse.ru - інструмент, який дозволяє подивитися, за якими запитами конкуренти виводять контекстну рекламу(за тими ж запитами можна просуватися)
  • Бази Пастухова – величезна база запитів пошуковій системіЯндекс на момент написання статті складалася з 800 млн. запитів.
  • Seopult.ru - інструмент, що дозволяє безкоштовно переглянути позиції свого сайту або конкурентів у результатах пошуку. Для перегляду позицій необхідно зареєструватися в системі, створити проект та дійти до етапу вибору ключових слів.

Семантичне ядро ​​сайту – це повний набірключових слів, які відповідають тематиці веб-ресурсу, за якими користувачі зможуть знайти його в пошуковій системі.


Більше відео на нашому каналі - вивчайте інтернет-маркетинг із SEMANTICA

Наприклад, казковий персонаж баба Яга матиме наступне семантичне ядро: баба Яга, баба Яга казки, баба Яга російські казки, баба зі ступою казки, баба зі ступою і мітлою, зла баба чарівниця, баба хатинка курячої ніжки і т.д.

Навіщо сайту семантичне ядро

Перед початком робіт з просування вам необхідно знайти всі ключі, якими його можуть шукати цільові відвідувачі. На підставі семантики складається структура, розподіляються ключі, прописуються метатеги, заголовки документів, описи до зображень, а також розробляється анкор-лист для роботи з масою посилань.

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

Складання списку ключів вирішує ще одне важливе завдання: для кожної пошукової фрази ви визначаєте релевантну сторінку, яка зможе відповісти на запитання користувача.

Це завдання вирішується двома шляхами:

  • Ви створюєте структуру сайту на основі семантичного ядра.
  • Ви розподіляєте підібрані терміни готової структури ресурсу.

Види ключових запитів (КЗ) за кількістю переглядів

  • НЧ – низькочастотні. До 100 показів на місяць.
  • СЧ – середньочастотні. Від 101 до 1000 показів.
  • ВЧ – високочастотні. Понад 1000 показів.

За статистикою, 60-80% всіх фраз та слів відносяться до НЧ. Працювати при просуванні з ними дешевше та простіше. Тому ви повинні скласти максимально об'ємне ядро ​​фраз, яке постійно доповнюватиметься новими НЧ. ВЧ та СЧ також не варто ігнорувати, але основний наголос робіть на розширення списку низькочастотників.

Види КЗ за типом пошуку

  • Інформаційні необхідні при пошуку інформації. "Як смажити картоплю" або "скільки зірок на небі".
  • Транзакційні використовуються для здійснення дії. «Замовити пухову хустку», «завантажити пісні Висоцького»
  • Навігаційні використовуються для пошуку пов'язаного з якоюсь конкретною фірмою або прив'язкою до сайту. "Хлібопіч МВідео" або "смартфони Зв'язковий".
  • Інші - розширений список, яким неможливо зрозуміти кінцеву мету пошуку. Наприклад, запит «торт Наполеон» – можливо, людина шукає рецепт її приготування, а можливо, хоче купити торт.

Як скласти семантику

Необхідно виділити головні терміни вашого бізнесу та потреб користувачів. Наприклад, клієнти пральні цікавляться пранням та чищенням.

Потім слід визначити хвости та специфікацію (більше 2 слів у запиті), які користувачі додають до основних термінів. Цим ви збільшите охоплення цільової аудиторіїі знизите частотність термінів (прання пледів, прання курток тощо).

Збір семантичного ядра вручну

Яндекс Wordstat

  • Виберіть регіон веб-ресурсу.
  • Введіть ключову фразу. Сервіс видасть вам кількість запитів із цим ключовиком за останній місяць та список «споріднених» термінів, які цікавили відвідувачів. Майте на увазі, що якщо ви вводите, наприклад, «купити вікна», то отримуєте результати точного входження ключовика. Якщо вводите цей ключ без лапок, то отримуєте загальні результати, і запити на кшталт «купити вікна у воронежі» та «купити вікно пластикове» також будуть відображені в даній цифрі. Для звуження та уточнення показника можна скористатися оператором «!», який ставиться перед кожним словом: !купити! вікна. Ви отримаєте число, яке показує точну видачу за кожним словом. Вийде список типу: купити пластикові вікна, купити та замовити вікна, при цьому слова «купити» та «вікна» відображатимуться в незмінному вигляді. Для отримання абсолютного показника на запит «купити вікна» слід застосовувати наступну схему: вводимо в лапках «!купити!вікна». Ви отримаєте найточніші дані.
  • Зберіть слова з лівої колонки та проаналізуйте кожне з них. Складіть початкову семантику. Звертайте увагу на праву колонку, що містить КЗ, які користувачі вводили до або після пошуку слів із лівої колонки. Ви знайдете ще багато потрібних фраз.
  • Перейдіть на вкладку «Історія запитів». На графіку ви зможете проаналізувати сезонність, популярність фраз кожного місяця. Непогані результати дає робота із пошуковими підказками Яндекса. Кожен КЗ вводиться в пошукове поле, і на основі підказок розширюється семантика.

Google-планувальник КЗ

  • Введіть головний ВЧ-запит.
  • Виберіть пункт «Отримати варіанти».
  • Заберіть найрелевантніші варіанти.
  • Повторіть цю дію з кожною відібраною фразою.

Вивчення сайтів-конкурентів

Використовуйте цей метод як додатковий, щоб визначити правильність вибору тієї чи іншої КЗ. У цьому вам допоможуть інструменти BuzzSumo, Searchmetrics, SEMRush, Адсе.

Програми для складання семантичного ядра

Розглянемо деякі найпопулярніші послуги.

  • Key Collector. Якщо ви становить дуже об'ємну семантику, то без цього інструменту вам не обійтися. Програма підбирає семантику, звертаючись до Яндекс Wordstat, збирає пошукові підказки даного пошукача, фільтрує КЗ зі стоп-словами, дуже низькою частотою, дубльовані, визначає сезонність фраз, вивчає статистику лічильників та соцмереж, підбирає релевантні сторінки до кожного запиту.
  • SlovoEB. Безкоштовний сервісвід Key Collector. Інструмент підбирає ключові слова, групує та аналізує їх.
  • Allsubmitter. Допомагає підібрати КЗ, показує сайти-конкуренти.
  • KeySO. Аналізує видимість веб-ресурсу, його конкурентів та допомагає у складанні СЯ.

Що потрібно враховувати при доборі ключових фраз

  • Показники частотності.
  • Більшість КЗ має бути НЧ, решта - СЧ та ВЧ.
  • Релевантні пошукові запити сторінки.
  • Конкурентів у ТОП.
  • Конкурентність фрази.
  • Прогнозована кількість переходів.
  • Сезонність та геозалежність.
  • КЗ із помилками.
  • Асоціативні ключі

Правильне семантичне ядро

Перш за все необхідно визначитися з поняттями «ключові слова», «ключі», «ключові або пошукові запити» – це слова або фрази, за допомогою яких потенційні клієнти вашого сайту шукають необхідну інформацію.

Складіть наступні списки: категорії товарів або послуг (далі -ТУ), назви ТУ їх бренди, комерційні хвости («купити», «замовити» тощо), синоніми, транслітерацію на латиниці (або відповідно відповідно), професійні жаргонізми («клавіатура» – «клава» тощо), технічні характеристики, слова з можливими помилками та помилками («оренбурзький» замість «оренбурзький» тощо), прив'язки до місцевості (місто, вулиці тощо) .).

При роботі зі списками орієнтуйтесь на КЗ з договору просування, структуру веб-ресурсу, інформацію, прайс-листи, сайти-конкуренти, досвід попереднього SEO.

Приступайте до підбору семантики шляхом змішування обраних на попередньому етапі словосполучень, використовуючи ручний спосіб або за допомогою сервісів.

Сформуйте список стоп-слів та видаліть невідповідні КЗ.

Згрупуйте КЗ за релевантними сторінками. Під кожен ключ підбирається найбільш релевантна сторінка або створюється новий документ. Бажано цю роботупроводити вручну. Для великих проектів передбачено платні сервіси типу Rush Analytics.

Ідіть від більшого до меншого. Спочатку розподіліть ВЧ на сторінки. Потім те саме проробіть із СЧ. НЧ можна додати до сторінок з розподіленими за ними ВЧ та НЧ, а також підібрати для них індивідуальні сторінки.
Після аналізу перших результатів робіт ми можемо побачити, що:

  • сайт, що просувається, не видно за всіма заявленими ключовими словами;
  • за КЗ видаються не ті документи, які ви передбачали релевантними;
  • заважає неправильна структура веб-ресурсу;
  • для деяких КЗ релевантні кілька веб-сторінок;
  • не вистачає релевантних сторінок.

При групуванні КЗ працюйте з усіма можливими розділами на веб-ресурсі, заповнюйте кожну сторінку корисною інформацією, не створюйте дубльований текст.

Поширені помилки під час роботи з КЗ

  • було підібрано лише очевидна семантика, без словоформ, синонімів тощо;
  • оптимізатор розподілив надто багато КЗ на одну сторінку;
  • однакові КЗ розподілені різні сторінки.

При цьому ранжування погіршується, сайт може бути покараний за переспам, а якщо веб-ресурсу неправильна структура, то просувати його буде дуже складно.

Не важливо, яким чином ви підбиратимете семантику. При правильному підході ви отримаєте правильне СЯ, необхідне успішного просування сайту.

Сподобалась стаття? Поділіться з друзями!
Чи була ця стаття корисною?
Так
Ні
Дякую за ваш відгук!
Щось пішло не так і Ваш голос не було враховано.
Спасибі. Ваше повідомлення надіслано
Знайшли у тексті помилку?
Виділіть її, натисніть Ctrl+Enterі ми все виправимо!