SEO for our domain is being impacted

AI-generated summary

SEO Issues Discussion Summary

The discussion revolves around SEO issues on the Reflex domain, identified using SemRush. Two main issues were raised:

  1. 27 pages (user profile pages) were found blocked from crawling. However, Firepup650 pointed out that this is intentional, as per Discourse’s settings, and provided relevant links to support this claim.

  2. Issues with the carousel on the About page, specifically a required value for the position field and mutually exclusive item and url fields for a nested ListItem. Simon suggested that SemRush might be incorrectly analyzing the page, as Discourse doesn’t use the Carousel schema type. He also provided a link to a 2022 post on the topic and tested the page on schema.org, finding no errors or warnings.

RJG analyzed the code and identified three issues:

  • A misplaced url property in the ListItem element
  • A missing position property, which Google requires for carousel items
  • A broken Schema.org validator that failed to catch the first issue.

These findings suggest that the initial SemRush results might be incorrect, and further investigation is needed to resolve the SEO issues.

Using SemRush we are seeing these issues:

  1. 27 pages blocked from crawling, i.e.: reflex-dev · Discussions · GitHub
  2. issues in the carousel on page reflex-dev · Discussions · GitHub the position: A value for the position field is required for a nested ListItem and item or url: The item and url fields are mutually exclusive for a nested ListItem. Please remove one of them.

AFAIK, profile pages are intentionally blocked from being indexed:

3 Likes

Okay this makes a lot of sense about not crawling the profile pages.

For issues in the carousel on page About - Reflex the position: A value for the position field is required for a nested ListItem and item or url: The item and url fields are mutually exclusive for a nested ListItem. Please remove one of them.

What do you think?

I don’t know about that one, I’m going to leave someone who knows more to respond about that one.

I think there’s something wrong with the way SemRush is analyzing the page. Unless something has changed, Discourse doesn’t use the Carousel schema type. There’s a post from 2022 about the issue: SemRush Structured Data - #4 by Falco

Testing https://forum.reflex.dev/about on schema.org, it’s finding ItemList, AboutPage, and SiteNavigationElement schema types. No errors or warnings are being reported. You can check the results here: https://validator.schema.org/#url=https%3A%2F%2Fforum.reflex.dev%2Fabout.

4 Likes

Interesting, so the results here are incorrect then as this uses google search console: https://search.google.com/test/rich-results/result/r%2Fcarousels?id=kB-_lj4GOiubX0YgxJtjpA

1 Like

I do see some issues with the code

1. misplaced url property

      <div itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'>
        <meta itemprop='url' content='/u/elvis'>
        <a href='/u/elvis' itemprop='item'>
          <span itemprop='image'>
            <img width="45" height="45" class="avatar" src="https://sea1.discourse-cdn.com/flex001/user_avatar/forum.reflex.dev/elvis/45/31_2.png">
          </span>
          <span itemprop='name'>
            elvis
              - elvis
          </span>
        </a>
      </div>

The itemListElement is a ListItem.

The ListItem has a property item which is a Thing.
A ListItem can not have a url property
A Thing can. See ListItem - Schema.org Type

Hence, the <meta itemprop='url' content='/u/elvis'> line should be moved two lines lower within the item property value.

      <div itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'>
        <a href='/u/elvis' itemprop='item'>
          <meta itemprop='url' content='/u/elvis'>
          <span itemprop='image'>
            <img width="45" height="45" class="avatar" src="https://sea1.discourse-cdn.com/flex001/user_avatar/forum.reflex.dev/elvis/45/31_2.png">
          </span>
          <span itemprop='name'>
            elvis
              - elvis
          </span>
        </a>
      </div>

2. missing position

This one is a bit more subjective. Google says here Carousel (ItemList) Structured Data | Google Search Central  |  Documentation  |  Google for Developers that the property is required

So Google says “it’s required”.
That means “Google requires it”, not “it’s required by the schema”.

3. broken Schema.org validator

I don’t know what it’s doing but it’s not correctly validating. It should have caught #1.

2 Likes