Uso de Python + Streamlit para encontrar oportunidades de palabras clave de distancia sorprendente

  • HatumSEO
  • Estrategia SEO
  • Uso de Python + Streamlit para encontrar oportunidades de palabras clave de distancia sorprendente

Aprenda a usar una secuencia de comandos de Python + la aplicación Streamlit para identificar oportunidades de palabras clave de distancia llamativa, ¡no se requieren conocimientos de codificación!

Python es una excelente herramienta para automatizar tareas repetitivas y obtener información adicional sobre los datos.

En este artículo, aprenderá cómo crear una herramienta para verificar qué palabras clave están cerca de clasificarse en las posiciones uno a tres y le indicará si existe la oportunidad de incorporar naturalmente esas palabras clave en la página.

Es perfecto tanto para principiantes como para profesionales de Python y es una excelente introducción al uso de Python para SEO.

Si solo desea quedarse atrapado, hay una práctica aplicación Streamlit disponible para el código. Esto es fácil de usar y no requiere experiencia en codificación. Streamlit app

También hay una hoja de Google Colaboratory si deseas hurgar con el código. Google Colaboratory Sheet

Aquí hay un ejemplo de lo que haremos hoy:

An Excel sheet documenting onpage keywords opportunites generated with Python

Estas palabras clave se encuentran en el título de la página y H1, pero no en la copia.. Agregar estas palabras clave de forma natural a la copia existente sería una manera fácil de aumentar la relevancia de estas palabras clave.

Al tomar la pista de los motores de búsqueda y, naturalmente, incluir las palabras clave faltantes para las que un sitio ya se clasifica, aumentamos la confianza de los motores de búsqueda para clasificar esas palabras clave más arriba en los SERP.

Este informe se puede crear manualmente, pero lleva bastante tiempo.

Entonces, vamos a automatizar el proceso usando un script SEO de Python.

Vista previa de la salida

Esta es una muestra de cómo se verá el resultado final después de ejecutar el informe:

Excel sheet showing and example of keywords that can be optimised by using the striking distance report

El resultado final toma las cinco oportunidades principales por volumen de búsqueda para cada página y las coloca ordenadamente en forma horizontal junto con el volumen de búsqueda estimado.

También muestra el volumen de búsqueda total de todas las palabras clave que una página tiene a una distancia sorprendente, así como el número total de palabras clave al alcance.

Luego, se verifican las cinco palabras clave principales por volumen de búsqueda para ver si se encuentran en el título, H1 o copia, y luego se marcan como VERDADERO o FALSO.

¡Esto es genial para encontrar victorias rápidas!

Empezando

La configuración es bastante sencilla.. Solo necesitamos un rastreo del sitio (idealmente con una extracción personalizada para la copia que desea verificar) y un archivo exportado de todas las palabras clave para las que se clasifica un sitio.

Esta publicación lo guiará a través de la configuración, el código y se vinculará a una hoja de Google Colaboratory si solo desea quedarse atascado sin codificarlo usted mismo.

Para empezar necesitarás:

Lo llamamos el Informe de distancia sorprendente, ya que marca las palabras clave que se encuentran fácilmente a una distancia sorprendente.

(Hemos definido la distancia llamativa como palabras clave que se clasifican en las posiciones 4 a 20, pero hemos hecho que esta sea una opción configurable en caso de que desee definir sus propios parámetros).

Informe Striking Distance SEO: Primeros pasos

1. Rastrear el sitio web objetivo

  • Configure un extractor personalizado para la copia de la página (opcional, pero recomendado).
  • Filtre las páginas de paginación del rastreo.

2. Exporte todas las palabras clave que clasifica el sitio para usar su proveedor favorito

  • Filtre las palabras clave que se activan como un enlace de sitio.
  • Elimine las palabras clave que se activan como una imagen.
  • Filtrar palabras clave de marca.
  • Utilice ambas exportaciones para crear un informe de distancia de impacto procesable a partir de la palabra clave y rastree los datos con Python.

Rastreo del sitio

Opté por usar Screaming Frog para obtener el rastreo inicial. Cualquier rastreador funcionará, siempre que la exportación CSV use los mismos nombres de columna o se les cambie el nombre para que coincidan.

El script espera encontrar las siguientes columnas en la exportación CSV de rastreo:

"Address", "Title 1", "H1-1", "Copy 1", "Indexability"

Configuración de rastreo

Lo primero que debe hacer es dirigirse a los ajustes de configuración principales dentro de Screaming Frog:

Configuración > Araña > Rastreo

Los principales ajustes a utilizar son:

Rastrear enlaces internos, canónicos y la configuración de paginación (Rel Next/Prev).

(La secuencia de comandos funcionará con todo lo demás seleccionado, ¡pero el rastreo tardará más en completarse!)

Recommended Screaming Frog Crawl Settings

A continuación, está en la pestaña Extracción.

Configuración > Araña > Extracción

Recommended Screaming Frog Extraction Crawl Settings

Como mínimo, necesitamos extraer el título de la página, H1, y calcular si la página es indexable como se muestra a continuación.

La indexabilidad es útil porque es una manera fácil para que el script identifique qué URL colocar de una sola vez, dejando solo las palabras clave que son elegibles para clasificar en los SERP.

Si el script no puede encontrar la columna de indexabilidad, seguirá funcionando normalmente pero no diferenciará entre páginas que pueden y no pueden clasificarse.

Configuración de un extractor personalizado para la copia de página

Para verificar si una palabra clave se encuentra dentro de la copia de la página, debemos configurar un extractor personalizado en Screaming Frog.

Configuración > Personalizado > Extracción

Nombre el extractor «Copiar» como se ve a continuación.

Screaming Frog Custom Extraction Showing Default Options for Extracting the Page Copy

Importante: la secuencia de comandos espera que el extractor se llame «Copiar» como se indica arriba, ¡así que verifique dos veces!

Por último, asegúrese de que Extraer texto esté seleccionado para exportar la copia como texto, en lugar de HTML.

Hay muchas guías en línea sobre el uso de extractores personalizados si necesita ayuda para configurar uno, por lo que no lo volveré a mencionar aquí.

Una vez que se ha configurado la extracción, es hora de rastrear el sitio y exportar el archivo HTML en formato CSV.

Exportando el archivo CSV

Exportar el archivo CSV es tan fácil como cambiar el menú desplegable que se muestra debajo de Interno a HTML y presionar el botón Exportar.

Interno > HTML > Exportar

Screaming Frog - Export Internal HTML Settings

Después de hacer clic en Exportar, es importante asegurarse de que el tipo esté configurado en formato CSV.

La pantalla de exportación debería verse como la siguiente:

Screaming Frog Internal HTML CSV Export Settings

Consejo 1: Filtrado de páginas de paginación

Recomiendo filtrar las páginas de paginación de su rastreo seleccionando Respetar siguiente/anterior en la configuración avanzada (o simplemente eliminándolas del archivo CSV, si lo prefiere).

Screaming Frog Settings to Respect Rel / Prev

Consejo 2: guardar la configuración de rastreo

Una vez que haya configurado el rastreo, vale la pena guardar la configuración de rastreo (que también recordará la extracción personalizada).

Esto ahorrará mucho tiempo si desea volver a utilizar el script en el futuro.

Archivo > Configuración > Guardar como

How to save a configuration file in screaming frog

Exportación de palabras clave

Una vez que tengamos el archivo de rastreo, el siguiente paso es cargar su herramienta de investigación de palabras clave favorita y exportar todas las palabras clave para las que clasifica un sitio.

El objetivo aquí es exportar todas las palabras clave para las que se clasifica un sitio, filtrando las palabras clave de marca y cualquiera que se active como un enlace de sitio o una imagen.

Para este ejemplo, estoy usando el Informe de palabras clave orgánicas en Ahrefs, pero funcionará igual de bien con Semrush si esa es su herramienta preferida.

En Ahrefs, ingrese el dominio que desea verificar en Site Explorer y elija Palabras clave orgánicas.

Ahrefs Site Explorer Settings

Site Explorer > Palabras clave orgánicas

Ahrefs - How Setting to Export Organic Keywords a Site Ranks For

Esto mostrará todas las palabras clave para las que se clasifica el sitio.

Filtrado de enlaces de sitio y enlaces de imagen

El siguiente paso es filtrar las palabras clave activadas como un enlace de sitio o un paquete de imágenes.

El motivo por el que debemos filtrar los enlaces de sitio es que no influyen en la clasificación de la URL principal.. Esto se debe a que técnicamente solo la página principal se clasifica para la palabra clave, no las URL del enlace de sitio que se muestran debajo de ella.

Filtrar los enlaces de sitio garantizará que estemos optimizando la página correcta.

Ahrefs Screenshot Demonstrating Pages Ranking for Sitelink Keywords

Aquí se explica cómo hacerlo en Ahrefs.

Image showing how to exclude images and sitelinks from a keyword export

Por último, recomiendo filtrar cualquier palabra clave de marca. Puede hacerlo filtrando la salida CSV directamente o prefiltrando en la herramienta de palabras clave de su elección antes de la exportación.

Finalmente, al exportar, asegúrese de elegir Exportación completa y el formato UTF-8 como se muestra a continuación.

Image showing how to export keywords in UTF-8 format as a csv file

De forma predeterminada, el script funciona con exportaciones de palabras clave Ahrefs (v1/v2) y Semrush. Puede funcionar con cualquier archivo CSV de palabra clave siempre que estén presentes los nombres de columna que espera el script.

Procesando

Las siguientes instrucciones se refieren a la ejecución de una hoja de Google Colaboratory para ejecutar el código.

Ahora hay una opción más simple para aquellos que la prefieren en forma de una aplicación Streamlit. Simplemente siga las instrucciones proporcionadas para cargar su archivo de rastreo y palabras clave. Streamlit app

Ahora que tenemos nuestros archivos exportados, todo lo que queda por hacer es subirlos a la hoja de Google Colaboratory para su procesamiento. Google Colaboratory sheet

Seleccione Tiempo de ejecución > Ejecutar todo en la barra de navegación superior para ejecutar todas las celdas de la hoja.

Image showing how to run the stirking distance Python script from Google Collaboratory

El script le pedirá que cargue primero la palabra clave CSV de Ahrefs o Semrush y luego el archivo de rastreo.

Image showing how to upload the csv files to Google Collaboratory

¡Eso es todo!

Image showing the Striking Distance final output

Una vez que esté familiarizado con todo el proceso, usar el script es realmente sencillo.

Desglose del código y explicación

Si está aprendiendo Python para SEO y está interesado en lo que está haciendo el código para producir el informe, ¡quédese para ver el tutorial del código!

Instalar las bibliotecas

Instalemos pandas para que la bola ruede.

!pip install pandas

Importar los módulos

A continuación, necesitamos importar los módulos requeridos.

import pandas as pd
from pandas import DataFrame, Series
from typing import Union
from google.colab import files

Establecer las variables

Ahora es el momento de establecer las variables.

El script considera cualquier palabra clave entre las posiciones cuatro y 20 como dentro de la distancia de ataque.

Cambiar las variables aquí le permitirá definir su propio rango si lo desea. Vale la pena experimentar con la configuración para obtener el mejor resultado posible para sus necesidades.

# set all variables here
min_volume = 10  # set the minimum search volume
min_position = 4  # set the minimum position  / default = 4
max_position = 20 # set the maximum position  / default = 20
drop_all_true = True  # If all checks (h1/title/copy) are true, remove the recommendation (Nothing to do)
pagination_filters = "filterby|page|p="  # filter patterns used to detect and drop paginated pages

Cargue el archivo CSV de exportación de palabras clave

El siguiente paso es leer la lista de palabras clave del archivo CSV.

Está configurado para aceptar un informe de Ahrefs (V1 y V2), así como una exportación de Semrush.

Este código lee el archivo CSV en un Pandas DataFrame.

upload = files.upload()
upload = list(upload.keys())[0]
df_keywords = pd.read_csv(
    (upload),
    error_bad_lines=False,
    low_memory=False,
    encoding="utf8",
    dtype={
        "URL": "str",
        "Keyword": "str",
        "Volume": "str",
        "Position": int,
        "Current URL": "str",
        "Search Volume": int,
    },
)
print("Uploaded Keyword CSV File Successfully!")

Si todo salió según lo planeado, verá una vista previa del DataFrame creado a partir de la palabra clave CSV export.

Dataframe showing sucessful upload of the keyword export file

Cargue el archivo CSV de exportación de rastreo

Una vez que se han importado las palabras clave, es hora de cargar el archivo de rastreo.

This fairly simple piece of code reads in the crawl with some error handling option and creates a Pandas DataFrame named df_crawl.

upload = files.upload()
upload = list(upload.keys())[0]
df_crawl = pd.read_csv(
    (upload),
        error_bad_lines=False,
        low_memory=False,
        encoding="utf8",
        dtype="str",
    )
print("Uploaded Crawl Dataframe Successfully!")

Una vez que el archivo CSV haya terminado de cargarse, verá una vista previa del DataFrame.

Image showing a dataframe of the crawl file being uploaded successfully

Limpie y estandarice los datos de palabras clave

El siguiente paso es cambiar el nombre de las columnas para garantizar la estandarización entre los tipos más comunes de exportaciones de archivos.

Esencialmente, estamos poniendo la palabra clave DataFrame en buen estado y filtrando usando límites definidos por las variables.

df_keywords.rename(
    columns={
        "Current position": "Position",
        "Current URL": "URL",
        "Search Volume": "Volume",
    },
    inplace=True,
)

# keep only the following columns from the keyword dataframe
cols = "URL", "Keyword", "Volume", "Position"
df_keywords = df_keywords.reindex(columns=cols)

try:
    # clean the data. (v1 of the ahrefs keyword export combines strings and ints in the volume column)
    df_keywords["Volume"] = df_keywords["Volume"].str.replace("0-10", "0")
except AttributeError:
    pass

# clean the keyword data
df_keywords = df_keywords[df_keywords["URL"].notna()]  # remove any missing values
df_keywords = df_keywords[df_keywords["Volume"].notna()]  # remove any missing values
df_keywords = df_keywords.astype({"Volume": int})  # change data type to int
df_keywords = df_keywords.sort_values(by="Volume", ascending=False)  # sort by highest vol to keep the top opportunity

# make new dataframe to merge search volume back in later
df_keyword_vol = df_keywords[["Keyword", "Volume"]]

# drop rows if minimum search volume doesn't match specified criteria
df_keywords.loc[df_keywords["Volume"] < min_volume, "Volume_Too_Low"] = "drop"
df_keywords = df_keywords[~df_keywords["Volume_Too_Low"].isin(["drop"])]

# drop rows if minimum search position doesn't match specified criteria
df_keywords.loc[df_keywords["Position"] <= min_position, "Position_Too_High"] = "drop"
df_keywords = df_keywords[~df_keywords["Position_Too_High"].isin(["drop"])]
# drop rows if maximum search position doesn't match specified criteria
df_keywords.loc[df_keywords["Position"] >= max_position, "Position_Too_Low"] = "drop"
df_keywords = df_keywords[~df_keywords["Position_Too_Low"].isin(["drop"])]

Limpie y estandarice los datos de rastreo

A continuación, debemos limpiar y estandarizar los datos de rastreo.

Esencialmente, usamos la reindexación para mantener solo las columnas «Dirección», «Indexabilidad», «Título de la página», «H1-1» y «Copia 1», descartando el resto.

Usamos la práctica columna «Indexabilidad» para mantener solo las filas que son indexables. Esto eliminará las URL canonicalizadas, los redireccionamientos, etc.. Recomiendo habilitar esta opción en el rastreo.

Por último, estandarizamos los nombres de las columnas para que sea un poco más agradable trabajar con ellos.

# keep only the following columns from the crawl dataframe
cols = "Address", "Indexability", "Title 1", "H1-1", "Copy 1"
df_crawl = df_crawl.reindex(columns=cols)
# drop non-indexable rows
df_crawl = df_crawl[~df_crawl["Indexability"].isin(["Non-Indexable"])]
# standardise the column names
df_crawl.rename(columns={"Address": "URL", "Title 1": "Title", "H1-1": "H1", "Copy 1": "Copy"}, inplace=True)
df_crawl.head()

Agrupar las palabras clave

A medida que nos acercamos al resultado final, es necesario agrupar nuestras palabras clave para calcular la oportunidad total para cada página.

Aquí, estamos calculando cuántas palabras clave están dentro de la distancia de ataque para cada página, junto con el volumen de búsqueda combinado.

# groups the URLs (remove the dupes and combines stats)
# make a copy of the keywords dataframe for grouping - this ensures stats can be merged back in later from the OG df
df_keywords_group = df_keywords.copy()
df_keywords_group["KWs in Striking Dist."] = 1  # used to count the number of keywords in striking distance
df_keywords_group = (
    df_keywords_group.groupby("URL")
    .agg({"Volume": "sum", "KWs in Striking Dist.": "count"})
    .reset_index()
)
df_keywords_group.head()
DataFrame showing how many keywords were found within striking distance

Una vez completado, verá una vista previa del DataFrame.

Mostrar palabras clave en filas adyacentes

Utilizamos los datos agrupados como base para el resultado final.. Usamos Pandas.unstack para remodelar el marco de datos para mostrar las palabras clave en el estilo de una exportación de GrepWords.

DataFrame showing a grepwords type-view of keywords laid out horizontally
# create a new df, combine the merged data with the original data. display in adjacent rows ala grepwords
df_merged_all_kws = df_keywords_group.merge(
    df_keywords.groupby("URL")["Keyword"]
    .apply(lambda x: x.reset_index(drop=True))
    .unstack()
    .reset_index()
)

# sort by biggest opportunity
df_merged_all_kws = df_merged_all_kws.sort_values(
    by="KWs in Striking Dist.", ascending=False
)

# reindex the columns to keep just the top five keywords
cols = "URL", "Volume", "KWs in Striking Dist.", 0, 1, 2, 3, 4
df_merged_all_kws = df_merged_all_kws.reindex(columns=cols)

# create union and rename the columns
df_striking: Union[Series, DataFrame, None] = df_merged_all_kws.rename(
    columns={
        "Volume": "Striking Dist. Vol",
        0: "KW1",
        1: "KW2",
        2: "KW3",
        3: "KW4",
        4: "KW5",
    }
)

# merges striking distance df with crawl df to merge in the title, h1 and category description
df_striking = pd.merge(df_striking, df_crawl, on="URL", how="inner")

Establecer el orden final de las columnas e insertar columnas de marcador de posición

Por último, establecemos el orden final de las columnas y fusionamos los datos de palabras clave originales.

¡Hay muchas columnas para ordenar y crear!

# set the final column order and merge the keyword data in

cols = [
    "URL",
    "Title",
    "H1",
    "Copy",
    "Striking Dist. Vol",
    "KWs in Striking Dist.",
    "KW1",
    "KW1 Vol",
    "KW1 in Title",
    "KW1 in H1",
    "KW1 in Copy",
    "KW2",
    "KW2 Vol",
    "KW2 in Title",
    "KW2 in H1",
    "KW2 in Copy",
    "KW3",
    "KW3 Vol",
    "KW3 in Title",
    "KW3 in H1",
    "KW3 in Copy",
    "KW4",
    "KW4 Vol",
    "KW4 in Title",
    "KW4 in H1",
    "KW4 in Copy",
    "KW5",
    "KW5 Vol",
    "KW5 in Title",
    "KW5 in H1",
    "KW5 in Copy",
]

# re-index the columns to place them in a logical order + inserts new blank columns for kw checks.
df_striking = df_striking.reindex(columns=cols)

Fusionar los datos de palabras clave para cada columna

Este código fusiona los datos del volumen de palabras clave en el DataFrame. Es más o menos el equivalente de una función BUSCARV de Excel.

# merge in keyword data for each keyword column (KW1 - KW5)
df_striking = pd.merge(df_striking, df_keyword_vol, left_on="KW1", right_on="Keyword", how="left")
df_striking['KW1 Vol'] = df_striking['Volume']
df_striking.drop(['Keyword', 'Volume'], axis=1, inplace=True)
df_striking = pd.merge(df_striking, df_keyword_vol, left_on="KW2", right_on="Keyword", how="left")
df_striking['KW2 Vol'] = df_striking['Volume']
df_striking.drop(['Keyword', 'Volume'], axis=1, inplace=True)
df_striking = pd.merge(df_striking, df_keyword_vol, left_on="KW3", right_on="Keyword", how="left")
df_striking['KW3 Vol'] = df_striking['Volume']
df_striking.drop(['Keyword', 'Volume'], axis=1, inplace=True)
df_striking = pd.merge(df_striking, df_keyword_vol, left_on="KW4", right_on="Keyword", how="left")
df_striking['KW4 Vol'] = df_striking['Volume']
df_striking.drop(['Keyword', 'Volume'], axis=1, inplace=True)
df_striking = pd.merge(df_striking, df_keyword_vol, left_on="KW5", right_on="Keyword", how="left")
df_striking['KW5 Vol'] = df_striking['Volume']
df_striking.drop(['Keyword', 'Volume'], axis=1, inplace=True)

Limpie los datos un poco más

Los datos requieren una limpieza adicional para completar los valores vacíos (NaN), como cadenas vacías. Esto mejora la legibilidad del resultado final al crear celdas en blanco, en lugar de celdas con valores de cadena NaN.

A continuación, convertimos las columnas a minúsculas para que coincidan al verificar si una palabra clave de destino aparece en una columna específica.

# replace nan values with empty strings
df_striking = df_striking.fillna("")
# drop the title, h1 and category description to lower case so kws can be matched to them
df_striking["Title"] = df_striking["Title"].str.lower()
df_striking["H1"] = df_striking["H1"].str.lower()
df_striking["Copy"] = df_striking["Copy"].str.lower()

Compruebe si la palabra clave aparece en el título/H1/Copia y devuelva verdadero o falso

Este código verifica si la palabra clave de destino se encuentra en el título de la página/H1 o copia.

Marcará verdadero o falso dependiendo de si se encontró una palabra clave dentro de los elementos en la página.

df_striking["KW1 in Title"] = df_striking.apply(lambda row: row["KW1"] in row["Title"], axis=1)
df_striking["KW1 in H1"] = df_striking.apply(lambda row: row["KW1"] in row["H1"], axis=1)
df_striking["KW1 in Copy"] = df_striking.apply(lambda row: row["KW1"] in row["Copy"], axis=1)
df_striking["KW2 in Title"] = df_striking.apply(lambda row: row["KW2"] in row["Title"], axis=1)
df_striking["KW2 in H1"] = df_striking.apply(lambda row: row["KW2"] in row["H1"], axis=1)
df_striking["KW2 in Copy"] = df_striking.apply(lambda row: row["KW2"] in row["Copy"], axis=1)
df_striking["KW3 in Title"] = df_striking.apply(lambda row: row["KW3"] in row["Title"], axis=1)
df_striking["KW3 in H1"] = df_striking.apply(lambda row: row["KW3"] in row["H1"], axis=1)
df_striking["KW3 in Copy"] = df_striking.apply(lambda row: row["KW3"] in row["Copy"], axis=1)
df_striking["KW4 in Title"] = df_striking.apply(lambda row: row["KW4"] in row["Title"], axis=1)
df_striking["KW4 in H1"] = df_striking.apply(lambda row: row["KW4"] in row["H1"], axis=1)
df_striking["KW4 in Copy"] = df_striking.apply(lambda row: row["KW4"] in row["Copy"], axis=1)
df_striking["KW5 in Title"] = df_striking.apply(lambda row: row["KW5"] in row["Title"], axis=1)
df_striking["KW5 in H1"] = df_striking.apply(lambda row: row["KW5"] in row["H1"], axis=1)
df_striking["KW5 in Copy"] = df_striking.apply(lambda row: row["KW5"] in row["Copy"], axis=1)

Eliminar valores verdadero/falso si no hay palabra clave

Esto eliminará los valores verdadero/falso cuando no haya una palabra clave adyacente.

# delete true / false values if there is no keyword
df_striking.loc[df_striking["KW1"] == "", ["KW1 in Title", "KW1 in H1", "KW1 in Copy"]] = ""
df_striking.loc[df_striking["KW2"] == "", ["KW2 in Title", "KW2 in H1", "KW2 in Copy"]] = ""
df_striking.loc[df_striking["KW3"] == "", ["KW3 in Title", "KW3 in H1", "KW3 in Copy"]] = ""
df_striking.loc[df_striking["KW4"] == "", ["KW4 in Title", "KW4 in H1", "KW4 in Copy"]] = ""
df_striking.loc[df_striking["KW5"] == "", ["KW5 in Title", "KW5 in H1", "KW5 in Copy"]] = ""
df_striking.head()

Soltar filas si todos los valores == verdadero

Esta opción configurable es realmente útil para reducir la cantidad de tiempo de control de calidad requerido para el resultado final al eliminar la palabra clave oportunidad del resultado final si se encuentra en las tres columnas.

def true_dropper(col1, col2, col3):
    drop = df_striking.drop(
        df_striking[
            (df_striking[col1] == True)
            & (df_striking[col2] == True)
            & (df_striking[col3] == True)
        ].index
    )
    return drop

if drop_all_true == True:
    df_striking = true_dropper("KW1 in Title", "KW1 in H1", "KW1 in Copy")
    df_striking = true_dropper("KW2 in Title", "KW2 in H1", "KW2 in Copy")
    df_striking = true_dropper("KW3 in Title", "KW3 in H1", "KW3 in Copy")
    df_striking = true_dropper("KW4 in Title", "KW4 in H1", "KW4 in Copy")
    df_striking = true_dropper("KW5 in Title", "KW5 in H1", "KW5 in Copy")

Descargar el archivo CSV

El último paso es descargar el archivo CSV e iniciar el proceso de optimización.

df_striking.to_csv('Keywords in Striking Distance.csv', index=False)
files.download("Keywords in Striking Distance.csv")

Conclusión

Si está buscando ganancias rápidas para cualquier sitio web, el informe de distancia de impacto es una forma realmente fácil de encontrarlas.

No dejes que la cantidad de pasos te engañe. No es tan complejo como parece. Es tan simple como cargar un rastreo y una palabra clave exportada a la hoja de Google Colab proporcionada o usar la aplicación Streamlit.

¡Los resultados definitivamente valen la pena!

Más recursos:

Imagen destacada: aurielaki/Shutterstock

Leer el articulo original en Search Engine Journal.

¡Danos un Voto!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿Tienes una pregunta?

Luis Narciso
Sobre SEO
(Posicionamiento Web)

Frank Fajardo
Sobre Diseño Web, Anuncios, Diseño y Redes Sociales