Your username here MUST MATCH your XenForo username (connected to your XF license).

    Once you have registered here, then you need to start a conversation at xenforo.com w/Bob and provide the following:
    1. Your XenForo License Validation Token
    2. The Domain Name associated with the License
    NOTE: Your account will be validated once ALL requirements are verified/met. Thank you for your patience.

SEO Improvements


New Member
AMS Premium
IMS Premium
LD Premium
RMS Premium
Absolutely adore AMS so far. Not sure if this should be feedback or a suggestion. Please move the thread around if needed please :)

After installing AMS a few months ago we saw a quick indexation into Google Search because of our frontpage being high traffic.

As a niche leader in simracing our site needs to rank high on google search results on relevant keywords but here the SEO of AMS seems not be able to match the (much smaller) wordpress sites out there who all rank much higher in google.

Is there anything we can do to improve our SEO?
Are ALL your articles setting a "good" Meta description? This one alone can make a huge difference if used properly. I couldn't tell you how many XF sites I've looked at that don't set a meta description or description of their article content and just rely on a snippet of their Article, in which the first 250 characters of the article don't include anything remotely beneficial that a good meta description or even a good description would include.


I have small AMS sites that out rank large Word Press sites, so its not that any Word Press site is going to magically out rank any other site that isn't using Word Press. Couldn't tell you how many XF sites have moved from WP to AMS and are experiencing much better ranking.

Are you using the XFAMP addon? I know a lot of XF sites are benefiting from that addon.

Beyond that, Titles, Description, Content etc is 99% of the equation, the rest is just standard things like using industry standard metadata as well as appeasing to the google gods by submitting micro data via ldJsonHtml (which is googles preferred method of delivery).

<xf:if is="$article.meta_description">
    <xf:set var="$descSnippet" value="{{ snippet($article.meta_description, 250, {'stripBbCode': true}) }}" />
<xf:elseif is="$article.description" />
    <xf:set var="$descSnippet" value="{{ snippet($article.description, 250, {'stripBbCode': true}) }}" />
<xf:else />
    <xf:set var="$descSnippet" value="{{ snippet($article.message, 250, {'stripBbCode': true}) }}" />

<xf:macro template="metadata_macros" name="metadata"
    arg-shareUrl="{{ link('canonical:ams', $article) }}"
    arg-canonicalUrl="{{ link('canonical:ams', $article, {'page': $page > 1 ? $page : null}) }}"
    arg-imageUrl="{{ $article.CoverImage ? link('canonical:ams/cover-image', $article) : ($article.Category.content_image ? base_url('styles/default/xenaddons/ams/category_images/' . {$article.Category.content_image}, true) : '') }}"
    arg-twitterCard="summary_large_image" />

<xf:page option="ldJsonHtml">
    <script type="application/ld+json">
        "@context": "https://schema.org",
        "@type": "CreativeWorkSeries",
        "@id": "{{ link('canonical:ams', $article)|escape('json') }}",
        "name": "{$article.title|escape('json')}",
        "headline": "{$article.title|escape('json')}",
        "alternativeHeadline": "{$article.title|escape('json')}",
        "description": "{$descSnippet|escape('json')}",
        <xf:if is="$article.cover_image_id">
            "thumbnailUrl": "{{ ams_article_thumbnail($article)|escape('json') }}",
        <xf:elseif is="$article.Category.content_image" />
            "thumbnailUrl": "{{ ams_category_icon($article)|escape('json') }}",
        "dateCreated": "{{ date($article.publish_date, 'c')|escape('json') }}",
        "dateModified": "{{ date($article.last_update, 'c')|escape('json') }}",
        <xf:if is="$article.rating_count">"aggregateRating": {
            "@type": "AggregateRating",
            "ratingCount": "{$article.rating_count|escape('json')}",
            "ratingValue": "{$article.rating_avg|escape('json')}"
        <xf:if is="$article.hasViewableDiscussion()">
            "discussionUrl": "{{ link('canonical:threads', $article.Discussion)|escape('json') }}",
        <xf:if is="$article.User.Profile.xa_ams_author_name">
            "author": {
                "@type": "Person",
                "name": "{$article.User.Profile.xa_ams_author_name|escape('json')}"
        <xf:else />
            "author": {
                "@type": "Person",
                "name": "{{ ($article.User ? $article.User.username : $article.username)|escape('json') }}"
Good shouts, thanks.

Yeah we are doing our best with the meta descriptions but i fear i am too much of an idiot and need something like a YOAST plugin we always used with WP back in the days. Is there even an online alternative we can use?

XFamp is new to me and google isn't helping me to find it :D

submitting micro data via ldJsonHtml (which is googles preferred method of delivery). << also new to me sorry :)