Search

A new extension, "SEO Guide" is now available for download. Comments and feedback can be left here but if you discover any issues, please post it on the issue tracker.

SEO Guide

A SEO Guide for Symphony Content Editors

What this extension does

This extension allows you do a real-time SEO-check on the content you are editing. It counts the unique words, and shows which keywords and combinations occur the most in your text.

How does it work?

In your section editor, you can check which fields should be monitored for text input. This could be fields that are used for headers, descriptions, content, etc... For each field you can set a priority on how heavy this item should be counted in the whole equation. For example: a header which will be used for a title, page handle and a big bold text on top of the page is far more important than a small piece of text that is shown in the sidebar.

For richtext-editors CKEditor is supported.

Important notes

For Developers

This extension does absolutely nothing on the frontend to improve the SEO of your website. It's still the developers responsibility to craft the correct HTML that gets indexed by the different search engines out there.

For Content Editors

This extension gives absolutely no guarantee to higher search results. It only analyzes the content you are typing and shows which keywords (and combinations) on your site are most-used and will probably be detected as 'important keywords' for the different search engines out there.

Having said that, how any search engine exactly works is a bit of a mystery, since the search algorithms used by companies as Google, Yahoo and Microsoft are known to be one of the biggest secrets in the universe. However, this extensions gives you an insight on how the content of your website could be interpreted when analyzed by an automated process.

The used algorithm

The algorithm that this extensions used is fairly simple. It works by the following rules:

  • Count all unique words. Also count all unique word-combinations (of two and three words).
  • Give the unique words a score based on how many times they occur in the text. The score is based on the priority given to the field. Priority 1 is +1, priority 5 is +5.
  • Order these words and show the 5 words / combinations which occur the most.
  • For CKEditor: words in h1 get a +2 bonus, words in h2 get a +1 bonus.
  • The SEO strength is determined by the following:
    • First 25%: Check if all keywords are used at least once.
    • Next 45%: Check if all keywords occur in the top-5 of Words and Importance
    • Last 30%: Check if the saturation of keywords is not too high. Too much keywords could be seen as spam by some search engines. Also, it keeps the text human-readable. 3% is best. More than 6% results in a penalty.

You can help!

If you're a SEO expert and have some pointers on how the algorithm could be adjusted to be more helpfull, please let it know! Then we can make it a more accurate extension.

Great stuff, Giel. Thank youuuuuuuu!

awesome, giel.

is markdown support to follow or would you like a hand with that?

@fawx: I would surely like a hand with that! ;-)

Having said that: I'm no SEO expert, so my algorithm might be a bit 'flaky'. If anyone has some pointers on how this part could be improved, please be my guest. Or even better: feel free to fork! ;-)

I built something similar some time ago, but haven't wrapped it up in a publicly available extension. You were able create a list of keywords to optimize for and compare it to snapshots of keyword data from your Google webmaster tools account to check your keyword performance. I don't have plans to develop the extension further, bu I can send it to you if you are interested.

@kanduvisla: i'm actually about to write up a site with the best seo guy i know, which will probably coincide with adding markdown support. he looked over your extension and thinks it sounds promising. i'll let you know what we come up with.

@klaftertief: That would be nice. But perhaps you could fork this extension and merge it with the Google webmaster tools keyword data you talked about. Anyway, it sounds interesting. Do you have a public repo for your code?

@fawx: That would be the ultimate test. I wanted to test the extension against a 'Good SEO text' and a 'Bad SEO text' to see if the calculated result is somewhat representive, but couldn't find any good examples.

@klaftertief: That would be nice. But perhaps you could fork this extension and merge it with the Google webmaster tools keyword data you talked about. Anyway, it sounds interesting. Do you have a public repo for your code?

There is no public repository yet. I don't have time to work on it at the moment but I've put it on my TODO list.

Hi @kanduvisla,

I am wondering if is possible to you to extend the extension to support Multilingual Field.

And btw, awesome extension!! :) many, many thanks

First of all thanks for this extension - pretty useful when crafting new content. Just wondering if there is planned support for the Multilingual Field as stated above - If not would it be best to submit stuff to merge or would you like to keep the mutilingual support separate. So I'd have an idea in case I have some time so spend on adding Multilingual Support.

I have currently no intention to support the Multilingual Field. If you would like to add this to this extension, then Feel Free To Fork™ ;-)

I'm having issues with the extension. It's blowing up in the extension.driver.php with a problem on line 42. I was able to find that another plugin was having issues with this as well so I tried to apply their fix to your code. Then the construct for the field in order to work for the current version needs the &$parent parameter removed. I was able to fix some of the issues but the field-seo-guide.php also needs some work. I would love to use this extension but without some work, I don't think it's going to work with 2.3.

Related to the first issue: http://ec2-46-137-130-59.eu-west-1.compute.amazonaws.com/discuss/thread/25172/

@kanduvisla Managed multilingual support finally had some time to finish the implementation. I'm sure its not at 100% yet to allow compatibility for standard + multilingual but a few tweaks should do. You'd prefer a separate fork or possibility of merging into a separate branch?

Just to be sure prior to doing the official fork on github.

I've given this extension a little love today and updated it for S2.3.x

The algorithm that this extensions used is fairly simple. It works by the following rules:

  • Count all unique words. Also count all unique word-combinations (of two and three words).
  • Give the unique words a score based on how many times they occur in the text. The score is based on the priority given to the field. Priority 1 is +1, priority 5 is +5.
  • Order these words and show the 5 words / combinations which occur the most.
  • For CKEditor: words in h1 get a +3 bonus, words in h2 get a +2 bonus, words in h3 get a +1 bonus.
  • Bold and italic texts get a +1 bonus
  • Headers, Bold and italic texts are matched against the keywords and be given a bonus if used.
  • The lack of use of headers, bold and italics or over-use of keywords will result in a penalty.
  • The SEO strength is determined by the following:
    • First 25%: Check if all keywords are used at least once.
    • Next 45%: Check if all keywords occur in the top-5 of Words and Importance
    • Last 30%: Check if the saturation of keywords is not too high. Too much keywords could be seen as spam by some search engines. Also, it keeps the text human-readable. 3% is best. More than 6% results in a penalty.

This looks really useful for clients, especially those would don't believe us when we say their content could use a little love!

How involved is it to fork and add support for other editors?

Somewhere I've got an S2.3.x with some multilingual support as well; didn't go to production though in case need comes up I can try merge it up with @kanduvisla's version

Would be sweet if you could add a config at some point to tweak some of the coefficents/weighting rules, whilst keeping these as pretty solid defaults.

Great tool, I had used a long time ago in a older Symphony version. Now I try on most recent project and get a JS error:

Uncaught TypeError: Cannot read property 'value' of undefined

I try to debug but dont have the skills to resolve this. Maybe the fact of my section does not use CKEditor is causing this error?

Create an account or sign in to comment.

Symphony • Open Source XSLT CMS

Server Requirements

  • PHP 5.3-5.6 or 7.0-7.3
  • PHP's LibXML module, with the XSLT extension enabled (--with-xsl)
  • MySQL 5.5 or above
  • An Apache or Litespeed webserver
  • Apache's mod_rewrite module or equivalent

Compatible Hosts

Sign in

Login details