Cara Gila Tiara Sunflower Otomatisasi SEO Joomla Pakai Python Tanpa Capek

Cara Gila Tiara Sunflower Otomatisasi SEO Joomla Pakai Python Tanpa Capek

Biasa kita membuat website melalui blogspot atau situs wordpress, tetapi untuk situs bersifat open source semuanya berbeda.

Mulai dari setting web hingga mendorong “Otomatisasi SEO Joomla pakai Phyton”, nah ini dinamakan situs open source.

Di tahun 2023, Tiara Sunflower pernah menulis artikel SEO untuk klien kami dan mereka menggunakan CMS berbasis Joomla, tentu SEO disana tidak mudah bahkan harus menyelipkan script Phyton di sekitar heading.

Bukti bahwa Tiara Sunflower menulis di CMS Joomla saat memesan klien.
Bukti bahwa Tiara Sunflower menulis di CMS Joomla saat memesan klien.

Saat nulis disana itu lebih mudah dan simpel dibandingkan nulis di WordPress.

Biasa Joomla menggunakan editor utama bawaan atau pengaturan “TinyMCE” untuk menulis isi artikel.

Saat menulis artikel tetap mengutamakan iOS tetapi ketika diberi imbalan di editor sana= menggunakan editor TinyMCE itu lebih baik.

Dalam Artikel Ini: 2 Pembahasan Otomatisasi SEO Joomla Pakai Python

Ketika membangun website, wordpress dan Blogspot mengatur SEO dengan memasukkan beberapa plugin tanpa input kode melalui javascript.

Python juga mengatasi masalah itu. Dengan memasukkan beberapa baris kode, Anda dapat mengaudit seluruh situs untuk tautan yang rusak, mengambil metadata dari ratusan halaman.

Hingga: mengurai file log untuk mendapatkan wawasan perayapan, atau terhubung ke API apa pun yang menawarkan data SEO terstruktur.

Istilahnya dari pengalaman Tiara Sunflower saat belajar dari praktisi SEO Development dari karyawan sendiri:

“Saat profesional website membangun situs untuk terlihat anggun, enak dilihat bahkan SEO Friendly mereka biasa menggunakan elemen, dan plugin. 

Sementara ketika menggunakan Python: hanya dengan menyalin skrip itu lebih cepat dan lebih andal daripada manusia mana pun”.

Begitu dengan CMS Joomla. Pendekatan paling “gila” dan efektif di era modern saat ini adalah menggabungkan AI (Kecerdasan Buatan), Python, dan Joomla REST API menjadi satu mesin otomatis yang bekerja 24 jam.

1. Optimasi Lewat Artikel

Sama seperti cara lainnya, Anda bisa “mengoptimasi artikel melalui Joomla”.

Dilaporkan dari laman Search Engine Land dimana untuk menulis artikel SEO melalui Joomla dan ini wajib menyalin script Python maka caranya bisa kami lansir begini:

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

Dengan sintaksnya yang relatif sederhana, kinerja yang efisien, dan banyaknya pustaka serta kerangka kerja, Python telah merevolusi cara banyak praktisi SEO mendekati pekerjaan mereka. 

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

Jika Anda ingin mencoba pemrograman Python, Google Collab layak dipertimbangkan. 

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

Pada dasarnya, ini memungkinkan Anda mengakses Jupyter Notebook di dalam browser Anda dan menyediakan sejumlah pustaka yang sudah terinstal untuk ilmu data dan pembelajaran mesin. 

Selain itu, aplikasi ini 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 membuka Google Colab, pertama-tama Anda perlu mengaktifkan kemampuan untuk membuat repositori file sementara. Caranya sangat mudah, cukup klik ikon folder.  Ini memungkinkan Anda mengunggah file sementara dan kemudian mengunduh file hasil apa pun.

Akses folder

Unggah data sumber

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

Tombol unggah file

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

Skrip 1: Mengotomatiskan peta pengalihan

Membuat peta pengalihan (redirect map) untuk situs web besar bisa sangat memakan waktu. Menemukan cara untuk mengotomatiskan proses ini dapat membantu kita menghemat waktu dan fokus pada tugas-tugas lain.

Cara kerja skrip ini

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

Pertama, ia mengimpor dua file TXT berisi 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, kita menggunakan pustaka Python Beautiful Soup untuk membuat web scraper guna mendapatkan konten utama halaman. Skrip ini mengabaikan konten header dan footer.

Setelah merayapi konten di semua halaman, ia menggunakan pustaka Python Polyfuzz untuk mencocokkan konten antar URL dengan persentase kemiripan.

Terakhir, program ini mencetak hasilnya dalam file CSV, termasuk persentase kemiripan. 

Dari sini, Anda dapat meninjau secara manual URL apa pun dengan persentase kemiripan 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: Menulis meta deskripsi secara massal

Meskipun meta deskripsi bukanlah faktor peringkat langsung, meta deskripsi membantu kita meningkatkan rasio klik-tayang organik. Membiarkan meta deskripsi kosong meningkatkan kemungkinan Google akan membuat meta deskripsinya sendiri.

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

Skrip ini bertujuan untuk membantu Anda menghemat waktu dengan mengotomatiskan proses tersebut untuk Anda.

Cara kerja skrip

Pertama, skrip mengimpor daftar URL dari file TXT (urls.txt).

Kemudian, ia menganalisis seluruh konten pada URL tersebut.

Setelah konten diuraikan, sistem akan membuat deskripsi meta yang bertujuan agar panjangnya kurang dari 155 karakter. 

Hasilnya diekspor ke dalam 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: Menganalisis kata kunci dengan N-gram

N-gram bukanlah konsep baru, tetapi tetap berguna untuk SEO. N-gram dapat membantu kita memahami tema di antara kumpulan data kata kunci yang besar.

Cara kerja skrip ini

Skrip ini menghasilkan output dalam file TXT yang memisahkan kata kunci menjadi unigram, bigram, dan trigram. 

Pertama, ia mengimpor file TXT yang berisi semua kata kunci Anda (keyword.txt).

Kemudian, ia menggunakan pustaka Python bernama Counter untuk menganalisis dan mengekstrak N-gram.

Kemudian, hasilnya diekspor ke dalam 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: Mengelompokkan kata kunci ke dalam klaster topik

Dalam proyek SEO baru, riset kata kunci selalu berada di tahap awal. Terkadang kita berurusan dengan ribuan kata kunci dalam sebuah dataset, sehingga pengelompokan menjadi sulit. 

Python memungkinkan kita untuk secara otomatis mengelompokkan kata kunci ke dalam kelompok yang serupa untuk mengidentifikasi tren dan menyelesaikan pemetaan kata kunci kita. 

Cara kerja skrip ini: Skrip ini pertama-tama mengimpor file TXT berisi kata kunci (keywords.txt). Kemudian skrip menganalisis kata kunci menggunakan TfidfVectorizer dan AffinityPropagation. Lalu: sistem akan memberikan nilai numerik pada setiap klaster topik. Hasilnya kemudian diekspor ke dalam 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: Mencocokkan daftar kata kunci dengan daftar topik yang telah ditentukan sebelumnya

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

Ini sangat bagus untuk kumpulan kata kunci yang besar karena memprosesnya dalam kelompok 1.000 kata kunci untuk mencegah kerusakan sistem.

Cara kerja skrip ini

Skrip ini mengimpor daftar kata kunci (keywords.txt) dan daftar topik (topics.txt).

Kemudian, sistem menganalisis topik dan daftar kata kunci, lalu mencocokkannya dengan yang paling sesuai. Jika tidak menemukan kecocokan, sistem akan mengkategorikannya sebagai “lainnya”. 

Hasilnya kemudian diekspor ke dalam 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)

Bagaimana Cara Menyalinnya?

Pertama:

Anda wajib mengimpor dua file TXT berisi 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 Kedua:

Kita menggunakan pustaka Python Beautiful Soup untuk membuat web scraper guna mendapatkan konten utama halaman. 

Skrip ini mengabaikan konten header dan footer. Setelah merayapi konten di semua halaman, ia menggunakan pustaka Python Polyfuzz untuk mencocokkan konten antar URL dengan persentase kemiripan.

Terakhir:

Program ini mencetak hasilnya dalam file CSV, termasuk persentase kemiripan. Jadi saat Anda menyalin script ini maka wajib “input secara manual”.

2. Lewat Situs Website 

Nah kami juga menyarankan untuk menyalin script Phyton melalui laman “edit html”. Disitu Anda bisa menyalin secara manual.

√ Login ke Joomla Administrator ( Dibagian Menu Setting )

√ Masuk ke System -> Manage -> Plugins, lalu pastikan plugin Web Services dan API Authentication sudah aktif.  

√ Masuk ke profil User Anda (Super User), cari tab Joomla API Token, lalu Generate Token. Simpan token rahasia ini baik-baik.

Masukkan script dibawah ini:

name: Auto SEO Joomla

on:

  schedule:

    – cron: ‘0 8 * * *’ # Berjalan otomatis setiap jam 8 pagi setiap hari

jobs:

  run-script:

    runs-on: ubuntu-latest

    steps:

      – nama: Checkout Repo

        penggunaan: actions/checkout@v4

      – nama: Menyiapkan Python

        penggunaan: actions/setup-python@v5

        dengan:

          versi python: ‘3.10’

      – nama: Instal Dependensi

        jalankan: pip install requests openai

      – nama: Jalankan Skrip

        lingkungan:

          OPENAI_API_KEY: ${{ rahasia.OPENAI_API_KEY }}

          JOOMLA_TOKEN: ${{ rahasia.JOOMLA_TOKEN }}

        jalankan: python autoblog.py

Nah sekarang jika semua sudah selesai dilakukan, Anda perlu menunggu waktu sampai 1 bulan penuh agar script di atas bekerja dengan baik.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *