glennjones / elsewhere-mapper

Social media profile endpoint mapper for node.js
MIT License
17 stars 1 forks source link

Identify accounts with PubSubHubbub-enabled feeds #2

Open evanp opened 12 years ago

evanp commented 12 years ago

I want a machine to put in an account ID, like http://facebook.com/evan.prodromou or http://twitter.com/evanpro or whatever, and get out a list of PubSubHubbub-enabled feeds that the person has instead.

For example, https://twitter.com/laughingsquid is also http://links.laughingsquid.com/.

The point for me is to help with on-boarding of my PubSubHubbub-enabled services. If I can get someone to log in with Twitter, we can then get their social graph data out of Twitter and say, "You follow Matt Mullenweg? Subscribe to his photo blog. Like Leo Laporte? Here's his Posterous." etc.

glennjones commented 12 years ago

So ‘Elsewhere-mapper’ is part of 3 node.js modules that will work together.

At its heart ‘Elsewhere’ is a rel=me spider. It can find a graph of one person’s linked profiles or pages on the web. Its output is a bit rough to use directly so I have built ‘Elsewhere-mapper’ which can sit on top of ‘Elsewhere’. The mapper follows the work done by Brad Fitzpatick on Social Graph Node Mapping (sgn). This is not a perfect solution, but a more pragmatic approach to finding resource endpoints.

So ‘Elsewhere-mapper’ first takes a url such as https://twitter.com/evanprodromou and turns it into sgn://twitter.com/?ident=evanprodromou using templates of the sites url structures

Once it has the sgn, it returns a list of endpoints for the domain. Example API output for your twitter sgn is

http://elsewhere-mapper.jit.su/api/?url=http%3A%2F%2Ftwitter.com%2Fevanpro&querytype=spider

This is all done with mapping files, which describe the endpoints for each domain. I want to build the webfinger API into the project. To use it as an additional discovery mechanism to add to the mapping data. A mapping file looks like this:

{
    "name": "Dopplr",
    "domain": "dopplr.com",
    "urlMappings": [{
        "urlTemplate": "http://dopplr.com/traveller/{username}",
        "schema": "hCard",
        "contentType": "Profile",
        "mediaType": "Html"
    }, {
        "urlTemplate": "http://dopplr.com/traveller/{username}/public",
        "schema": "None",
        "contentType": "None",
        "mediaType": "Html"
    }],
    "www": true
}

They are often bigger than this example, with quite a few urlTemplates.

There is no reason why these files cannot be expanded with additional endpoint types. I was already thinking about other metadata types such as microdata, rdfa, Facebook OG and Twitter Card.

To answer your question, we are not aiming to collect a person’s social graph of friends, but their own profiles/identities across the web. Yes you could expand the mapping to cover a new endpoint type, but it’s not a discovery process.

That said the mapping element of this project maybe of use to you.