Menu

Bulk SEO

The "Bulk SEO" application lets you apply the fundamentals of SEO. For example, you can modify title, canonical, hreflang and meta robot tags, and add a link block to thousands of pages by setting up a CSV file. It's the application that's going to make you more agile every day 😉.

The video tutorial

How do I use the Bulk SEO application?

To use Bulk SEO, follow the steps below.

  1. To access the "Bulk SEO" application, connect to our EdgeSEO solution solution, then click on the "Bulk SEO" application setup button.
  2. If you're using the application for the first time, download the CSV template from the interface or duplicate the GoogleSheet template > BULK SEO tab
  3. If you've already used "Bulk SEO", 🚨 you'll need to start from your existing file. The "Bulk SEO" application works with a "cancel and replace" mechanism for the csv file. You can download the file currently in production from the link on the interface.
  4. Fill in the columns of the CSV file with your data. Full details of each column are given below 👇
  5. Upload your file and click on save.
  6. Check that the changes have been applied to your urls.

Columns in the "Bulk SEO" file

url

keyboard_arrow_down

The column url column is used to indicate the page to which you wish to apply modifications.
The url column is mandatory for each line.
We expect a valid url that responds with a status code 200 in the column

‍Examplein csv file
‍A
valid url must be structured with the protocol (http:// or https://) followed by the full domain.
Below are some examples of urls that are valid:

<url>

https://www.edgeseo.io/

https://edgeseo.io/

https://www.edgeseo.io/blog

https://www.edgeseo.io/blog?param=1

Below are some examples of URLs that will return an error:

❌ www.edgeseo.io → The https:// or http://
protocol is missing ❌ edgeseo.io → The https:// or http://
protocol is missing ❌ /blog → The https:// or http:// protocol and the full domain are missing.

title

keyboard_arrow_down

The title column lets you add or modify the content of the title tag in your page's source code.

How does it work?

  1. If the title column is empty, no action is taken.
  2. If you add content to the titlecolumn, we replace the existing content in the title tag with the content you entered in the title.
  3. If you add content to the title column and there is no title tag in your page's source code, we add the title tag with the content you've entered in the title.
title

My great title with an emoji 🚀

Result in source code

1<!DOCTYPE html>
2<html>
3<head>
4    <meta charset="UTF-8">
5    <title>Mon super titre avec un émoji 🚀</title>
6</head>
7<body>
8    <!-- Le contenu de votre page -->
9</body>
10</html>

meta-description

keyboard_arrow_down

The meta-description column is used to add or modify the content of the meta description tag in your page's source code.

How does it work?

  1. If the column is empty, no action is taken.
  2. If you add content to the meta-descriptioncolumn, we replace the existing content in the meta description tag with the content you entered in the meta-description.
  3. If you add content to the meta-description column and there is no meta description tag in your page's source code, we add the meta description tag with the content you've entered in the meta-description.

Example in csv file

meta-description

My new description that will improve my CTR 🤑 in #SERP

Result in source code

1<!DOCTYPE html>
2<html>
3<head>
4    <meta name="description" content="Mon nouvelle description qui va améliorer mon CTR 🤑 dans les #SERP">
5</head>
6<body>
7    <!-- Le contenu de votre page -->
8</body>
9</html>

canonical

keyboard_arrow_down

The column canonical column lets you add or modify the content of the canonical tag in your page's source code.

How does it work?

  1. If the canonical column is empty, no action is taken.
  2. If you add a url in the canonicalcolumn, we replace the existing content of the canonical tag with the content you entered in the canonical.
  3. If you add a url in the canonical column and there is no canonical tag in your page's source code, we add the canonical tag with the content you've entered in the canonical.

Example in csv file

canonical

https://www.edgeseo.io

Result in source code

1<!DOCTYPE html>
2<html>
3<head>
4    <link rel="canonical" href="https://www.edgeseo.io">
5</head>
6<body>
7    <!-- Le contenu de votre page -->
8</body>
9</html>

meta-robots

keyboard_arrow_down

The column meta-robots column lets you add or modify the content of the meta robots tag in your page's source code.

You can use the index / noindex and follow / nofollow properties separated by a " , ". We'll give you a few examples below 👇

How does it work?

  1. If the meta-robots column is empty, no action is taken.
  2. If you add properties to the meta-robotscolumn, we replace the existing content of the meta robots tag with the properties you've entered in the meta-robots.
  3. If you add properties to the meta-robots column and there is no meta robots tag in your page's source code, we add the meta robots tag with the properties you entered in the meta-robots.
meta-robots

index,follow

noindex,nofollow

index,nofollow

noindex,follow

Result in source code

1<!DOCTYPE html>
2<html>
3<head>
4    <meta name="robots" content="index, follow">
5</head>
6<body>
7    <!-- Le contenu de votre page -->
8</body>
9</html>

hn-target, hn-content

keyboard_arrow_down

The hn-target and columns hn-content columns columns can be used to replace the text content of one or more hn tags in your page's source code. hn-target column is used to target the hn tag tag via CSS selector selector on which to modify the text.

The column hn-content column is used to add the text content to be modified to the hn tag.

How does it work?

  1. If the hn-target and hn-content columns are empty, no action is taken.
  2. If you fill in the hn-target and hn-contentcolumn, we replace the text content of the hn tag in the hn-target column with the content of the hn-content column.
  3. To modify several hn tags tags in your page, you use the "|" separator for the hn-target and columns. hn-content columns. Here's an example 👇
hn-targethn-content
h1.maClass | h2.classTMy new title 😍 | My new subtitle

Result in source code

1<!DOCTYPE html>
2<html>
3<head>
4    
5</head>
6<body>
7    <h1 class="maClass">Mon nouveau titre 😍</h1>
8	<h2 class="classT">Mon nouveau sous-titre</h2>
9</body>
10</html>

hreflang-defaut, hreflang-pays, hreflang-url

keyboard_arrow_down

The column hreflang-default column is used to add the hreflang="x-default" tag

The columns hreflang-country and hreflang-url columns are used to add a hreflang="x-default" tag

The column hreflang-country column is used to add the country code for the url.

The column hreflang-url column is used to add the url associated with the country code.

How does it work?

  1. If the hreflang-default column is empty, no action is taken.
  2. If you have filled in the hreflang-defautcolumn, we add a hreflang="x-default" tag tag with the contents of the hreflang-default column.
  3. If the hreflang-country and hreflang-url columns are empty, no action is taken.
  4. If you have filled in the hreflang-country and hreflang-urlwe add a link rel="alternate" hreflang="hreflang-pays" href="hreflang-url"with the contents of the hreflang-pays and hreflang-url columns .
  5. To add several link rel="alternate" hreflang="" href="" tags to your page, use the "|" separator for the columns hreflang-country and columns. hreflang-url columns. Here's an example 👇

Example in csv file

hreflang-defauthreflang-countrieshreflang-url
https://url-defaut.comen|frhttps://url-defaut.com/en | https://url-defaut.com/fr

Result in source code

1<!DOCTYPE html>
2<html>
3<head>
4	<link rel="alternate" hreflang="en" href="https://url-defaut.com/en">
5	<link rel="alternate" hreflang="fr" href="https://url-defaut.com/fr">
6	<link rel="alternate" hreflang="x-default" href="https://url-defaut.com">
7</head>
8<body>
9    
10</body>
11</html>

html-target, html-content

keyboard_arrow_down

Columns html-target and columns html-content columns are used to add html content to your page.

The html-target column allows you to target the area where you wish to add the html via a keyword + a CSS selector

The column html-content column is used to indicate html content to be added to the targeted zone.

How does it work?

  1. If the html-target and html-content columns are empty, no action is taken.
  2. Si vous renseignez la colonne html-target et html-content, nous ajoutons le contenu <html> présent dans la colonne html-content dans la zone ciblée par la colonne html-target
  3. To replace several html content in your page, you use the "|" separator for the html-target and columns. html-content columns. Here's an example 👇
html-targethtml-content
prepend_inside div.maClass<p>Mon super contenu optimisé pour le SEO</p>
<div class=”link”>
<a href=”#”>ancre de lien 1</a><a href=”#”>ancre de lien 2</a>
</div>

Original source code

1<!DOCTYPE html>
2<html>
3<head>
4    
5</head>
6<body>
7    <div class="maClass">
8	<p>un pararagraphe</p>
9	</div>
10</body>
11</html>


Modified source code

1<!DOCTYPE html>
2<html>
3<head>
4    
5</head>
6<body>
7    <div class="maClass">
8			<p>Mon super contenu optimisé pour le SEO</p>
9			<div class=”link”>
10				<a href=”#”>ancre de lien 1</a>
11				<a href=”#”>ancre de lien 2</a>
12			</div>
13			<p>un pararagraphe</p>
14		</div>
15</body>
16</html>

Focus on keywords to target an area

To illustrate the behaviour of each keyword, we will start with this code htmlWe'll see where the content is positioned, depending on the keyword. html content we wish to add to the page.

prepend_inside

Adds content html content at the beginning of the targeted DOM element.
Result with prepend_inside.

1<!-- Code original -->
2<div class="maClass">
3	<p>Contenu existant</p>
4</div>
5
6<!-- Code ajouté avec le mot clé prepend_inside div.maClass -->
7<div class="maClass">
8	<p>Mon super contenu optimisé pour le SEO</p>
9	<div class=”link”>
10		<a href=”#”>ancre de lien 1</a>
11		<a href=”#”>ancre de lien 2</a>
12	</div>
13
14	<p>Contenu existant</p>
15</div>

insert_after_outside

Adds content html content content immediately after the targeted element in the DOM.
Result with insert_after_outside.

1<!-- Code original -->
2<div class="maClass">
3	<p>Contenu existant</p>
4</div>
5
6<!-- Code ajouté avec le mot clé insert_after_outside div.maClass -->
7<div class="maClass">
8	<p>Contenu existant</p>
9</div>
10<p>Mon super contenu optimisé pour le SEO</p>
11<div class=”link”>
12	<a href=”#”>ancre de lien 1</a>
13	<a href=”#”>ancre de lien 2</a>
14</div>

append_inside

Adds content html content to the end of the targeted DOM element.
Result with append_inside.

1<!-- Code original -->
2<div class="maClass">
3	<p>Contenu existant</p>
4</div>
5
6<!-- Code ajouté avec le mot clé append_inside div.maClass -->
7<div class="maClass">
8	<p>Contenu existant</p>
9	
10	<p>Mon super contenu optimisé pour le SEO</p>
11	<div class=”link”>
12		<a href=”#”>ancre de lien 1</a>
13		<a href=”#”>ancre de lien 2</a>
14	</div>
15</div>

insert_before_outside

Adds content html content content before the targeted element in the DOM.
Result with insert_before_outside.

1<!-- Code original -->
2<div class="maClass">
3	<p>Contenu existant</p>
4</div>
5
6<!-- Code ajouté avec le mot clé insert_before_outside div.maClass -->
7<p>Mon super contenu optimisé pour le SEO</p>
8<div class=”link”>
9	<a href=”#”>ancre de lien 1</a>
10	<a href=”#”>ancre de lien 2</a>
11</div>
12<div class="maClass">
13	<p>Contenu existant</p>
14</div>

html-remove

keyboard_arrow_down

The column html-remove column column is used to delete html content from your page by targeting it via a CSS selector.

How does it work?

  1. If the html-remove column is empty, no action is taken.
  2. If you add a CSS selector to the html-remove, we remove the html content targeted by the selector.
  3. To delete multiple contents html content in your page, you can use the "," separator to indicate multiple CSS selectors in the html-remove column. Here's an example 👇

Example in csv file

html-remove

span.maClass2 , h3

Original source code

1<!DOCTYPE html>
2<html>
3<head></head>
4<body>
5    <div class="main">
6			<h1>Mon titre 🍿</h1>
7			<span class="maClass2">
8				<h2>Contenu duppliqué</h2>
9				<p>Intellectum est enim mihi quidem in multis, et maxime in me ipso, sed paulo ante in omnibus, cum M</p>
10			</span>
11			<p>Marcellum senatui reique publicae concessisti, commemoratis praesertim offensionibus, te auctoritatem huius ordinis dignitatemque rei publicae tuis vel doloribus vel suspicionibus anteferre</p>
12			<h3>Mon titre qui ne sert à rien 😉</h3>
13			<a href="#">coucou !</a>
14		</div>
15</body>
16</html>


Modified source code

1<!DOCTYPE html>
2<html>
3<head></head>
4<body>
5    <div class="main">
6			<h1>Mon titre 🍿</h1>
7			
8			<p>Marcellum senatui reique publicae concessisti, commemoratis praesertim offensionibus, te auctoritatem huius ordinis dignitatemque rei publicae tuis vel doloribus vel suspicionibus anteferre</p>
9			
10			<a href="#">coucou !</a>
11		</div>
12</body>
13</html>

tag-switcher-target, tag-switcher-replace

keyboard_arrow_down

The columns beacon-switcher-target and columns tag-switcher-replace columns are used to modify an html tag with another.

The column tag-switcher-target column is used to target the html tag you wish to modify via a CSS selector

La colonne balise-switcher-replace permet d’indiquer la balise html que l’on souhaite utiliser pour remplacer la balise <html> ciblée.

How does it work?

  1. If the beacon-switcher-target and columns balise-switcher-replace columns are empty, no action is taken.
  2. If you fill in the beacon-switcher-target and columns tag-switcher-replacecolumns, we replace the html tag in the tag-switcher-target column with the tag in the tag-switcher-replace column.
  3. To modify several html tags tags in your page, you use the "|" separator for the tag-switcher-target and tag-switcher-replace
  4. . Here's an example 👇

Example in csv file

beacon-switcher-targetbeacon-switcher-replace
h1.maClassC | h2.classTspan | div

Original source code

1<!DOCTYPE html>
2<html>
3<head></head>
4<body>
5    <h1 class="maClass">Mon nouveau titre 😍</h1>
6		<h2 class="classT">Mon nouveau sous-titre</h2>
7</body>
8</html>


Modified source code

1<!DOCTYPE html>
2<html>
3<head></head>
4<body>
5    <span class="maClass">Mon nouveau titre 😍</span>
6		<div class="classT">Mon nouveau sous-titre</div>
7</body>
8</html>

link-obfuscation

keyboard_arrow_down

The column link-obfuscation column is used to obfuscate an a href="" link by targeting it via a CSS selector.

How does it work?

  1. If the link-obfuscation column is empty, no action is taken.
  2. If you add a CSS selector in the link-obfuscation, we offend the link targeted by the selector.
  3. To offend several href="" tag tags in your page, you can use the separator "," to indicate multiple CSS selectors in the link-obfuscation column. Here's an example 👇

Example in csv file

link-obfuscation

a[href="/mentions-legales"] , li a.maClass

Original source code

1<!DOCTYPE html>
2<html>
3<head></head>
4<body>
5    <div class="main">
6			<a href="/mentions-legales">Mentions legales</a>
7			<li class="maClass">
8				<a href="/link/link/link">lien</a>
9			<li>
10		</div>
11</body>
12</html>


Modified source code

1<!DOCTYPE html>
2<html>
3<head></head>
4<body>
5    <div class="main">
6			<span rel="aHR0cHM6Ly9mci5iZW5ldHRvbi5jb20vcHJpdmFjeS9wcml2YWN5Lmh0bWw=">Mentions legales</span>
7			<li class="maClass">
8				<span rel="aHR0cHM6Ly9mci5iZW5ldHRvbi5jb20vY29va2llc18vY29va2llc18uaHRtbA==">lien</a>
9			<li>
10		</div>
11</body>
12</html>

schema-org

keyboard_arrow_down

The column schema-org column is used to add structured data of type schema.org.

How does it work?

  1. If the schema-org column is empty, no action is taken.
  2. If you add structured data to the schema-org, we add them in the head tag of the page.
  3. To add several types of structured data to your page, you can use the separator "," to add them in the column schema-org column. Here's an example 👇

Example in csv file

schema-org

{"@context": "http://schema.org/","@type": "Recipe","name": ""},{"@context": "http://schema.org","@type": "WebPage",}

Result in source code

1<!DOCTYPE html>
2<html>
3<head>
4	<script type="application/ld+json">
5		{
6			"@context": "http://schema.org/",
7			"@type": "Recipe",
8			"name": ""
9		},
10		{
11			"@context": "http://schema.org",
12			"@type": "WebPage",
13		}
14	</script>
15	
16</head>
17<body>
18    <!-- Le contenu de votre page -->
19</body>
20</html>

opengraph

keyboard_arrow_down

The column opengraph column is used to add structured open graph data.

How does it work?

  1. If the opengraph column is empty, no action is taken.
  2. If you add structured data to the opengraph, we add them in the head tag of the page.

Example in csv file

opengraph

<meta property="og:title" content="Titre de la page"><meta property="og:type" content="website"><meta property="og:url" content="URL de la page"><meta property="og:image" content="URL de l'image"><meta property="og:description" content="Description de la page"><meta property="og:site_name" content="Nom du site"><meta property="og:locale" content="fr_FR">

Result in source code

1<!DOCTYPE html>
2<html>
3<head>
4	<meta property="og:title" content="Titre de la page">
5	<meta property="og:type" content="website">
6	<meta property="og:url" content="URL de la page">
7	<meta property="og:image" content="URL de l'image">
8	<meta property="og:description" content="Description de la page">
9	<meta property="og:site_name" content="Nom du site">
10	<meta property="og:locale" content="fr_FR">
11</head>
12<body>
13    <!-- Le contenu de votre page -->
14</body>
15</html>

twitter-card

keyboard_arrow_down

The column twitter-card column lets you add structured data of the open Twitter card type.

How does it work?

  1. If the twitter-card column is empty, no action is taken.
  2. If you add structured data to the twitter-card, we add it in the head tag of the page.

Example in csv file

twitter-card

<meta name="twitter:card" content="summary"><meta name="twitter:site" content="@NomDuCompteTwitter"><meta name="twitter:title" content="Titre de la page"><meta name="twitter:description" content="Description de la page"><meta name="twitter:image" content="URL de l'image"><meta name="twitter:url" content="URL de la page">

Result in source code

1<!DOCTYPE html>
2<html>
3<head>
4	<meta name="twitter:card" content="summary">
5	<meta name="twitter:site" content="@NomDuCompteTwitter">
6	<meta name="twitter:title" content="Titre de la page">
7	<meta name="twitter:description" content="Description de la page">
8	<meta name="twitter:image" content="URL de l'image">
9	<meta name="twitter:url" content="URL de la page">
10</head>
11<body>
12    <!-- Le contenu de votre page -->
13</body>
14</html>