I’m trying to use ms-seo package for meteor but I’m not understanding how it works.
It’s supposed to add meta tags to your page for crawlers and social media (google, facebook, twitter, etc…)
To see it working according to the docs all I should have to do is
meteor add manuelschoebel:ms-seo
and then add some defaults
Meteor.startup(function () {
if(Meteor.isClient){
return SEO.config({
title: 'Manuel Schoebel - MVP Development',
meta: {
'description': 'Manuel Schoebel develops Minimal Viable Producs (MVP) for Startups',
},
og: {
'image': 'http://manuel-schoebel.com/images/authors/manuel-schoebel.jpg',
}
});
}
});
which I did but that code only executes on the client (browser). How is that helpful to search engines?
So I test it
curl http://localhost:3000
Results have no tags
If In the browser I go to http://localhost:3000
and inspect the elements in the debugger I see the tag but if I check the source I don’t.
I don’t understand how client side added tags have anything to do with SEO. I thought Google, Facebook, Twitter when scanning your page for meta tags basically just do a single request. Effectively the same as curl http://localhost:3000
So how does this package actually do anything useful? I feel stupid. 27k users it must work but I don’t understand how. Does it require the spiderable
package to get static pages generated?
3
Answers
You are correct. You need to use something like the
spiderable
package or prerender.io to get this to work. This package will add tags, but like any Meteor page, it’s rendered on the client.Try this with
curl
to see the result when usingspiderable
:Google will now render the JS itself so for Google to index your page correctly you don’t need to use spiderable/prerender.io, but for other search engines I believe you still do have to.
An alternate answer:
Don’t use
spiderable
, as it uses PhantomJS which is rather resource intensive when bots crawl your site.Many Meteor devs are using Prerender these days, check it out.
If you still have some problems with social share buttons or the package, try to read this: https://webdevelopment7636.wordpress.com/2017/02/15/social-share-with-meteor/ . It was the only way I got mine to work. You don’t have to worry about phantomJS or spiderable to make it work fine.
It is a complete tutorial using meteorhacks:ssr and meteorhacks:picker. You have to create a crawler filter on the server side and a route that will be called by it when it is activated. The route will send dynamically the template and the data to a html on the “private” folder, and will render the html to the crawler. The template on the private folder will be the that gets the metatags and the tag.
This is the file that will be on the private folder
I can’t put the other links with the code here, but if you need anymore help, go to the first link and see if the tutorial helps.