5 Python-Skripte zur Automatisierung von SEO-Aufgaben

Veröffentlicht: 2023-04-12

Python ist eine leistungsstarke Programmiersprache, die in den letzten Jahren in der SEO-Branche an Popularität gewonnen hat.

Mit seiner relativ einfachen Syntax, der effizienten Leistung und der Fülle an Bibliotheken und Frameworks hat Python die Herangehensweise vieler SEOs an ihre Arbeit revolutioniert.

Python bietet ein vielseitiges Toolset, das dazu beitragen kann, den Optimierungsprozess schneller, genauer und effektiver zu gestalten.

In diesem Artikel werden fünf Python-Skripte untersucht, mit denen Sie Ihre SEO-Bemühungen vorantreiben können.

  • Automatisieren Sie eine Umleitungskarte.
  • Schreiben Sie Meta-Beschreibungen in großen Mengen.
  • Keywords mit N-Gramm analysieren.
  • Gruppieren Sie Schlüsselwörter in Themenclustern.
  • Keyword-Liste mit einer Liste vordefinierter Themen abgleichen.

Der einfachste Einstieg in Python

Wenn Sie Ihre Zehen in die Python-Programmierung eintauchen möchten, ist Google Colab eine Überlegung wert.

Es ist eine kostenlose, webbasierte Plattform, die eine praktische Spielwiese zum Schreiben und Ausführen von Python-Code bietet, ohne dass eine komplexe lokale Einrichtung erforderlich ist.

Im Wesentlichen ermöglicht es Ihnen den Zugriff auf Jupyter Notebooks in Ihrem Browser und bietet eine Vielzahl vorinstallierter Bibliotheken für Data Science und maschinelles Lernen.

Außerdem basiert es auf Google Drive, sodass Sie Ihre Arbeit ganz einfach speichern und mit anderen teilen können.

Führen Sie die folgenden Schritte aus, um zu beginnen:

Datei-Uploads aktivieren

Nachdem Sie Google Colab geöffnet haben, müssen Sie zunächst die Möglichkeit aktivieren, ein temporäres Datei-Repository zu erstellen. Es ist so einfach wie das Klicken auf das Ordnersymbol.

Auf diese Weise können Sie temporäre Dateien hochladen und dann alle Ergebnisdateien herunterladen.

Ordner zugreifen

Quelldaten hochladen

Viele unserer Python-Skripte benötigen eine Quelldatei, um zu funktionieren. Um eine Datei hochzuladen, klicken Sie einfach auf die Schaltfläche zum Hochladen.

Datei-Upload-Schaltfläche

Sobald Sie die Einrichtung abgeschlossen haben, können Sie mit dem Testen der folgenden Python-Skripts beginnen.

Skript 1: Automatisieren Sie eine Umleitungskarte

Das Erstellen von Umleitungskarten für große Websites kann unglaublich zeitaufwändig sein. Wege zu finden, den Prozess zu automatisieren, kann uns helfen, Zeit zu sparen und uns auf andere Aufgaben zu konzentrieren.

Wie dieses Skript funktioniert

Dieses Skript konzentriert sich auf die Analyse des Webinhalts, um ähnlich passende Artikel zu finden.

  • Zuerst importiert es zwei TXT-Dateien mit URLs: eine für die umgeleitete Website (source_urls.txt) und die andere für die Website, die die umgeleitete Website aufnimmt (target_urls.txt).
  • Dann verwenden wir die Python-Bibliothek Beautiful Soup, um einen Web Scraper zu erstellen, um den Haupttextinhalt auf der Seite zu erhalten. Dieses Skript ignoriert Kopf- und Fußzeileninhalte.
  • Nachdem der Inhalt auf allen Seiten gecrawlt wurde, verwendet es die Python-Bibliothek Polyfuzz, um Inhalte zwischen URLs mit einem Ähnlichkeitsprozentsatz abzugleichen.
  • Schließlich druckt es die Ergebnisse in einer CSV-Datei, einschließlich des Ähnlichkeitsprozentsatzes.

Von hier aus können Sie alle URLs mit einem niedrigen Ähnlichkeitsprozentsatz manuell überprüfen, um die nächstbeste Übereinstimmung zu finden.

Holen Sie sich das Skript

 #import libraries from bs4 import BeautifulSoup, SoupStrainer from polyfuzz import PolyFuzz import concurrent.futures import csv import pandas as pd import requests #import urls with open("source_urls.txt", "r") as file: url_list_a = [line.strip() for line in file] with open("target_urls.txt", "r") as file: url_list_b = [line.strip() for line in file] #create a content scraper via bs4 def get_content(url_argument): page_source = requests.get(url_argument).text strainer = SoupStrainer('p') soup = BeautifulSoup(page_source, 'lxml', parse_only=strainer) paragraph_list = [element.text for element in soup.find_all(strainer)] content = " ".join(paragraph_list) return content #scrape the urls for content with concurrent.futures.ThreadPoolExecutor() as executor: content_list_a = list(executor.map(get_content, url_list_a)) content_list_b = list(executor.map(get_content, url_list_b)) content_dictionary = dict(zip(url_list_b, content_list_b)) #get content similarities via polyfuzz model = PolyFuzz("TF-IDF") model.match(content_list_a, content_list_b) data = model.get_matches() #map similarity data back to urls def get_key(argument): for key, value in content_dictionary.items(): if argument == value: return key return key with concurrent.futures.ThreadPoolExecutor() as executor: result = list(executor.map(get_key, data["To"])) #create a dataframe for the final results to_zip = list(zip(url_list_a, result, data["Similarity"])) df = pd.DataFrame(to_zip) df.columns = ["From URL", "To URL", "% Identical"] #export to a spreadsheet with open("redirect_map.csv", "w", newline="") as file: columns = ["From URL", "To URL", "% Identical"] writer = csv.writer(file) writer.writerow(columns) for row in to_zip: writer.writerow(row)

Skript 2: Schreiben Sie Meta-Beschreibungen in großen Mengen

Obwohl Meta-Beschreibungen kein direkter Ranking-Faktor sind, helfen sie uns, unsere organischen Klickraten zu verbessern. Wenn Sie Meta-Beschreibungen leer lassen, erhöht sich die Wahrscheinlichkeit, dass Google seine eigenen erstellt.

Wenn Ihr SEO-Audit eine große Anzahl von URLs zeigt, denen eine Meta-Beschreibung fehlt, kann es schwierig sein, sich die Zeit zu nehmen, all diese von Hand zu schreiben, insbesondere für E-Commerce-Websites.

Dieses Skript soll Ihnen helfen, Zeit zu sparen, indem es diesen Prozess für Sie automatisiert.

Wie das Skript funktioniert

  • Zuerst importiert das Skript eine Liste von URLs aus einer TXT-Datei (urls.txt).
  • Dann analysiert es den gesamten Inhalt der URLs.
  • Sobald der Inhalt geparst ist, werden Meta-Beschreibungen erstellt, die darauf abzielen, weniger als 155 Zeichen lang zu sein.
  • Es exportiert die Ergebnisse in eine CSV-Datei.

Holen Sie sich das Skript

 !pip install sumy from sumy.parsers.html import HtmlParser from sumy.nlp.tokenizers import Tokenizer from sumy.nlp.stemmers import Stemmer from sumy.utils import get_stop_words from sumy.summarizers.lsa import LsaSummarizer import csv #1) imports a list of URLs from a txt file with open('urls.txt') as f: urls = [line.strip() for line in f] results = [] # 2) analyzes the content on each URL for url in urls: parser = HtmlParser.from_url(url, Tokenizer("english")) stemmer = Stemmer("english") summarizer = LsaSummarizer(stemmer) summarizer.stop_words = get_stop_words("english") description = summarizer(parser.document, 3) description = " ".join([sentence._text for sentence in description]) if len(description) > 155: description = description[:152] + '...' results.append({ 'url': url, 'description': description }) # 4) exports the results to a csv file with open('results.csv', 'w', newline='') as f: writer = csv.DictWriter(f, fieldnames=['url','description']) writer.writeheader() writer.writerows(results)

Skript 3: Keywords mit N-Gramm analysieren

N-Gramm sind kein neues Konzept, aber immer noch nützlich für SEO. Sie können uns helfen, Themen über große Sätze von Keyword-Daten hinweg zu verstehen.

N-Gramm

Wie dieses Skript funktioniert

Dieses Skript gibt Ergebnisse in einer TXT-Datei aus, die die Schlüsselwörter in Unigramme, Bigramme und Trigramme aufteilt.

  • Zunächst importiert es eine TXT-Datei mit all Ihren Keywords (keyword.txt).
  • Dann verwendet es eine Python-Bibliothek namens Counter, um die N-Gramme zu analysieren und zu extrahieren.
  • Dann exportiert es die Ergebnisse in eine neue TXT-Datei.

Holen Sie sich dieses Skript

 #Import necessary libraries import re from collections import Counter #Open the text file and read its contents into a list of words with open('keywords.txt', 'r') as f: words = f.read().split() #Use a regular expression to remove any non-alphabetic characters from the words words = [re.sub(r'[^a-zA-Z]', '', word) for word in words] #Initialize empty dictionaries for storing the unigrams, bigrams, and trigrams unigrams = {} bigrams = {} trigrams = {} #Iterate through the list of words and count the number of occurrences of each unigram, bigram, and trigram for i in range(len(words)): # Unigrams if words[i] in unigrams: unigrams[words[i]] += 1 else: unigrams[words[i]] = 1 # Bigrams if i < len(words)-1: bigram = words[i] + ' ' + words[i+1] if bigram in bigrams: bigrams[bigram] += 1 else: bigrams[bigram] = 1 # Trigrams if i < len(words)-2: trigram = words[i] + ' ' + words[i+1] + ' ' + words[i+2] if trigram in trigrams: trigrams[trigram] += 1 else: trigrams[trigram] = 1 # Sort the dictionaries by the number of occurrences sorted_unigrams = sorted(unigrams.items(), key=lambda x: x[1], reverse=True) sorted_bigrams = sorted(bigrams.items(), key=lambda x: x[1], reverse=True) sorted_trigrams = sorted(trigrams.items(), key=lambda x: x[1], reverse=True) # Write the results to a text file with open('results.txt', 'w') as f: f.write("Most common unigrams:\n") for unigram, count in sorted_unigrams[:10]: f.write(unigram + ": " + str(count) + "\n") f.write("\nMost common bigrams:\n") for bigram, count in sorted_bigrams[:10]: f.write(bigram + ": " + str(count) + "\n") f.write("\nMost common trigrams:\n") for trigram, count in sorted_trigrams[:10]: f.write(trigram + ": " + str(count) + "\n")

Skript 4: Gruppieren Sie Schlüsselwörter in Themenclustern

Bei neuen SEO-Projekten steht die Keyword-Recherche immer am Anfang. Manchmal haben wir es mit Tausenden von Schlüsselwörtern in einem Datensatz zu tun, was die Gruppierung zu einer Herausforderung macht.

Mit Python können wir Keywords automatisch in ähnliche Gruppen gruppieren, um Trendtrends zu identifizieren und unser Keyword-Mapping zu vervollständigen.

Wie dieses Skript funktioniert

  • Dieses Skript importiert zunächst eine TXT-Datei mit Schlüsselwörtern (keywords.txt).
  • Dann analysiert das Skript die Schlüsselwörter mit TfidfVectorizer und AffinityPropagation.
  • Dann weist es jedem Themencluster einen numerischen Wert zu.
  • Die Ergebnisse werden dann in eine csv-Datei exportiert.

Holen Sie sich dieses Skript

 import csv import numpy as np from sklearn.cluster import AffinityPropagation from sklearn.feature_extraction.text import TfidfVectorizer # Read keywords from text file with open("keywords.txt", "r") as f: keywords = f.read().splitlines() # Create a Tf-idf representation of the keywords vectorizer = TfidfVectorizer() X = vectorizer.fit_transform(keywords) # Perform Affinity Propagation clustering af = AffinityPropagation().fit(X) cluster_centers_indices = af.cluster_centers_indices_ labels = af.labels_ # Get the number of clusters found n_clusters = len(cluster_centers_indices) # Write the clusters to a csv file with open("clusters.csv", "w", newline="") as f: writer = csv.writer(f) writer.writerow(["Cluster", "Keyword"]) for i in range(n_clusters): cluster_keywords = [keywords[j] for j in range(len(labels)) if labels[j] == i] if cluster_keywords: for keyword in cluster_keywords: writer.writerow([i, keyword]) else: writer.writerow([i, ""])

Skript 5: Keyword-Liste mit einer Liste vordefinierter Themen abgleichen

Dies ähnelt dem vorherigen Skript, außer dass Sie damit eine Liste von Schlüsselwörtern mit einem vordefinierten Satz von Themen abgleichen können.

Dies ist großartig für große Sätze von Schlüsselwörtern, da sie in Stapeln von 1.000 verarbeitet werden, um Systemabstürze zu vermeiden.

Wie dieses Skript funktioniert

  • Dieses Skript importiert eine Schlüsselwortliste (keywords.txt) und eine Themenliste (topics.txt).
  • Dann analysiert es die Themen- und Keyword-Listen und vergleicht sie mit der besten Übereinstimmung. Wenn es keine Übereinstimmung findet, kategorisiert es es als andere.
  • Die Ergebnisse werden dann in eine CSV-Datei exportiert.

Holen Sie sich dieses Skript

 import pandas as pd import spacy from spacy.lang.en.stop_words import STOP_WORDS # Load the Spacy English language model nlp = spacy.load("en_core_web_sm") # Define the batch size for keyword analysis BATCH_SIZE = 1000 # Load the keywords and topics files as Pandas dataframes keywords_df = pd.read_csv("keywords.txt", header=None, names=["keyword"]) topics_df = pd.read_csv("topics.txt", header=None, names=["topic"]) # Define a function to categorize a keyword based on the closest related topic def categorize_keyword(keyword): # Tokenize the keyword tokens = nlp(keyword.lower()) # Remove stop words and punctuation tokens = [token.text for token in tokens if not token.is_stop and not token.is_punct] # Find the topic that has the most token overlaps with the keyword max_overlap = 0 best_topic = "Other" for topic in topics_df["topic"]: topic_tokens = nlp(topic.lower()) topic_tokens = [token.text for token in topic_tokens if not token.is_stop and not token.is_punct] overlap = len(set(tokens).intersection(set(topic_tokens))) if overlap > max_overlap: max_overlap = overlap best_topic = topic return best_topic # Define a function to process a batch of keywords and return the results as a dataframe def process_keyword_batch(keyword_batch): results = [] for keyword in keyword_batch: category = categorize_keyword(keyword) results.append({"keyword": keyword, "category": category}) return pd.DataFrame(results) # Initialize an empty dataframe to hold the results results_df = pd.DataFrame(columns=["keyword", "category"]) # Process the keywords in batches for i in range(0, len(keywords_df), BATCH_SIZE): keyword_batch = keywords_df.iloc[i:i+BATCH_SIZE]["keyword"].tolist() batch_results_df = process_keyword_batch(keyword_batch) results_df = pd.concat([results_df, batch_results_df]) # Export the results to a CSV file results_df.to_csv("results.csv", index=False)

Arbeiten mit Python für SEO

Python ist ein unglaublich leistungsfähiges und vielseitiges Tool für SEO-Profis.

Egal, ob Sie Anfänger oder erfahrener Praktiker sind, die kostenlosen Skripte, die ich in diesem Artikel geteilt habe, bieten einen großartigen Ausgangspunkt, um die Möglichkeiten von Python in SEO zu erkunden.

Mit seiner intuitiven Syntax und einer großen Auswahl an Bibliotheken kann Python Ihnen dabei helfen, langwierige Aufgaben zu automatisieren, komplexe Daten zu analysieren und neue Einblicke in die Leistung Ihrer Website zu gewinnen. Warum also nicht ausprobieren?

Viel Glück und fröhliches Programmieren!


Die in diesem Artikel geäußerten Meinungen sind die des Gastautors und nicht unbedingt Search Engine Land. Mitarbeiter Autoren sind hier aufgelistet.