So prognostizieren Sie den Erfolg von Inhalten mit Python

Google teilt uns seit Jahren mit, dass 15% der Suchanfragen, die sie jeden Tag sehen, noch nie zuvor gesehen wurden.

Wenn ich in den 15 Jahren, in denen ich an der Google-Suche gearbeitet habe, eines gelernt habe, ist die Neugier der Menschen endlos. Wir sehen jeden Tag Milliarden von Suchanfragen, und 15 Prozent dieser Anfragen haben wir noch nie gesehen – Daher haben wir Möglichkeiten entwickelt, Ergebnisse für Abfragen zurückzugeben, die wir nicht vorhersehen können.

Sie haben gelernt, Ergebnisse zurückzugeben, auch wenn sie nicht vorhersehen können, wonach die Leute suchen würden.

Stellen Sie sich nun die Bedeutung dieser Gelegenheit vor.

Wenn niemand weiß, was diese Abfragen sind, werden sie wahrscheinlich nicht in Keyword-Recherche-Tools gemeldet und haben wahrscheinlich wenig Inhalt, mit dem sie konkurrieren können.

Können wir solche Abfragen identifizieren und Inhalte für die vielversprechendsten schreiben?

Lass es uns herausfinden!

Hier ist unser technischer Plan. Wir werden:

  • Rufen Sie Suchanfragedaten für ein Jahr von der Google Search Console ab.
  • Isolieren Sie die Abfragen am letzten Tag der Daten und filtern Sie die bisher unbekannten.
  • Versuchen Sie, unsere unbekannten Abfragen semantisch mit den vorherigen abzugleichen. Dies wird uns helfen, ihr Potenzial für die Produktion von Inhalten mit hohem Datenverkehr abzuschätzen.
  • Führen Sie eine Verkehrsprognose durch, um die vielversprechendsten Ideen zu priorisieren.

Werbung

Lesen Sie weiter unten

Automatisches Abrufen von Google Search Console-Daten

Wir müssen einige vorläufige Einstellungen vornehmen, um von Python aus auf die Google Search Console zugreifen zu können.

Zuerst müssen wir eine client_id.json-Datei herunterladen, um sie aus unserem Python-Code zu referenzieren:

  1. Aktivieren Sie die Search Console-API in der Compute Engine
    https://console.cloud.google.com/apis/api/webmasters.googleapis.com/overview?project=&folder=&organizationId=
  2. Neue Anmeldeinformationen erstellen / Bei der Auswahl helfen (Suchkonsolen-API, andere Benutzeroberfläche, Benutzerdaten)
    https://console.cloud.google.com/apis/credentials/wizard?api=iamcredentials.googleapis.com&project=
  3. Laden Sie client_id.json herunter

Lassen Sie uns diese Bibliothek installieren, die den Zugriff auf die Google Search Console erheblich vereinfacht.

!pip install git+https://github.com/joshcarty/google-searchconsole

Wenn Sie Google Colab verwenden, laden Sie die Datei client_id.json hoch.

#upload client_id.json

from google.colab import files

names = files.upload()

In dieser Zeile können Sie den Namen des Datei-Uploads abrufen.

filename=list(names.keys())[0]

Jetzt können wir uns mit der Suchkonsole authentifizieren

import searchconsole

account = searchconsole.authenticate(client_config=filename, serialize="credentials.json", flow="console")

Sie müssen auf den bereitgestellten Link klicken, die Authentifizierungsschritte ausführen und den bereitgestellten Code zurückkopieren.

Sie können die Liste der damit verfügbaren Websites ausdrucken.

print(account.webproperties)

Wählen Sie eine der Website-Eigenschaften aus, indem Sie:

domain_name = "https://www.sitename.com/"
#Insert your domain name below.
webproperty = account[domain_name]

Diese einfache Funktion kann eine Web-Eigenschaft übernehmen und einen Pandas-Datenrahmen mit einem ganzen Jahr Abfragedaten zurückgeben.

Werbung

Lesen Sie weiter unten

Sie können die Anzahl der abzurufenden Tage ändern.

Hier ist der Code zum Abrufen der Daten und ein Beispiel für die Ausgabe.

df = get_search_console_data (Web-Eigenschaft)

df.head ()

So prognostizieren Sie den Erfolg von Inhalten mit PythonIsolieren der 15% unbekannten Abfragen

Beim Abrufen unseres Suchkonsolen-Abfragedatensatzes haben wir darauf geachtet, die Daten abzurufen, damit wir problemlos leistungsstarke Analysen durchführen können.

Aber zuerst müssen wir den Datentyp der Datumsspalte ändern.

Wie Sie oben sehen können, wurde es nicht automatisch als Datum / Uhrzeit-Objekt erkannt.

Der folgende Code verwendet die Pandas-Funktion to_datetime, um dies zu beheben.

df["date"] = pd.to_datetime(df.date)

Jetzt können Sie unseren Datensatz eingrenzen, um festzustellen, dass täglich 15% der unbekannten Abfragen angezeigt werden.

Google vergleicht wahrscheinlich tägliche Abfragen mit allen zuvor bekannten.

Aufgrund unseres begrenzten Datensatzes werden wir nur mit Abfragen vergleichen, die im letzten Jahr gesehen wurden.

Hier ist unser Prozess, um das zu tun:

  • Erstellen Sie einen gefilterten Datenrahmen mit nur dem letzten Tag der gesammelten Daten. Die Aktualisierung der Suchkonsole dauert einige Tage.
  • Erstellen Sie zwei Sätze eindeutiger Abfragen: eine mit den Abfragen des letzten Tages und eine mit den verbleibenden Abfragen des letzten Jahres.
  • Erstellen Sie einen neuen Satz unbekannter Abfragen durch Berechnung der Differenz zwischen den vorherigen Datensätzen.

Der letzte Tag der Daten in meinem Datensatz ist der 7. November.

Ich kann den Datenrahmen filtern, indem ich nach Daten suche, die größer als der 6. November sind.

Super einfach!

df[df["date"] > "2020-11-6"]

So prognostizieren Sie den Erfolg von Inhalten mit Python
Dies gibt 5.000 Zeilen mit Abfragedaten zurück.

Ich kann den gleichen Ansatz verwenden, um einen anderen Datensatz mit den restlichen Abfragen zu erhalten.

Werbung

Lesen Sie weiter unten

rest_of_queries = df[df["date"] < "2020-11-6"]["query"]

Ich erhalte 180.000 Abfragen in meinem Datensatz.

Das Berechnen der unbekannten Abfragen ist mit Python-Sets sehr einfach.

fiften_percent = set(last_day_queries) - set(rest_of_queries)

Als ich die Keywords gezählt habe, habe ich nur 212 gefunden, was weniger als 4% der Anfragen für diesen Tag entspricht.

Es waren nicht 15%, aber die Anzahl der Abfragen reicht aus, um neue Ideen für Inhalte zu finden.

Die Site, auf der ich diese Analyse durchgeführt habe, ist eine große gemeinnützige Organisation, und es war interessant, die unbekannten Abfragen manuell zu überprüfen.

Hier sind einige der Abfragemuster, die ich entdeckt habe.

  • Abfragen zu Firmennamen, die offenbar kürzlich geöffnet wurden oder kürzlich Aufmerksamkeit erregt haben.
  • Einige scheinen nachrichtenorientiert zu sein.
  • Neue Situationen in der Welt.

Sehen wir uns drei Beispielabfragen an.

Neue Situation in der Welt

So prognostizieren Sie den Erfolg von Inhalten mit Python

Neues Geschäft?

So prognostizieren Sie den Erfolg von Inhalten mit Python
Google hat dieses Unternehmen in meiner Suche nicht gefunden, aber sehen Sie, wie Google festgestellt hat, dass es sich um eine lokale Suche handelt.

Möglicherweise befindet sich das Unternehmen an einem anderen geografischen Standort.

Nachrichtengesteuert So prognostizieren Sie den Erfolg von Inhalten mit Python

Ich fand das besonders interessant.

Werbung

Lesen Sie weiter unten

Sie können in den SERPs einen Nachrichtenbericht vom 3. November sehen, in dem niedrigere Spenden in BC erwähnt werden

Es ist sinnvoll, dass Suchanfragen ansteigen, um mehr darüber zu erfahren.

Sehen Sie, wie diese Technik dazu beitragen kann, neue Möglichkeiten für Inhalte zu entdecken?

Wirklich mächtiges Zeug!

Semantisch übereinstimmende Abfragen

Wir haben also eine Reihe neuer Fragen und entsprechender Ideen für Inhalte.

Wir haben jedoch keine historische Leistung, um jede Gelegenheit einzuschätzen.

Da diese Abfragen möglicherweise noch nie zuvor gesehen wurden, ist es unwahrscheinlich, dass sie in Keyword-Tools angezeigt werden.

Woher wissen wir, welche zu priorisieren sind?

Hier ist eine clevere Technik, die wir ausprobieren können.

Wir werden eine Idee aus diesem Patentanalyse-Beitrag von Sensei ausleihen Bill Slawski.

Über die Patente, über die er spricht, spricht kanonische Abfragen.

Kanonische Abfragen implizieren, dass es doppelte Möglichkeiten gibt, dieselbe Suche zu schreiben.

Während sich die Patente auf die syntaktische Vervielfältigung konzentrieren, können wir das Konzept erweitern und auch die semantische Vervielfältigung berücksichtigen.

Abfragen, die dasselbe bedeuten, aber mit anderen Wörtern ausgedrückt werden.

Werbung

Lesen Sie weiter unten

Bill deckte ein weiteres Patent ab, das diesen Ansatz verfolgt.

Aber wie würden wir das überprüfen?

Natürlich mit maschinellem Lernen! 🤓

So prognostizieren Sie den Erfolg von Inhalten mit Python

Semantische Textähnlichkeit ist ein fortgeschrittenes Konzept, aber ich liebe die einfache Visualisierung und Erklärung in diesem Artikel.

Es zeigt, dass ein Ansatz, um ähnliche Fragen zu finden, darin besteht, sie anhand ihrer Antworten abzugleichen.

Wenn die Antwort durchweg dieselbe ist, stellen wir wahrscheinlich gleichwertige Fragen!

Werbung

Lesen Sie weiter unten

Lassen Sie uns diese Idee nun in Python-Code übersetzen.

Lassen Sie uns zuerst diese praktische Bibliothek installieren.

!pip install sentence-transformers

Wir können ein Modell mit ein paar Codezeilen erstellen.

from sentence_transformers import SentenceTransformer, util

model = SentenceTransformer('distilbert-base-nli-stsb-mean-tokens')

Sobald wir ein Modell haben, werden wir semantisch ähnliche Abfragen finden, indem wir dem folgenden Prozess folgen:

  • Verwandeln Sie die Abfragen / Sätze in Einbettungen (Zahlen, die Näherungsberechnungen vereinfachen)
  • Berechnen Sie die Proximity-Scores zwischen Abfragepaaren.
  • Filtern Sie die engsten Übereinstimmungen basierend auf einem Grenzwert, den wir empirisch bestimmen können.

So prognostizieren Sie den Erfolg von Inhalten mit Python
Im obigen Screenshot sehen Sie, wie leistungsfähig diese Matching-Technik ist.

“Der neue Film ist großartig” und “Der neue Film ist so großartig” passen perfekt zu 0,98.

Werbung

Lesen Sie weiter unten

Die höchste Punktzahl ist 1.

Hier ist der Code, um dies mit unseren Abfragen zu tun.

Zuerst erstellen wir die Einbettungen.

fifteen_percent_list = list(fifteen_percent)

#Compute embedding for both lists

embeddings1 = model.encode(fifteen_percent_list, convert_to_tensor=True)
# try on a smaller set of 10k, as it takes too long to run on full set of queries

rest_of_queries_list = list(set(rest_of_queries))[:10000]
embeddings2 = model.encode( rest_of_queries_list, convert_to_tensor=True)

Als nächstes möchten wir semantisch ähnliche Abfragen in der historischen Liste finden, die eng mit den neuen unbekannten Abfragen übereinstimmen.

#Compute cosine similarities

cosine_scores = util.pytorch_cos_sim(embeddings1, embeddings2)

Schließlich ist hier der Code zum Filtern der ähnlichen Abfragen.

#Output the pairs with their score

for i in range(len(fifteen_percent_list)):

  score = cosine_scores[i][i]

  if score > 0.7:

    print(f"{i}. {fifteen_percent_list[i]} <> {rest_of_queries_list[i]} nScore: {score:.4f}")

Ich konnte nur 10.000 Abfragen überprüfen und es gab keine Übereinstimmungen über 0,5.

Ich werde es später mit dem vollständigen Datensatz versuchen und das Ergebnis in Twitter melden.

Bitte zögern Sie nicht zu berichten, was Sie in Ihren Experimenten erhalten.

Priorisierung der vielversprechendsten Ideen

Als ich die unbekannten Abfragen visuell untersuchte, fand ich einige interessante Muster, die es wert waren, weiter untersucht zu werden.

Einer von ungefähr Fundraising-Ideen und noch eine über [no-profit] in meiner Nähe.

Verwenden wir einen datengesteuerten Ansatz, um die potenziellen Auswirkungen jedes einzelnen mit Visualisierung und Prognose zu bewerten.

Zuerst erstelle ich zwei gefilterte Datenrahmen, in denen die Abfrage das Schlüsselwort pattern enthält.

ideas_df = df[df['query'].str.contains("idea")]
near_me_df = df[df['query'].str.contains("near me")]

Wir werden die Datumsspalte als Index des Datenrahmens festlegen.

Werbung

Lesen Sie weiter unten

Auf diese Weise können wir erweiterte Gruppierungen nach Tagen oder Monaten durchführen.

ideas_df = ideas_df.set_index("date")
near_me_df = near_me_df.set_index("date")

So prognostizieren Sie den Erfolg von Inhalten mit Python

Sie können sehen, dass das Datum nicht mehr in der Liste der Spalten enthalten ist.

Gruppieren wir beide Datensätze nach Monat und visualisieren sie.

Hier ist der Code für den Datensatz „Ideen“.

grouped_ideas_df = ideas_df.groupby(pd.Grouper(freq='M')).sum()[["clicks", "impressions"]]

Ich habe in Fettdruck eine mächtige Pandas-Klasse hervorgehoben, den Grouper, der eine erweiterte Gruppierung nach Datumsangaben ermöglicht.

M. steht für Monatsendfrequenz.

Werbung

Lesen Sie weiter unten

Wir benützen auch D., was für die Häufigkeit von Kalendertagen steht.

Die vollständige Liste der Zeitreihen-Frequenzaliasnamen finden Sie hier.

So prognostizieren Sie den Erfolg von Inhalten mit Python
Zeichnen wir nun die Datensätze, um ihre historische Leistung zu sehen.

Wir werden die Plotbibliothek dazu verwenden.

import plotly.express as px


fig = px.line(grouped_ideas_df, y="clicks", title="Clicks over Time for Ideas")
fig.show()

So prognostizieren Sie den Erfolg von Inhalten mit Python
Dies ist die Handlung für die Fragen in meiner Nähe.

So prognostizieren Sie den Erfolg von Inhalten mit Python
Diese Visualisierungen zeigen eine deutlich steigende Nachfrage nach beiden Möglichkeiten, aber wir können es besser machen und versuchen, Prognosen abzugeben, um zu sehen, welche zukünftigen Auswirkungen dies haben könnte.

Monatliche Datenpunkte sind zu wenig, um Vorhersagemodelle zu erstellen.

Werbung

Lesen Sie weiter unten

Erhöhen wir die Häufigkeit auf Tage.

So sehen die Diagramme mit täglichen Daten aus.

So prognostizieren Sie den Erfolg von Inhalten mit Python
So prognostizieren Sie den Erfolg von Inhalten mit Python
Sobald wir die Datensätze nach Tag gruppiert haben, können wir die Facebook Prophet-Bibliothek verwenden, um Klicks für mehrere Tage in der Zukunft vorherzusagen.

Wir werden Code aus einem aktuellen Python Twittorial meines Teams verwenden.

Werbung

Lesen Sie weiter unten

Wir müssen nur die Spalten umbenennen, damit sie den Erwartungen der Bibliothek entsprechen.

dft = grouped_ideas_df.reset_index().rename(columns={"date":"ds", "clicks":"y"})

Wir können das Vorhersagemodell mit zwei Linien trainieren.

m = Prophet()

m.fit(dft)

Sobald das Modell trainiert ist, können wir damit die nächsten 30 Tage vorhersagen.

#Predicting clicks for the next 30 days.

future_30 = m.make_future_dataframe(periods=30)

forecast_30 = m.predict(future_30)

Schließlich können wir unsere Prognose für den Datensatz mit den Fundraising-Ideen visualisieren.

#Visualizing the prediction for next 30 days.

plot_plotly(m, forecast_30, xlabel="Date", ylabel="Clicks")

So prognostizieren Sie den Erfolg von Inhalten mit Python

Die schwarzen Punkte repräsentieren die tatsächlichen Datenpunkte.

Die dunkelblaue Linie ist der Mittelpunkt der Vorhersagen und das hellblaue Band ist die Unsicherheit.

Werbung

Lesen Sie weiter unten

Sie können sehen, dass das Modell versucht, so viele Punkte wie möglich in das Muster zu passen, aber es passt nicht zu dem großen Ausreißer um den Mai.

Dieses Jahr waren viele Dinge unvorhersehbar, also keine Überraschung hier.

In der Praxis verbessern sich die Vorhersagen dramatisch, wenn Sie einen Datensatz von mindestens ein paar Jahren haben.

Der letzte Schritt besteht darin, den Verkehr mehrerer Kandidatenideen vorherzusagen, zusammenzufassen und Ideen anhand des besten Verkehrspotenzials zu bewerten.

Ressourcen, um mehr zu erfahren

Der beste Weg zu lernen ist zu tun. Sie finden ein Google Colab-Notizbuch mit allen Schritten, die ich hier behandelt habe.

Ich ermutige Sie, es zu versuchen und zu berichten, was Sie mit mir lernen auf Twitter 🐍🔥

}// end of scroll user