diff --git a/website/optimize/media/seo01.png b/website/optimize/media/seo01.png index e7545fe1b..31e6098f9 100644 Binary files a/website/optimize/media/seo01.png and b/website/optimize/media/seo01.png differ diff --git a/website/optimize/media/seo02.png b/website/optimize/media/seo02.png index f0c5b7dce..b0fc4c203 100644 Binary files a/website/optimize/media/seo02.png and b/website/optimize/media/seo02.png differ diff --git a/website/optimize/media/seo03.png b/website/optimize/media/seo03.png index 8bf0fd2e5..e41b5af80 100644 Binary files a/website/optimize/media/seo03.png and b/website/optimize/media/seo03.png differ diff --git a/website/optimize/media/seo04.png b/website/optimize/media/seo04.png index 034498fa0..606414a74 100644 Binary files a/website/optimize/media/seo04.png and b/website/optimize/media/seo04.png differ diff --git a/website/optimize/media/seo05.png b/website/optimize/media/seo05.png index 564ace262..cba322411 100644 Binary files a/website/optimize/media/seo05.png and b/website/optimize/media/seo05.png differ diff --git a/website/optimize/media/seo06.png b/website/optimize/media/seo06.png index b3e14be7d..7c41db43a 100644 Binary files a/website/optimize/media/seo06.png and b/website/optimize/media/seo06.png differ diff --git a/website/optimize/media/seo07.png b/website/optimize/media/seo07.png new file mode 100644 index 000000000..85d0eab0d Binary files /dev/null and b/website/optimize/media/seo07.png differ diff --git a/website/optimize/media/seo08.png b/website/optimize/media/seo08.png index 52393e039..09ea90375 100644 Binary files a/website/optimize/media/seo08.png and b/website/optimize/media/seo08.png differ diff --git a/website/optimize/media/seo09.png b/website/optimize/media/seo09.png index a88c28a0b..2dbecedaf 100644 Binary files a/website/optimize/media/seo09.png and b/website/optimize/media/seo09.png differ diff --git a/website/optimize/media/seo10.png b/website/optimize/media/seo10.png index 664314e45..f9898118a 100644 Binary files a/website/optimize/media/seo10.png and b/website/optimize/media/seo10.png differ diff --git a/website/optimize/media/seo11.png b/website/optimize/media/seo11.png new file mode 100644 index 000000000..a9b9ee2fb Binary files /dev/null and b/website/optimize/media/seo11.png differ diff --git a/website/optimize/media/seo12.png b/website/optimize/media/seo12.png index aaa0642e2..18d1124ca 100644 Binary files a/website/optimize/media/seo12.png and b/website/optimize/media/seo12.png differ diff --git a/website/optimize/media/seo13.png b/website/optimize/media/seo13.png new file mode 100644 index 000000000..d9d30de4e Binary files /dev/null and b/website/optimize/media/seo13.png differ diff --git a/website/optimize/media/seo14.png b/website/optimize/media/seo14.png new file mode 100644 index 000000000..238fae21b Binary files /dev/null and b/website/optimize/media/seo14.png differ diff --git a/website/optimize/seo.rst b/website/optimize/seo.rst index 4697ec976..9c9ef40a7 100644 --- a/website/optimize/seo.rst +++ b/website/optimize/seo.rst @@ -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 ``

``, 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 ``

``, 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 ```` 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>`__