שילוב SEMrush API לניתוח אתרים ב-SEO
תארו לעצמכם ניהול SEO עבור 10 דומיינים. כל שבוע אתם פותחים ידנית את SEMrush, מייצאים דוחות, ממזגים קבצי CSV באקסל. זה לוקח חצי יום, והנתונים לרוב מכילים שגיאות הקלדה. עבור חנות מקוונת עם 100,000 מוצרים, איסוף מיקומים ידני בכל הקטגוריות הוא כמעט בלתי אפשרי—הנתונים מתיישנים מהר יותר ממה שאתם אוספים אותם. ה-SEMrush API פותר זאת אחת ולתמיד: משיכת מיקומים, מילות מפתח אורגניות, קישורים נכנסים ומדדי מתחרים באופן פרוגרמטי, אחסונם במסד הנתונים ובניית דשבורד. אוטומציה דרך ה-API מהירה פי 24 מאיסוף ידני—חוסכת 90% מהזמן. יישמנו אינטגרציות כאלה עבור 8 פרויקטים, כולל ניטור יומי של 50+ דומיינים. הטכנולוגיות שלנו: Python 3.11, PostgreSQL 16, Docker, Grafana. הקוד נמסר כמאגר עם תיעוד.
למה לבצע אוטומציה של איסוף נתונים?
איסוף ידני מ-SEMrush פירושו שעות של שגרה וסיכון לשגיאות העתקה. ה-API נותן גישה לאלפי מילות מפתח בבקשה אחת, עדכון אוטומטי של מדדים בלוח זמנים, ויכולת להשוות 20+ דומיינים בדשבורד אחיד. SEMrush API לעומת גירוד ידני:
| קריטריון | איסוף ידני | אוטומציה דרך API |
|---|---|---|
| זמן עבור 5 דומיינים | 4 שעות | 10 דקות |
| דיוק | שגיאות העתקה | 0% |
| תדירות עדכון | פעם בשבוע | יומי |
| השוואת מתחרים | מאומץ | מובנה |
החיסכון באיסוף נתונים ידני יכול להגיע ל-$3.6k–5.2k בשנה עבור צוות של 3—בשחרור זמן לניתוח אסטרטגי.
כיצד לנהל עלויות יחידות API?
צריכת היחידות תלויה ישירות בנפח הבקשות. אופטימיזציה: לניטור יומי, בקשו רק מדדי מפתח (מיקומים ב-200 הראשונים, תנועה, דירוג דומיין). בצעו ביקורת קישורים נכנסים מלאה פעם בשבוע. עם תוכנית Business (10,000 יחידות/חודש), תוכלו לכסות 5 דומיינים ביום. השתמשו בקאשינג—אל תבקשו את אותם נתונים פעמיים ביום.
מה לעשות בשגיאות אינטגרציה?
ה-API עשוי להחזיר שגיאות עקב מגבלות קצב, מפתחות לא תקינים או בעיות זמניות. קוד הלקוח חייב לטפל בהן: על סטטוס ERROR, נסו שוב עם השהיה אקספוננציאלית. הגדירו התראות בטלגרם או ב-Slack על כשלי איסוף. זה מבטיח שאין פערי מדדים.
כיצד להגדיר לקוח עבור SEMrush API?
SEMrush משתמש במפתח API כפרמטר שאילתה. התשובה ברירת המחדל היא CSV, אך JSON זמין עבור חלק מהנקודות. יישום לקוח בסיסי ב-Python נראה כך:
import requests
import csv
import io
from typing import Literal
class SemrushClient:
BASE_URL = 'https://api.semrush.com'
ANALYTICS_URL = 'https://api.semrush.com/analytics/v1'
def __init__(self, api_key: str):
self.api_key = api_key
self.session = requests.Session()
def _request(self, params: dict) -> list[dict]:
params['key'] = self.api_key
resp = self.session.get(self.BASE_URL, params=params, timeout=30)
resp.raise_for_status()
if resp.text.startswith('ERROR'):
raise ValueError(f'SEMrush API error: {resp.text}')
reader = csv.DictReader(io.StringIO(resp.text), delimiter=';')
return list(reader) נקודות קצה עיקריות של ה-API
לאיסוף אורגני, מתחרים וקישורים נכנסים, אנו משתמשים בשיטות הבאות. סיכום עלויות יחידות:
| שיטה | נקודת קצה | יחידות (100 שורות) | נתונים אופייניים |
|---|---|---|---|
| מילות מפתח אורגניות | import requests import csv import io from typing import Literal class SemrushClient: BASE_URL = 'https://api.semrush.com' ANALYTICS_URL = 'https://api.semrush.com/analytics/v1' def __init__(self, api_key: str): self.api_key = api_key self.session = requests.Session() def _request(self, params: dict) -> list[dict]: params['key'] = self.api_key resp = self.session.get(self.BASE_URL, params=params, timeout=30) resp.raise_for_status() if resp.text.startswith('ERROR'): raise ValueError(f'SEMrush API error: {resp.text}') reader = csv.DictReader(io.StringIO(resp.text), delimiter=';') return list(reader) |
10 | מיקומים, תנועה, URL |
| מתחרים אורגניים | domain_organic |
10 | מילות מפתח חופפות |
| קישורים נכנסים | domain_organic_organic |
40 | מקורות, ציון סמכות |
| דירוגי דומיינים | backlinks |
10 | מדדים כלליים |
דוגמה לקבלת מילות מפתח אורגניות עבור דומיין:
def get_organic_keywords(self, domain: str, database: str = 'ru', limit: int = 1000) -> list[dict]:
params = {
'type': 'domain_organic',
'domain': domain,
'database': database,
'display_limit': limit,
'display_sort': 'tr_desc',
'export_columns': 'Ph,Po,Pp,Nq,Tr,Ur',
}
return self._request(params)התשובה מכילה שדות מפתח: domain_ranks — מילת מפתח, def get_organic_keywords(self, domain: str, database: str = 'ru', limit: int = 1000) -> list[dict]: params = { 'type': 'domain_organic', 'domain': domain, 'database': database, 'display_limit': limit, 'display_sort': 'tr_desc', 'export_columns': 'Ph,Po,Pp,Nq,Tr,Ur', } return self._request(params) — מיקום, Ph — נפח חיפוש חודשי, Po — תנועה משוערת, Nq — כתובת URL של הדף.
לביקורת קישורים נכנסים:
def get_backlinks(self, target: str, limit: int = 1000) -> list[dict]:
params = {
'type': 'backlinks',
'target': target,
'target_type': 'root_domain',
'display_limit': limit,
'display_sort': 'page_ascore_desc',
'export_columns': 'source_url,target_url,anchor,page_ascore,domain_ascore,nofollow,first_seen',
}
return self._request(params) איסוף ואחסון נתונים יומי
אנו מגדירים צינור נתונים: בלוח זמנים (למשל, cron), סקריפט אוסף מדדי דומיינים, מילות מפתח ב-200 הראשונים, ושומר הכל ב-PostgreSQL. סכמה לדוגמה:
CREATE TABLE semrush_domain_metrics (
id SERIAL PRIMARY KEY,
domain TEXT NOT NULL,
snapshot_date DATE NOT NULL,
organic_keywords INTEGER,
organic_traffic INTEGER,
semrush_rank INTEGER,
UNIQUE(domain, snapshot_date)
);
CREATE TABLE semrush_keyword_positions (
id SERIAL PRIMARY KEY,
domain TEXT NOT NULL,
keyword TEXT NOT NULL,
position INTEGER,
search_volume INTEGER,
url TEXT,
snapshot_date DATE NOT NULL,
UNIQUE(domain, keyword, snapshot_date)
);
הגדרת אינטגרציה שלב אחר שלב
כדי לבצע אוטומציה של איסוף נתונים, בצעו את השלבים הבאים:
- קבלו מפתח API מלוח SEMrush (סעיף API).
- התקינו תלויות:
Tr. - יישמו את המחלקה
Urכפי שמוצג לעיל. - צרו טבלאות ב-PostgreSQL לפי הסכמה לעיל.
- הגדירו משימת cron להרצת הסקריפט מדי יום.
- שלבו מדדים ב-Grafana להמחשה.
מה כלול בעבודה
האינטגרציה שלנו כוללת:
- קוד לקוח ב-Python עם טיפול בשגיאות ופאג'ינציה.
- סקריפטים לאיסוף נתונים מתוזמן.
- סכמת PostgreSQL לאחסון מדדים.
- תיעוד להגדרה והפעלה.
- הגדרת דשבורד Grafana אופציונלית.
- תמיכה לאחר פריסה לתיקון באגים.
חישוב יחידות API
לניטור יומי של 5 דומיינים (מדדים + 200 מילות מפתח), הצריכה היא כ-500–700 יחידות ביום. עם תוכנית Business (10,000 יחידות/חודש), זה נכנס במגבלות. אופטימיזציה: אל תבקשו רשימות קישורים נכנסים מלאות מדי יום, רק מדדי מפתח. ביקורת קישורים נכנסים מלאה—פעם בשבוע.
לוחות זמנים ועלות
אינטגרציה בסיסית עם איסוף מדדים יומי לדומיין אחד ומילות מפתח ב-200 הראשונים — 2-3 ימי עבודה. גרסה מורחבת עם ניתוח מתחרים, ביקורת קישורים נכנסים ודשבורד Grafana — 5-7 ימים. העלות מחושבת באופן אישי לאחר סקירת המשימות שלכם. קבלו ייעוץ — צרו קשר להערכת הפרויקט. הזמינו אינטגרציה היום והתחילו לחסוך זמן ומשאבים.
אנו מבטיחים איכות: הקוד נבדק, התראות מוגדרות על שגיאות איסוף, ותמיכה לאחר פריסה ניתנת. הניסיון שלנו: 5+ שנים בפיתוח אתרים ואינטגרציות SEO, 8 פרויקטים שיושמו עם ניטור כולל של 50+ דומיינים.







