5 skrip Python untuk mengotomatiskan tugas SEO

Diterbitkan: 2023-04-12

Python adalah bahasa pemrograman yang kuat yang telah mendapatkan popularitas di industri SEO selama beberapa tahun terakhir.

Dengan sintaksisnya yang relatif sederhana, kinerja yang efisien, dan pustaka dan kerangka kerja yang melimpah, Python telah merevolusi cara banyak SEO mendekati pekerjaan mereka.

Python menawarkan kumpulan alat serbaguna yang dapat membantu membuat proses pengoptimalan lebih cepat, lebih akurat, dan lebih efektif.

Artikel ini mengeksplorasi lima skrip Python untuk membantu meningkatkan upaya SEO Anda.

  • Otomatiskan peta pengalihan.
  • Tulis deskripsi meta secara massal.
  • Analisis kata kunci dengan N-gram.
  • Kelompokkan kata kunci ke dalam kelompok topik.
  • Cocokkan daftar kata kunci dengan daftar topik yang telah ditentukan sebelumnya.

Cara termudah untuk memulai dengan Python

Jika Anda ingin mendalami pemrograman Python, Google Colab patut dipertimbangkan.

Ini adalah platform berbasis web gratis yang menyediakan taman bermain yang nyaman untuk menulis dan menjalankan kode Python tanpa memerlukan penyiapan lokal yang rumit.

Pada dasarnya, ini memungkinkan Anda untuk mengakses Notebook Jupyter di dalam browser Anda dan menyediakan sejumlah pustaka pra-instal untuk ilmu data dan pembelajaran mesin.

Ditambah lagi, itu dibangun di atas Google Drive, sehingga Anda dapat dengan mudah menyimpan dan berbagi pekerjaan Anda dengan orang lain.

Untuk memulai, ikuti langkah-langkah berikut:

Aktifkan unggahan file

Setelah Anda membuka Google Colab, pertama-tama Anda harus mengaktifkan kemampuan untuk membuat repositori file sementara. Sesederhana mengklik ikon folder.

Ini memungkinkan Anda mengunggah file sementara dan kemudian mengunduh file hasil apa pun.

Akses folder

Unggah data sumber

Banyak dari skrip Python kami memerlukan file sumber agar berfungsi. Untuk mengunggah file, cukup klik tombol unggah.

Tombol unggah file

Setelah Anda menyelesaikan penyiapan, Anda dapat mulai menguji skrip Python berikut.

Skrip 1: Mengotomatiskan peta pengalihan

Membuat peta pengalihan untuk situs besar bisa sangat memakan waktu. Menemukan cara untuk mengotomatiskan proses dapat membantu kami menghemat waktu dan fokus pada tugas lain.

Bagaimana skrip ini bekerja

Skrip ini berfokus pada analisis konten web untuk menemukan artikel yang sangat cocok.

  • Pertama, ini mengimpor dua file TXT dari URL: satu untuk situs web yang dialihkan (source_urls.txt), dan yang lainnya untuk situs yang menyerap situs web yang dialihkan (target_urls.txt).
  • Kemudian, kami menggunakan pustaka Python Beautiful Soup untuk membuat web scraper untuk mendapatkan konten utama di halaman. Skrip ini mengabaikan konten header dan footer.
  • Setelah merayapi konten di semua halaman, ia menggunakan pustaka Python Polyfuzz untuk mencocokkan konten di antara URL dengan persentase kesamaan.
  • Akhirnya, hasilnya dicetak dalam file CSV, termasuk persentase kesamaan.

Dari sini, Anda dapat meninjau secara manual setiap URL dengan persentase kesamaan yang rendah untuk menemukan kecocokan terdekat berikutnya.

Dapatkan naskahnya

 #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)

Skrip 2: Tulis deskripsi meta secara massal

Meskipun deskripsi meta bukan faktor peringkat langsung, deskripsi meta membantu kami meningkatkan rasio klik-tayang organik kami. Membiarkan deskripsi meta kosong meningkatkan kemungkinan Google akan membuatnya sendiri.

Jika audit SEO Anda menunjukkan sejumlah besar URL yang tidak memiliki deskripsi meta, mungkin sulit meluangkan waktu untuk menulis semuanya secara manual, terutama untuk situs web e-niaga.

Skrip ini ditujukan untuk membantu Anda menghemat waktu dengan mengotomatiskan proses itu untuk Anda.

Cara kerja skrip

  • Pertama, skrip mengimpor daftar URL dari file TXT (urls.txt).
  • Kemudian, mem-parsing semua konten di URL.
  • Setelah konten diurai, itu membuat deskripsi meta yang bertujuan di bawah 155 karakter.
  • Ini mengekspor hasilnya ke file CSV.

Dapatkan naskahnya

 !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)

Skrip 3: Analisis kata kunci dengan N-gram

N-gram bukanlah konsep baru tetapi masih berguna untuk SEO. Mereka dapat membantu kami memahami tema di kumpulan besar data kata kunci.

N-Gram

Bagaimana skrip ini bekerja

Skrip ini menampilkan hasil dalam file TXT yang memecah kata kunci menjadi unigram, bigram, dan trigram.

  • Pertama, mengimpor file TXT dari semua kata kunci Anda (keyword.txt).
  • Kemudian menggunakan library Python yang disebut Counter untuk menganalisis dan mengekstrak N-gram.
  • Kemudian hasilnya diekspor ke file TXT baru.

Dapatkan skrip ini

 #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")

Skrip 4: Kelompokkan kata kunci ke dalam kelompok topik

Dengan proyek SEO baru, penelitian kata kunci selalu dalam tahap awal. Terkadang kami berurusan dengan ribuan kata kunci dalam kumpulan data, membuat pengelompokan menjadi sulit.

Python memungkinkan kami mengelompokkan kata kunci secara otomatis ke dalam grup serupa untuk mengidentifikasi tren tren dan menyelesaikan pemetaan kata kunci kami.

Bagaimana skrip ini bekerja

  • Skrip ini pertama-tama mengimpor file TXT dari kata kunci (keywords.txt).
  • Kemudian skrip menganalisis kata kunci menggunakan TfidfVectorizer dan AffinityPropagation.
  • Kemudian itu memberikan nilai numerik untuk setiap kelompok topik.
  • Hasilnya kemudian diekspor ke file csv.

Dapatkan skrip ini

 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, ""])

Skrip 5: Cocokkan daftar kata kunci dengan daftar topik yang telah ditentukan sebelumnya

Ini mirip dengan skrip sebelumnya, kecuali ini memungkinkan Anda mencocokkan daftar kata kunci dengan serangkaian topik yang telah ditentukan sebelumnya.

Ini bagus untuk sekumpulan besar kata kunci karena memprosesnya dalam kumpulan 1.000 untuk mencegah kerusakan sistem.

Bagaimana skrip ini bekerja

  • Skrip ini mengimpor daftar kata kunci (keywords.txt) dan daftar topik (topics.txt).
  • Kemudian menganalisis daftar topik dan kata kunci dan mencocokkannya dengan kecocokan terdekat. Jika tidak menemukan kecocokan, itu mengkategorikannya sebagai yang lain.
  • Hasilnya kemudian diekspor ke file CSV.

Dapatkan skrip ini

 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)

Bekerja dengan Python untuk SEO

Python adalah alat yang sangat kuat dan serbaguna untuk para profesional SEO.

Apakah Anda seorang pemula atau praktisi berpengalaman, skrip gratis yang saya bagikan dalam artikel ini menawarkan titik awal yang bagus untuk mengeksplorasi kemungkinan Python dalam SEO.

Dengan sintaks intuitif dan beragam pustaka, Python dapat membantu Anda mengotomatiskan tugas-tugas yang membosankan, menganalisis data yang rumit, dan mendapatkan wawasan baru tentang kinerja situs web Anda. Jadi mengapa tidak mencobanya?

Semoga berhasil, dan selamat membuat kode!


Pendapat yang diungkapkan dalam artikel ini adalah dari penulis tamu dan belum tentu Search Engine Land. Penulis staf tercantum di sini.