Coder Social home page Coder Social logo

ms-seo's People

Contributors

arnonate avatar dandv avatar kevohagan avatar manuel-schoebel avatar manybothans avatar miroradenovic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ms-seo's Issues

Exception when setting title for dataNotFound route

When visiting not-existent page while using dataNotFound plugin We get exception like this:

Exception from Tracker recompute function: debug.js:41 TypeError: Cannot read property 'getName' of undefined

Problem is in following method:

getCurrentRouteName = ->
  router = Router.current()
  return unless router
  routeName = router.route.getName()
  return routeName

We check is ruter is undefined but in this case routes is defined but router.route is not.

It would be nice to add additional check for router.route or maybe special SeoCollection item for undefined 'dataNotFound' route.

Meteor 0.8 bug

I updated the meteor version ot 0.8 and now this package fails

Error: Can't wait without a fiber
    at Function.wait (/home/action/.parts/packages/meteor/0.8.0/tools/c2a0453c51/lib/node_modules/fibers/future.js:83:9)
    at Object.Future.wait (/home/action/.parts/packages/meteor/0.8.0/tools/c2a0453c51/lib/node_modules/fibers/future.js:325:10)
    at _.extend._nextObject (packages/mongo-livedata/mongo_driver.js:805)
    at _.extend.forEach (packages/mongo-livedata/mongo_driver.js:836)
    at _.extend.map (packages/mongo-livedata/mongo_driver.js:846)
    at _.extend.fetch (packages/mongo-livedata/mongo_driver.js:870)
    at Cursor.(anonymous function) [as fetch] (packages/mongo-livedata/mongo_driver.js:695)
    at app/server/sitemaps.js:15:28
    at Object.sitemaps.add.root [as handle] (packages/sitemaps/sitemaps.js:37)
    at next (/home/action/.parts/packages/meteor/0.8.0/packages/webapp/9dd975a6fc/npm/node_modules/connect/lib/proto.js:190:15)

conflict with spiderable

hello, i realized by installing this smart package, the meta tag added by spiderable <meta name="fragment" content="!"> is being deleted by ms-seo.

so that defeats the purpose of having this package since google will not be able to index any meteor pages if spiderable is not there.

i noticed this problem because despite sending in sitemaps, configuring ms-seo, on google i still see only my root page indexed with no title and description. lol.

Please help.

about meta tag description

It is not an issue, just a question.
I am doing SEO for my project first time. Is meta tag description should be full text of post itself or brief description of full text. which one is better? I am doing dynamic SEO so full text of post is easy to do.
I am wondering it could any effect on app performance(using onAfterAction)

404 route causes TypeError

I have a not fully investigated this but when rendering my notFoundTemplate with the current Meteor and Iron Router, this package throws an exception.

This line blows up as Router.current() exists but Router.current().route is undefined.

How to add dynamic content from an array

Hi Manuel,

I am attempting to display images that are in an array within a collection called Properties.

so within my onAfterAction block:

var property = this.data();
var photo1 = property.pictures.[0].url;
var photo2 = property.pictures.[1].url;
var property_address = property.street + ' ' + property.town + ', ' + property.province;
SEO.set({
  title: 'Title - ' + property_address,
  meta: {'description': property.propertyDescription},
  og: {
    'title': property.street,
    'description': property.propertyDescription,
    'image': [photo1, photo2],
  }
});

In any case, this isn't working because of my second line in the block pertaining to photo1. Meteor complains about the square brackets.

Do you have a suggestion or a work around to inset dynamic content into the OG tags from an array?

Thank you for any and all help you can provide.

I am loving the package. Thank you so much for your amazing work and blog post!

0.2.2: Static SEO tags not showing up

hello, package works fine at 0.1.4. However once i upgraded to 0.2.2, I observe that on my static pages, the title and meta tags are not being updated as before.

Nonetheless when i do a SeoCollection.findOne(), I found there's a document matching my current route.

Cannot read property 'getName' of undefined

Hi!
Working with iron router 1.0.0.
For notfound routes the console shows this message:

Exception from Tracker recompute function: Cannot read property 'getName' of undefined
TypeError: Cannot read property 'getName' of undefined
at getCurrentRouteName (http://localhost:3000/packages/manuelschoebel_ms-seo.js?a89d18fbd4bd0b6f17b578bdb2f40eefa4ab4c3f:281:27)
at http://localhost:3000/packages/manuelschoebel_ms-seo.js?a89d18fbd4bd0b6f17b578bdb2f40eefa4ab4c3f:299:22
at Tracker.Computation._compute (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:288:36)
at Tracker.Computation._recompute (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:302:14)
at Tracker.flush (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:430:14)

Thanks!

facebook doesn't appear to read my site's og tags

hello, i've defined my site's og tags nicely as documented in this package. however i think facebook has trouble reading meteor apps.

here's what happen when i paste a link from my site onto facebook to share

image

here's my site meta og tags

image

Creates unnecessary many documents in SeoCollection

The given code for static routes in README.md:

SeoCollection.insert({
  route_name: 'aboutMe',
  title: 'About - Manuel Schoebel',
  meta: {
    'description': 'Manuel Schoebel is an experienced web developer and startup founder. He develops but also consults startups about internet topics.'
  },
  og: {
    'title': 'About - Manuel Schoebel',
    'image': 'http://manuel-schoebel.com/images/authors/manuel-schoebel.jpg'
  }
});

stores a lot of unnecessary data in the SeoCollection. I did a db.seo.count() (a few days after deployment) and it returned 8586. I only have 9 static routes which I have configured with this Seo package, so this should have returned 9. Each route should have one and only one document related to it. I solved it by doing an update on server instead:

if(Meteor.isServer) {
  SeoCollection.update({
    route_name: 'aboutMe'
  },
  {
    $set: {
      route_name: 'aboutMe',
      title: 'About - Manuel Schoebel',
      meta: {
        'description': 'Manuel Schoebel is an experienced web developer and startup founder. He develops but also consults startups about internet topics.'
      },
      og: {
        'title': 'About - Manuel Schoebel',
        'image': 'http://manuel-schoebel.com/images/authors/manuel-schoebel.jpg'
      }
    }
  },
  {
    upsert: true
  });
}

Values can't be defined (complemented) in route settings if already defined in collection(?)

If I now understand correctly (based on my own tests) once you have defined some values for route in collection (let's say meta viewport or og:locale) you can't define other values (let's say page title or og:url) in router configuration(?) In other words mixing values from static and dynamic settings as described in README.md.

Example use case: dynamic pages can have many values which are static, like og:locale ("en_US"), but some other values are dynamic e.g. og:url ("http://example.com/post/23"). It is IMO better/easier to handle these static values in collection as well this way can be reduced code and not having data mixed with code. ... or am I missing now something :)

og:url automatically work with IronRouter

Hi,
is it possible to have the og:url meta tag automatically set according to the route rendered by IronRouter? I tried inserting a function in SEO.config, but it has not been evaluated.

Francesco

Uncaught TypeError: Cannot set property 'content' of null detector.js:450

Uncaught TypeError: Cannot set property 'content' of null detector.js:450
(anonymous function) detector.js:450
(anonymous function) detector.js:456

// convert to array
var jsonString = JSON.stringify(_apps);
// send back to background page
var meta = document.getElementById('chromesniffer_meta');
meta.content = jsonString;

Dynamically set title sometimes missing in escaped fragment

Hi Manuel,

Thanks for this excellent package and the discussion on your blog. Now that you've helped me pinpoint where this issue arises, I thought it would help to post it as an issue here too.

When I set a title dynamically using the onAfterAction hook, the title shows up fine in the browser, but it does not show up in the output of curl localhost:3000/?_escaped_fragment_=.

The problem only appears when I add a waitOn function to my route. When this is removed, it works.

Here is an example: https://github.com/RacingTadpole/ms-seo-example

Thanks for your help, and apologies if I'm doing something wrong!

meta tags keep flashing

when i set the meta dynamically, DOMs are keep appear and disappear because of reactive datasource, could you help me to point out where am I possibly do wrong?

Upgrade to latest ms-seo introduces crash?

/Users/dirkstevens/.meteor/packages/meteor-tool/.1.1.2.wg5oyf++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:245
throw(ex);
^
TypeError: undefined is not a function
at __coffeescriptShare (packages/manuelschoebel:ms-seo/seo_collection.coffee:1:22)
at /Users/dirkstevens/MadeWithWonder/albemarledreams/.meteor/local/build/programs/server/packages/manuelschoebel_ms-seo.js:22:4
at /Users/dirkstevens/MadeWithWonder/albemarledreams/.meteor/local/build/programs/server/packages/manuelschoebel_ms-seo.js:53:3
at /Users/dirkstevens/MadeWithWonder/albemarledreams/.meteor/local/build/programs/server/boot.js:222:10
at Array.forEach (native)
at Function..each..forEach (/Users/dirkstevens/.meteor/packages/meteor-tool/.1.1.2.wg5oyf++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11)
at /Users/dirkstevens/MadeWithWonder/albemarledreams/.meteor/local/build/programs/server/boot.js:117:5
Exited with code: 8
Your application is crashing. Waiting for file change.

reactive: false

somehow if I don't give msseo an non reactive object, it keeps calling the hooks of iron router and refreshing the page enc...

maybe someone else can use it?

onBeforeAction: function() {
Meteor.call('addPostView', this.params._id, this.params.user);

var post;
post = Posts.findOne(this.params._id, {reactive: false});

if (!Meteor.isClient)
  return;

SEO.set({
  title: post.title,
  meta: {
    'description': (post.summary ? post.summary : post.title)
  },
  og: {
    'title': event.title,
    'description': (post.summary ? post.summary : post.title)
  }
});

this.next();

},

Package automatically sets document.title to ""

I've noticed a weird issue. When I include this package in the Telescope codebase, it will overwrite document.title and set it to an empty string. This happens as soon as I include the package in my app, even if I don't call it anywhere in my codebase.

In this video you can see the title is getting properly set (via document.title=...), and then immediately changes: http://recordit.co/RKrcSzwzee

Not compatible with Meteor 0.9.0

It appears that ms-seo is not compatible with Meteor 0.9.0

Error:

W20140827-19:58:12.466(0)? (STDERR) The package manuelschoebel:ms-seo at 0.2.6 is incompatible with Meteor 0.9.0 or later.
W20140827-19:58:12.577(0)? (STDERR) If a new, compatible version of this package exists, running 'meteor update' should cause you to update.

Update to Meteor 0.9.1 breaks this package

Hey,

Looks like the latest update to Meteor is breaking this package. Stack trace is below:

downloading iron:router at version 0.9.3 ... done
upgraded iron:router from version 0.9.1 to version 0.9.3
My-iMac:the-web matfin$ meteor
[[[[[ ~/Sites/the-web ]]]]]

=> Started proxy.
=> Started MongoDB.
W20140910-18:49:20.877(2)? (STDERR)
W20140910-18:49:20.932(2)? (STDERR) /Users/test/.meteor/packages/meteor-tool/.1.0.28.nyv8hj++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/lib/node_modules/fibers/future.js:173
W20140910-18:49:20.933(2)? (STDERR) throw(ex);
W20140910-18:49:20.933(2)? (STDERR) ^
W20140910-18:49:20.933(2)? (STDERR) TypeError: undefined is not a function
W20140910-18:49:20.933(2)? (STDERR) at __coffeescriptShare (packages/manuelschoebel:ms-seo/seo_collection.coffee:1:21)

Favicons Are Removed from Header

It would probably be better to set in seo.coffee:

settings: {
  ignore:
    meta: ['fragment']
    link: ['stylesheet', 'icon', 'apple-touch-icon']
}

By the way, why must the package remove these tags?

Format of SEO.set parameter: why no simpler syntax?

couldn't we just define the parameters like this? without arrays using the associative array directly. i assume in the head section order doesn't matter and we wouldn't need to define same name'd attributes multiple times

SEO.set
  title: data.name
  meta: 
    description: data.description
  og: 
    title: data.name
    description: data.description

Delay on Title

Hi @DerMambo!

Great job with this package, thanks...

I notice a delay when changing from the standard values to the dynamic ones.

Just wondering if there is any problem with google robots just "seeing" the standard.

A doubt from a SEO beginner.haha Sayin bulshit?

Thanks man!

cannot configure in meteor.startup

hello,
I'm using meteor 0.8 and based on your documentations it say:

Meteor.startup(function() {
  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' 
    }
  });
});

unfortunately this does not works. Server sides it throw the following error:

ReferenceError: SEO is not defined

the correct way to set this up is:

Meteor.startup(function () {
    if(Meteor.isClient){
         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'
            }
        });
    }
});

i will attach a pull request.
thx

other tags

I see it supports rel_author. Have you considered supporting all the News Sitemap and other Google News requirements for publishers?

Decouple Iron Router

Hello, now the package uses Iron Router by default, what is about a case, when you have a different router? (e.g. Flow Router)

What is the solution? Do I have to use another SEO package?

Correct data structure for tags

I ran into some issues structuring my data set for the SEO collection. My data is as follows:

// SEO Tags
SeoCollection.insert({
 "route_name": "home", // the name of the Iron-Router route
 "title": "Crisp Painting - Interior Painting Professionals",
 "meta" : [
   {
     "key" : "description",
     "value" : "Crisp Painting is a fast growing painting company, specializing in high-volume apartment, residential, and commercial painting.",
   },
   {
     "key": "tags",
     "value" : "painters, West Lafayette, Lafayette, Indiana, Indianapolis, Bloomington",
   }
 ],
 "og" : {
   'title' : 'Interior Painting Professionals. Operating in Lafayette/West Lafayette, Indianapolis, and Bloomington, Indiana',
   'image' : 'http://crisppainting.com/images/logo.png',
 }
});

I am only seeing the og:title, 'tags', and half of the og:image metas show up on my page. The title and meta description of the page are not working.

Scoping Issue?

I'm seeing a weird issue in Meteor 1.0.3 where SEO.set({ ... }); isn't able to see my local post variable. Code below:

onAfterAction: function() {

        if (!Meteor.isClient) {
            return;
        }

        var post = this.data();
        SEO.set({
            'title': post.title,
            'meta': {
                'description': post.short
            },
            'og': {
                'title': post.title,
                'description': post.short,
                'image': post.image_url
            }
        });
    }

Exception in callback of async function: TypeError: Cannot read property 'title' of undefined (this is throwing at the first call of post.title)

The data exists, if I do console.log(post) I can see everything I'm looking for. Any suggestions?

Cannot set meta charset tag

It looks like ms-seo clear all my meta tags and the ignore setting is only applicable for attribute name.

Is there any way I can insert my meta charset tag?

Current version causing error on 'mrt add ms-seo'

I'm getting the following when trying to install ms-seo.

✓ iron-router
    tag: https://github.com/EventedMind/iron-router.git#v0.6.2
✓ ms-seo
    tag: https://github.com/DerMambo/ms-seo#v0.1.0

/usr/local/share/npm/lib/node_modules/meteorite/lib/sources/git.js:151
hrow "There was a problem checking out " + self.checkoutType + ": " + (self.co

Other meteorite modules install fine.

Static HTML created by spiderable empty tags

I'm pretty sure, that this only an issue of my application hosted with heroku - the title tag is empty and the description tag doesn't appear at all in the html created by phantomjs. Is there a known issue related to heroku?

Iron.Router route called twice when using SEO

I am using SEO with IronRouter. I have the following call:

SEO.set({title: 'Home - ' + Meteor.App.NAME});

in a route onAfterAction function. I noticed that using SEO the route gets called twice. Removing the SEO call it gets correctly called once. Am I doing anything wrong?

escaping strings passed to meta tags

hello,

I'm passing some dynamic strings to SEO.set to be set on the meta tags. However I realized that the strings are not properly escaped to be inserted into the meta tags

here's my original string for instance:

"My fault? You've never really changed, have you? All these years—" she stepped forward to brutally pistol-whip me across the face. Or where my face was. I rolled out of the way, and behind her. In a ...

Here's the generated meta tag

image

Seo set title on the iron:router dataNotFound

Hey!
How to add title on the dataNotFound plugin?

console tells me:

Exception from Tracker recompute function: debug.js:41 TypeError: Cannot read property 'getName' of undefined

I have some config:

Meteor.startup(function() {
    if (Meteor.isClient) {
    return SEO.config({
        title: "someTitle",
        meta: {
            "description": "someDesc"
        }
    });
    }
});

Title tag and Google Webmaster Tools

Hi Manuel,

Am I doing something wrong? I can see correct title tag in inspector, but google webmaster tools complains that I don't have title tags in my pages. I am setting up SEO in controller's onAfterAction like this:

...
onAfterAction: function() {
    SEO.set({
        title: "Meteor Generator",
        meta: {
            description: "Contribute to Meteor.js code generator"
        },
        og: {
            title: "Meteor Generator",
            description: "Contribute to Meteor.js code generator"
        }
});
...

Site is here: www.meteorkitchen.com

I attached screenshot from webmaster tools.

Thank you!
screenshot from 2014-08-06 00 24 20

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.