krokyze / flutter_seo

Flutter package for SEO support on Web.
MIT License
46 stars 5 forks source link

Any disadvantages? #10

Open deadsoul44 opened 1 year ago

deadsoul44 commented 1 year ago

Hi, thanks for the great package. I don’t have any seo experience. So, I have to ask this question before investing in Flutter for web. Does this package have any disadvatages when compared to other seo packges or when compared to regular js web apps?

krokyze commented 1 year ago

Hey. I would say it really depends on your situation. If webpage is the only thing you need I would probably go for the regular js web app as there's still quite a lot of unanswered "How does the googlebot actually work" questions which you can read more about here: https://github.com/flutter/flutter/issues/46789 but if you're planning to create Android/iOS/Web project and not aiming for 100% perfect SEO support at least not for now then I would advise you to give this package a try.

The only other SEO package I'm familiar with is https://pub.dev/packages/seo_renderer which I did work on (a bit) but for now I cannot say if it's better/worse. The issue with it is that the solution might be seen as cloaking which is black hat seo, so to solve it I created this package.

Currently I'm waiting for Google to index my example webpage https://krokyze.github.io/flutter_seo once i'll get some results I'll share them within README.

Andreigr0 commented 1 year ago

I think the main problem with Google bot is that it uses the same principle as a browser's "find on page" feature. One cannot search through the whole page only through a part which is visible on the screen at the moment. As far as I can see your solution doesn't bring anything new to that

krokyze commented 1 year ago

@Andreigr0 initially the main goal for this plugin was to tackle the issue which seo_renderer had. That the solution isn't potentially seen as black hat seo and is updating html doesn't matter if it's robot or not. You can try out the demo page https://seo.krokyze.dev/#/posts and check that "find on page" does actually work.

If you're thinking about content hidden behind the scroll that's infinite scroll issue, which is an issue for regular webpages too, you can read more about here how GoogleBot handles it: https://www.searchenginejournal.com/how-google-crawls-pages-with-infinite-scrolling/439008/

guplem commented 1 year ago

Currently I'm waiting for Google to index my example webpage https://krokyze.github.io/flutter_seo once i'll get some results I'll share them within README.

@krokyze did you get the results?

I am doing this Google search, but I don't get "any valuable results".

2022-12-15 08_39_09-site_seo krokyze dev - Google Search

krokyze commented 1 year ago

For whatever reasons Google didn't index the page while I was using Github default domain http://krokyze.github.io/flutter_seo

After setting up custom one seo.krokyze.dev and re-requesting indexing from Google they did it for only the list page, so I'm still trying to figure out what do I miss in the config.

But what I can confirm for now is that Google was able to index the content:

RBT22 commented 1 year ago

Hi! What happened to the demo? Is it still working? If i try out the searches from the previous comment's images I don't get these nice results.. Thanks!

krokyze commented 1 year ago

Hi! What happened to the demo? Is it still working? If i try out the searches from the previous comment's images I don't get these nice results.. Thanks!

Hey, slowly (not enough time + validation within Google takes alot) exploring and trying to understand what am I missing as still only the landing page is indexed and none of the items. Few weeks ago I found out that possibly all of them are ignored because I was still using the hash in url. So I migrated to path url strategy and submitted the page for reindex, now waiting for some potential changes in results.

I still see the same search results as mentioned before: https://www.google.com/search?q=site%3Aseo.krokyze.dev&ie=utf-8&oe=utf-8&aq=t https://www.google.com/search?q=flutter+seo+green+papaya+salad&ie=utf-8&oe=utf-8&aq=t

RBT22 commented 1 year ago

Ohh sorry I messed up something (I don't know what :D), but now I get the same results. Please let us know if there is any update with the reindexing, thank you again! :)

kevlar700 commented 1 year ago

Did you try html mode as used on Android instead of wasm 🤔

krokyze commented 1 year ago

Did you try html mode as used on Android instead of wasm 🤔

Not sure if I'm understanding the question but I'm using HTML mode for GoogleBot as the initial load is faster.

kevlar700 commented 1 year ago

Not sure if I'm understanding the question but I'm using HTML mode for GoogleBot as the initial load is faster.

I just wondered if the flutter app being built in html mode would make any difference or not?

--web-renderer html

I also wonder if the following widget has any influence on text indexability?

https://api.flutter.dev/flutter/widgets/EditableText-class.html

Edit: Sorry I meant

https://api.flutter.dev/flutter/material/SelectableText-class.html

krokyze commented 1 year ago

I just wondered if the flutter app being built in html mode would make any difference or not?

--web-renderer html

It does affect the initial load of page as the CanvasKit is about 2MB extra in download size. It's in the tips https://github.com/krokyze/flutter_seo#force-html-renderer-for-bots

For example https://seo.krokyze.dev/posts initial load difference on Google Chrome is 2.4MB (CanvasKit) vs 806kB (HTML).

I also wonder if the following widget has any influence on text indexability?

https://api.flutter.dev/flutter/widgets/EditableText-class.html

Edit: Sorry I meant

https://api.flutter.dev/flutter/material/SelectableText-class.html

You might try using SelectableText and not Seo.text but last time I gave it a try it does hit quite on performance so I wouldn't advise to do it.

malvinpratama commented 1 year ago

I try to search your web with bing & duckduckgo and they can find your page. but need specify text targeting.

https://duckduckgo.com/?va=v&t=ha&q=flutter+seo+green+papaya+salad+at+varius+vel+turpis&ia=web https://www.bing.com/search?q=flutter+seo+green+papaya+salad+at+varius+vel+turpis&form=QBLH&sp=-1&lq=0&pq=flutter+seo+green+papaya+salad+at+varius+vel+turpis&sc=0-51&qs=n&sk=&cvid=E33494FFC5BF45E8A67F3B284D3CBF8B&ghsh=0&ghacc=0&ghpl=

on bing that's not on top but still in page one. and can you try the meta seo library (https://pub.dev/packages/meta_seo)? I think we can increase the score if we add metatag like decription & ogdescription.

TMSantos commented 10 months ago

hey @krokyze great package, bringing SEO to Flutter web is like a dream.

Any ideia why it doesn't seem to work for all posts? for example: https://www.google.com/search?q=flutter+SEO+steak+tartare -> doesn't work https://www.google.com/search?q=flutter+seo+green+papaya+salad -> works

krokyze commented 10 months ago

hey @krokyze great package, bringing SEO to Flutter web is like a dream.

Any ideia why it doesn't seem to work for all posts? for example: https://www.google.com/search?q=flutter+SEO+steak+tartare -> doesn't work https://www.google.com/search?q=flutter+seo+green+papaya+salad -> works

Hey.

So the issue is that SEO will never know how to scroll a list in Flutter and as the "Steak Tartare" is at the bottom of the list it simply doesn't know about it. To overcome it I've tried adding https://seo.krokyze.dev/sitemap.xml which SEO should take into account and index each page but to be honest I'm not sure why it's ignoring it and lately haven't got time to try debugging it.

TMSantos commented 10 months ago

@krokyze thanks for replying, I thought about that, maybe didn't pick best example, let's say for example this one:

https://www.google.com/search?q=flutter+seo+chocolate+brownie which is the first post, also doesn't seem to work.

I'm trying to make sense of how this works as it works so well for post 3, but post 1 doesn't even show in google results, but I'm not SEO expert, don't even know if it's related to Flutter or if the same would happen with HTML website

kfranic1 commented 9 months ago

@krokyze any updates on using sitemap.xml?

Also another way to let the bot know about all of the elements is to use Column inside a SingleChildScrollView instead of ListView.separated, because Column creates elements even if they are not currently in the visible part of the screen while ListView only renders those elements that are currently visible. I understand that this might affect load time for the app which can also affect SEO score but if there are not a lot of elements or if they are fairly simple this might be a good approach.

krokyze commented 9 months ago

@krokyze thanks for replying, I thought about that, maybe didn't pick best example, let's say for example this one:

https://www.google.com/search?q=flutter+seo+chocolate+brownie which is the first post, also doesn't seem to work.

I'm trying to make sense of how this works as it works so well for post 3, but post 1 doesn't even show in google results, but I'm not SEO expert, don't even know if it's related to Flutter or if the same would happen with HTML website

To be honest I'm no SEO expert too, but I do see the webpage in the results: Screenshot 2023-09-25 at 12 30 57

krokyze commented 9 months ago

@krokyze any updates on using sitemap.xml?

Also another way to let the bot know about all of the elements is to use Column inside a SingleChildScrollView instead of ListView.separated, because Column creates elements even if they are not currently in the visible part of the screen while ListView only renders those elements that are currently visible. I understand that this might affect load time for the app which can also affect SEO score but if there are not a lot of elements or if they are fairly simple this might be a good approach.

I haven't had time to debug and try explore why GoogleBot does see the sitemap but haven't visited any of the posts. Screenshot 2023-09-25 at 12 35 39

Using Column, SingleChildScrollView I'm seeing as a hacky solution that might work for few but not for most so that's why I'm using ListView.separated.

kfranic1 commented 9 months ago

@krokyze any updates on using sitemap.xml? Also another way to let the bot know about all of the elements is to use Column inside a SingleChildScrollView instead of ListView.separated, because Column creates elements even if they are not currently in the visible part of the screen while ListView only renders those elements that are currently visible. I understand that this might affect load time for the app which can also affect SEO score but if there are not a lot of elements or if they are fairly simple this might be a good approach.

I haven't had time to debug and try explore why GoogleBot does see the sitemap but haven't visited any of the posts. Screenshot 2023-09-25 at 12 35 39

Using Column, SingleChildScrollView I'm seeing as a hacky solution that might work for few but not for most so that's why I'm using ListView.separated.

You are right, this is hacky, so the solution would probbably be to use sitemap somehow. As yourself I'm also not an expert for SEO, I just recently started learning about it. If you discover something usefull, please do share.

krokyze commented 5 months ago

FYI looks like I've finally found the issue why Google didn't index most of the example pages. The issue was because of how Github Pages work and incorrect sitemap.xml. I'm guessing whole page will be indexed in few weeks.

Screenshot 2024-01-21 at 20 32 00

Screenshot 2024-01-21 at 20 32 24

Chuckame commented 3 months ago

hey @krokyze I used to dev with flutter, but searching for a SSR/SEO ready library to not go to react. Your library seems really interesting!

Btw, after a quick search, I would suppose that google is not taking into account your subpages as they are not reachable. Not because of the links that are enough, but maybe because of the container that is an flt-seo and not a standard div, section or else.

after crawling your website https://flutter-seo.netlify.app/posts with https://www.xml-sitemaps.com/ and other sitemap generators, all are not seeing your subpages. Is it because of that flt-seo or because of javascript execution requirements ?

krokyze commented 3 months ago

Btw, after a quick search, I would suppose that google is not taking into account your subpages as they are not reachable. Not because of the links that are enough, but maybe because of the container that is an flt-seo and not a standard div, section or else.

Hey. Thanks for the tip, to be honest didn't knew Google would ignore them. Just did some reading and you might be true. Changed it to div now, let's see what Google says.

after crawling your website https://flutter-seo.netlify.app/posts with https://www.xml-sitemaps.com/ and other sitemap generators, all are not seeing your subpages. Is it because of that flt-seo or because of javascript execution requirements ?

Yep, you're correct.

Chuckame commented 3 months ago

After reading some articles about flutter and seo, I've discovered that hidden content would be banned by the indexers as the website is trying to display something to the indexer that isn't visible by a real user (e.g. Invisible div). It could be considered as "black hat technique"... "could", but not "will", as the user will still see the content through the flutter engine... Let's see how this will be considered

krokyze commented 3 months ago

After reading some articles about flutter and seo, I've discovered that hidden content would be banned by the indexers as the website is trying to display something to the indexer that isn't visible by a real user (e.g. Invisible div). It could be considered as "black hat technique"... "could", but not "will", as the user will still see the content through the flutter engine... Let's see how this will be considered

Yes that might be a problem, but I don't really see how google bot might recognise it.