Merge pull request #336 from odoo/12.0-restructure-seo-fgi

[IMP] Restructure of the tutorial in order to put useful todos at the…
This commit is contained in:
fgi-odoo 2019-04-03 13:10:44 +02:00 committed by GitHub
commit e01bd10286
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 344 additions and 318 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,22 +1,309 @@
============================================
How to do Search Engine Optimisation in Odoo
============================================
How is SEO handled in Odoo?
===========================
==================================================
How to do Search Engine Optimisation in Odoo (SEO)
==================================================
Search Engine Optimization (SEO) is a set of good practices to optimize
your website so that you get a better ranking in search engines like
Google. In short, a good SEO allows you to get more visitors.
Some examples of SEO rules: your web pages should load faster, your page
should have one and only one title ``<h1>``, your website should have a
Some examples of SEO rules: your web pages should load fast, your page
should have one and only one title ``<h1>``, meta tags
(alt-tag, title-tag) should be
consistent with the content, your website should have a
``/sitemap.xml`` file, etc.
To guarantee Odoo Website and Odoo
eCommerce users have a great SEO, Odoo abstracts all the technical
complexities of SEO and handles everything for you, in the best possible
way.
way. This will be explained here below.
But first, let see how you can easily boost your ranking
by finetuning the content and the meta tags of your website.
Meta Tags
=========
Title, Description
------------------
Every web page should define the ``<title>`` and ``<description>`` meta data.
These information elements are used by search engines to promote your website.
They are automatically generated based on page title & content, but you can
finetune them. Make sure they fit the content of the page, otherwise you will
be downgraded by search engines.
.. image:: media/seo01.png
:align: center
Keywords
--------
In order to write quality content and boost your traffic, Odoo provides
a ``<keyword>`` finder. Those keywords are the searches you want to head
towards your website. For each keyword, you see how it is used in the content
(H1, H2, page title, page description, page content) and what are the related
searches in Google. The more keywords are used the better.
.. image:: media/seo02.png
:align: center
.. note::
If your website is in multiple languages, you can use the Promote
tool for every language of a single page and set specific title,
description and search tags.
Content is King
===============
When it comes to SEO, content is usually king. Odoo provides several
modules to help you build your website content:
- **Odoo Blogs**: write great contents.
- **Odoo Slides**: publish all your Powerpoint or PDF presentations.
Their content is automatically indexed on the web page. Example:
`https://www.odoo.com/slides/public-channel-1 <https://www.odoo.com/slides/public-channel-1>`__
- **Odoo Forum**: let your community create contents for you. Example:
`https://odoo.com/forum/1 <https://odoo.com/forum/1>`__
(accounts for 30% of Odoo.com landing pages)
- **Odoo Mailing List Archive**: publish mailing list archives on your
website. Example:
`https://www.odoo.com/groups/community-59 <https://www.odoo.com/groups/community-59>`__
(1000 pages created per month)
.. note::
The 404 page is a regular page, that you can edit like any other
page in Odoo. That way, you can build a great 404 page to redirect to
the top content of your website when visitors get lost in invalid URLs.
Use Social Networks
===================
Social media is built for mass sharing. If lots of people share your content
on social media, then it's likely more people will link to it,
and links are a huge factor for SEO ranking.
Odoo embeds several tools to share content through social media:
Social Network
--------------
Odoo allows to link all your social network accounts in your website footer.
All you have to do is to refer all your accounts in your company settings.
.. image:: media/seo03.png
:align: center
Social Share
------------
Drop the building block *Share* on any page you want your visitors to share.
By clicking the icon, they are prompted to share the page in their social media
wall.
.. image:: media/seo04.png
:align: center
Most social media use a picture of the picture to decorate the share post.
Odoo uses the website logo by default but you can choose any other image
of your page in the Promote tool.
.. image:: media/seo05.png
:align: center
Facebook Page
-------------
Drop the building block *Facebook Page* to display a widget of your Facebook
business page and encourage visitors to follow it.
You can display the timeline, the next events and the messages.
Twitter Scroller
----------------
Display the Twitter feeds with customer satifaction on your website.
THis will increase the number of tweets and shares.
Test Your Website
=================
You can compare how your website rank, in terms of SEO, against Odoo
using WooRank free services:
`https://www.woorank.com <https://www.woorank.com>`__
URLs Handling
=============
This section sheds some light on how Odoo makes URLs SEO-friendly.
URLs Structure
--------------
A typical Odoo URL will look like this:
- https://www.mysite.com/fr\_FR/shop/product/my-great-product-31
With the following components:
- **https://** = Protocol
- **www.mysite.com** = your domain name
- **/fr\_FR** = page language. This part of the URL is
removed if the visitor browses the main language of the website
Thus, the main version of this page is:
https://www.mysite.com/shop/product/my-great-product-31
- **/shop/product** = every module defines its own namespace (/shop is
for the catalog of the eCommerce module, /shop/product is for a
product page).
- **my-great-product** = by default, this is the slugified title of the
product this page refers to. But you can customize it for SEO
purposes. A product named "Pain carré" will be slugified to
"pain-carre". Depending on the namespace, this could be different
objects (blog post, page title, forum post, forum comment,
product category, etc.).
- **-31** = the unique ID of the product
Note that any dynamic component of an URL can be reduced to its ID. As
an example, the following URLs all do a 301 redirect to the above URL:
- https://www.mysite.com/fr\_FR/shop/product/31 (short version)
- http://mysite.com/fr\_FR/shop/product/31 (even shorter version)
- http://mysite.com/fr\_FR/shop/product/other-product-name-31 (old
product name)
Some URLs have several dynamic parts, like this one (a blog category and
a post):
- https://www.odoo.com/blog/company-news-5/post/the-odoo-story-56
In the above example:
- *Company News* is the title of the blog
- *The Odoo Story* is the title of a specific blog post
When an Odoo page has a pager, the page number is set directly in the
URL (does not have a GET argument). This allows every page to be indexed
by search engines. Example:
- https://www.odoo.com/blog/page/3
Changes in URLs & Titles
------------------------
When the URL of a page changes (e.g. a more SEO friendly version of your
product name), you don't have to worry about updating all links:
- Odoo will automatically update all its links to the new URL.
- If external websites still points to the old URL, a 301 redirect will
be done to route visitors to the new website.
As an example, this URL:
- http://mysite.com/shop/product/old-product-name-31
Will automatically redirect to:
- http://mysite.com/shop/product/new-and-better-product-name-31
In short, just change the title of a blog post or the name of a product,
and the changes will apply automatically everywhere in your website. The
old link still works for links coming from external websites, with a 301
redirect to not lose the SEO link juice.
HTTPS
-----
Search engines boost ranking of secure HTTPS/SSL websites.
So, by default all Odoo Online instances are fully
based on HTTPS. If the visitor accesses your website through a non HTTPS
url, it gets a 301 redirect to its HTTPS equivalent.
Links: Nofollow Strategy
------------------------
The more a page is linked from external and quality websites,
the better it is for your SEO.
Here are Odoo strategies to manage links:
- Every link you add to your website is
"dofollow", which means that this link will contribute to the SEO
Juice for the linked page.
- Every link posted by a contributor (forum post, blog comment, etc.)
that links to your own website is "dofollow" too.
- But every link posted by a contributor that links to an external
website is "nofollow". In that way, you do not run the risk of
people posting links on your website to third-party websites
which have a bad reputation.
- Note that, when using the forum, contributors having a lot of Karma
can be trusted. In such case, their links will not have any
``rel="nofollow"`` attribute.
Multi-Language Support
======================
Multi-Language URLs
-------------------
If you run a website in multiple languages, the same content will be
available in different URLs, depending on the language used:
- https://www.mywebsite.com/shop/product/my-product-1 (main language, English here)
- https://www.mywebsite.com\/fr\_FR/shop/product/mon-produit-1 (French version)
In this example, fr\_FR is the language of the page. You can even have
several variations of the same language: pt\_BR (Portuguese from Brazil)
, pt\_PT (Portuguese from Portugal).
Language Annotation
-------------------
To let search engines know that the second URL is the French translation of the
first URL, Odoo will add an HTML link element in the header. In the HTML
<head> section of the main version, Odoo automatically adds a link
element pointing to the translated versions of that webpage;
- <link rel="alternate" hreflang="fr"
href="https://www.mywebsite.com\/fr\_FR/shop/product/mon-produit-1"/>
With this approach:
- Search engines will redirect to th right language according to the
visitor language.
- You do not get penalized by search engines if your page is not translated
yet. Indeed, it's not a duplicated content, but a different
version of the same content.
Language Detection
------------------
When a visitor lands for the first time on your website (e.g.
yourwebsite.com/shop), they may automatically be redirected to a
translated version according to their browser language preference: (e.g.
yourwebsite.com/fr\_FR/shop).
Next time, it keeps a cookie of the current language to
avoid any redirection.
To force a visitor to stick to the default language, you can use the
code of the default language in your link, example:
yourwebsite.com/en\_US/shop. This will always land visitors to the
English version of the page, without using the browser language
preferences.
Page Speed
==========
@ -32,7 +319,7 @@ visitor abandonment rate is also divided by two. (25% to 12.5%). One
extra second to load a page could `cost $1.6b to Amazon in
sales <http://www.fastcompany.com/1825005/how-one-second-could-cost-amazon-16-billion-sales>`__.
.. image:: media/seo01.png
.. image:: media/seo06.png
:align: center
Fortunately, Odoo does all the magic for you. Below, you will find the
@ -43,6 +330,47 @@ your website ranks using these two tools:
- `Pingdom Website Speed Test <http://tools.pingdom.com/fpt/>`__
Images
------
When you upload new images, Odoo automatically
compresses them to reduce their sizes (lossless compression for .PNG
and .GIF and lossy compression for .JPG).
From the upload button, you have the option to keep the original image
unmodified if you prefer to optimize the quality of the image rather
than performance.
.. image:: media/seo07.png
:align: center
.. note::
Odoo compresses images when they are uploaded to your website, not
when requested by the visitor. Thus, it's possible that, if you use a
third-party theme, it will provide images that are not compressed
efficiently. But all images used in Odoo official themes have been
compressed by default.
When you click on an image, Odoo shows you the Alt and title attributes
of the ``<img>`` tag. You can click on it to set your own title and Alt
attributes for the image.
.. image:: media/seo08.png
:align: center
When you click on this link, the following window will appear:
.. image:: media/seo09.png
:align: center
Odoo's pictograms are implemented using a font (`Font
Awesome <https://fortawesome.github.io/Font-Awesome/icons/>`__ in most
Odoo themes). Thus, you can use as many pictograms as you want in your
page, they will not result in extra requests to load the page.
.. image:: media/seo10.png
:align: center
Static Resources: CSS
---------------------
@ -157,47 +485,6 @@ same visitor will not load any other Javascript resource.
easily debug with the Chrome debugger as CSS and Javascript resources
are not transformed from their original versions.
Images
------
When you upload new images, Odoo automatically
compresses them to reduce their sizes (lossless compression for .PNG
and .GIF and lossy compression for .JPG).
From the upload button, you have the option to keep the original image
unmodified if you prefer to optimize the quality of the image rather
than performance.
.. image:: media/seo02.png
:align: center
.. note::
Odoo compresses images when they are uploaded to your website, not
when requested by the visitor. Thus, it's possible that, if you use a
third-party theme, it will provide images that are not compressed
efficiently. But all images used in Odoo official themes have been
compressed by default.
When you click on an image, Odoo shows you the Alt and title attributes
of the ``<img>`` tag. You can click on it to set your own title and Alt
attributes for the image.
.. image:: media/seo03.png
:align: center
When you click on this link, the following window will appear:
.. image:: media/seo04.png
:align: center
Odoo's pictograms are implemented using a font (`Font
Awesome <https://fortawesome.github.io/Font-Awesome/icons/>`__ in most
Odoo themes). Thus, you can use as many pictograms as you want in your
page, they will not result in extra requests to load the page.
.. image:: media/seo05.png
:align: center
CDN
---
@ -218,7 +505,7 @@ Delivery Network has three advantages:
You can configure your CDN options from the **Website Admin** app, using
the Configuration menu. Here is an example of configuration you can use:
.. image:: media/seo06.png
.. image:: media/seo11.png
:align: center
HTML Pages
@ -249,7 +536,7 @@ Websites that are not mobile-friendly are negatively
impacted in search engine rankings. All Odoo themes rely on Bootstrap to
render efficiently according to the device: desktop, tablet or mobile.
.. image:: media/seo08.png
.. image:: media/seo12.png
:align: center
As all Odoo modules share the same technology, absolutely all pages in
@ -269,9 +556,6 @@ This allows Odoo to set a very long cache delay (XXX) on these
resources: XXX secs, while being updated instantly if you update the
resource.
.. todo::
Describe how the cache strategy works for other resources...
Scalability
-----------
@ -283,202 +567,11 @@ eCommerce compared to Odoo when it comes to high query volumes:
Here is the slide that summarizes the scalability of Odoo Website & eCommerce.
.. image:: media/seo09.png
.. image:: media/seo13.png
:align: center
URLs Handling
=============
URLs Structure
--------------
A typical Odoo URL will look like this:
- https://www.mysite.com/fr\_FR/shop/product/my-great-product-31
With the following components:
- **https://** = Protocol
- **www.mysite.com** = your domain name
- **/fr\_FR** = page language. This part of the URL is
removed if the visitor browses the main language of the website
Thus, the main version of this page is:
https://www.mysite.com/shop/product/my-great-product-31
- **/shop/product** = every module defines its own namespace (/shop is
for the catalog of the eCommerce module, /shop/product is for a
product page).
- **my-great-product** = by default, this is the slugified title of the
product this page refers to. But you can customize it for SEO
purposes. A product named "Pain carré" will be slugified to
"pain-carre". Depending on the namespace, this could be different
objects (blog post, page title, forum post, forum comment,
product category, etc.).
- **-31** = the unique ID of the product
Note that any dynamic component of an URL can be reduced to its ID. As
an example, the following URLs all do a 301 redirect to the above URL:
- https://www.mysite.com/fr\_FR/shop/product/31 (short version)
- http://mysite.com/fr\_FR/shop/product/31 (even shorter version)
- http://mysite.com/fr\_FR/shop/product/other-product-name-31 (old
product name)
Some URLs have several dynamic parts, like this one (a blog category and
a post):
- https://www.odoo.com/blog/company-news-5/post/the-odoo-story-56
In the above example:
- *Company News* is the title of the blog
- *The Odoo Story* is the title of a specific blog post
When an Odoo page has a pager, the page number is set directly in the
URL (does not have a GET argument). This allows every page to be indexed
by search engines. Example:
- https://www.odoo.com/blog/page/3
Changes in URLs & Titles
------------------------
When the URL of a page changes (e.g. a more SEO friendly version of your
product name), you don't have to worry about updating all links:
- Odoo will automatically update all its links to the new URL
- If external websites still points to the old URL, a 301 redirect will
be done to route visitors to the new website
As an example, this URL:
- http://mysite.com/shop/product/old-product-name-31
Will automatically redirect to :
- http://mysite.com/shop/product/new-and-better-product-name-31
In short, just change the title of a blog post or the name of a product,
and the changes will apply automatically everywhere in your website. The
old link still works for links coming from external websites, with a 301
redirect to not lose the SEO link juice.
HTTPS
-----
Search engines boost ranking of secure HTTPS/SSL websites.
So, by default all Odoo Online instances are fully
based on HTTPS. If the visitor accesses your website through a non HTTPS
url, it gets a 301 redirect to its HTTPS equivalent.
Links: Nofollow Strategy
------------------------
The more a page is linked from external and quality websites,
the better it is for your SEO.
Here are Odoo strategies to manage links:
- Every link you add to your website is
"dofollow", which means that this link will contribute to the SEO
Juice for the linked page.
- Every link posted by a contributor (forum post, blog comment, etc.)
that links to your own website is "dofollow" too.
- But every link posted by a contributor that links to an external
website is "nofollow". In that way, you do not run the risk of
people posting links on your website to third-party websites
which have a bad reputation.
- Note that, when using the forum, contributors having a lot of Karma
can be trusted. In such case, their links will not have any
``rel="nofollow"`` attribute.
Multi-Language Support
======================
Multi-Language URLs
-------------------
If you run a website in multiple languages, the same content will be
available in different URLs, depending on the language used:
- https://www.mywebsite.com/shop/product/my-product-1 (main language, English here)
- https://www.mywebsite.com\/fr\_FR/shop/product/mon-produit-1 (French version)
In this example, fr\_FR is the language of the page. You can even have
several variations of the same language: pt\_BR (Portuguese from Brazil)
, pt\_PT (Portuguese from Portugal).
Language Annotation
-------------------
To let search engines know that the second URL is the French translation of the
first URL, Odoo will add an HTML link element in the header. In the HTML
<head> section of the main version, Odoo automatically adds a link
element pointing to the translated versions of that webpage;
- <link rel="alternate" hreflang="fr"
href="https://www.mywebsite.com\/fr\_FR/shop/product/mon-produit-1"/>
With this approach:
- Search engines will redirect to th right language according to the
visitor language.
- You do not get penalized by search engines if your page is not translated
yet. Indeed, it's not a duplicated content, but a different
version of the same content.
Language Detection
------------------
When a visitor lands for the first time on your website (e.g.
yourwebsite.com/shop), they may automatically be redirected to a
translated version according to their browser language preference: (e.g.
yourwebsite.com/fr\_FR/shop).
Next time, it keeps a cookie of the current language to
avoid any redirection.
To force a visitor to stick to the default language, you can use the
code of the default language in your link, example:
yourwebsite.com/en\_US/shop. This will always land visitors to the
English version of the page, without using the browser language
preferences.
Meta Tags
=========
Titles, Keywords and Description
--------------------------------
Every web page should define the ``<title>``, ``<description>`` and ``<keywords>``
meta data. These information elements are used by search engines to rank
and categorize your website according to a specific search query. So, it
is important to have titles and keywords in line with what people seek.
In order to write quality content and boost your traffic, Odoo provides
a keyword finder. For each keyword, you see how it is used through the content
(H1, H2, page title, page description, page content) and what are the related
searches in Google. The more keywords are used the better.
.. image:: media/seo10.png
:align: center
.. note::
If your website is in multiple languages, you can use the Promote
tool for every language of a single page.
Search Engines Files
====================
Sitemap
-------
@ -525,7 +618,7 @@ products, forum posts and contact addresses. This allows your product
pages to be displayed in Google using extra information like the price
and rating of a product:
.. image:: media/seo12.png
.. image:: media/seo14.png
:align: center
robots.txt
@ -547,70 +640,3 @@ You can customize the file *robots* in developer mode from
(exclude robots, exclude some pages, redirect to a custom Sitemap).
Make the Model Data of the view *Non Updatable* to not reset the
file after system upgrades.
Content is King
===============
When it comes to SEO, content is usually king. Odoo provides several
modules to help you build your website contents:
- **Odoo Slides**: publish all your Powerpoint or PDF presentations.
Their content is automatically indexed on the web page. Example:
`https://www.odoo.com/slides/public-channel-1 <https://www.odoo.com/slides/public-channel-1>`__
- **Odoo Forum**: let your community create contents for you. Example:
`https://odoo.com/forum/1 <https://odoo.com/forum/1>`__
(accounts for 30% of Odoo.com landing pages)
- **Odoo Mailing List Archive**: publish mailing list archives on your
website. Example:
`https://www.odoo.com/groups/community-59 <https://www.odoo.com/groups/community-59>`__
(1000 pages created per month)
- **Odoo Blogs**: write great contents.
.. note::
The 404 page is a regular page, that you can edit like any other
page in Odoo. That way, you can build a great 404 page to redirect to
the top content of your website when visitors get lost in invalid URLs.
Social Features
===============
Social media is built for mass sharing. If lots of people share your content
on social media, then it's likely more people will link to it,
and links are a huge factor for SEO ranking.
Odoo embeds several tools to share content through social media:
Social Network
--------------
Odoo allows to link all your social network accounts in your website footer.
All you have to do is to refer all your accounts in your company settings.
Social Share
------------
Drop the building block *Share* on any page you want your visitors to share.
Facebook Page
-------------
Drop the building block *Facebook Page* to display a widget of your Facebook
business page and encourage visitors to follow it.
You can display the timeline, the next events and the messages.
Twitter Scroller
----------------
Display the Twitter feeds with customer satifaction on your website.
THis will increase the number of tweets and shares.
Test Your Website
=================
You can compare how your website rank, in terms of SEO, against Odoo
using WooRank free services:
`https://www.woorank.com <https://www.woorank.com>`__