{"id":13312294,"url":"https://github.com/cleverdevil/pseudonym","last_synced_at":"2025-03-15T06:32:41.157Z","repository":{"id":145921924,"uuid":"168889273","full_name":"cleverdevil/pseudonym","owner":"cleverdevil","description":"Web service for IndieWeb identity discovery, \"nickname\" search, and replacement.","archived":false,"fork":false,"pushed_at":"2019-02-05T19:04:38.000Z","size":41,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-07T05:06:21.255Z","etag":null,"topics":["indieweb","microformats2"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cleverdevil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-02T23:22:55.000Z","updated_at":"2023-08-05T10:51:14.000Z","dependencies_parsed_at":"2024-03-09T09:38:41.907Z","dependency_job_id":null,"html_url":"https://github.com/cleverdevil/pseudonym","commit_stats":{"total_commits":9,"total_committers":1,"mean_commits":9.0,"dds":0.0,"last_synced_commit":"9e23727aba851724073162505e9ea1b1069bf8e7"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cleverdevil%2Fpseudonym","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cleverdevil%2Fpseudonym/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cleverdevil%2Fpseudonym/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cleverdevil%2Fpseudonym/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cleverdevil","download_url":"https://codeload.github.com/cleverdevil/pseudonym/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243695454,"owners_count":20332622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["indieweb","microformats2"],"created_at":"2024-07-29T18:03:38.190Z","updated_at":"2025-03-15T06:32:41.150Z","avatar_url":"https://github.com/cleverdevil.png","language":"Python","readme":"Pseudonym\n=========\n\nPseudonym is a simple web service API designed to help\n[IndieWeb](https://www.indieweb.org) websites with the problem of \"mentioning\"\npeople both on the IndieWeb and on [silos](https://indieweb.org/silo). A version\nof this code is available as a service at\n[https://pseudonym.cleverdevil.io](https://pseudonym.cleverdevil.io).\n\nFor example, on the IndieWeb, my identity is [my\nwebsite](https://cleverdevil.io), which is published at\n[https://cleverdevil.io](https://cleverdevil.io). I am also present on a number\nof silos, including:\n\n* [@cleverdevil on Micro.blog](http://micro.blog/cleverdevil)\n* [@cleverdevil on Twitter](https://twitter.com/cleverdevil)\n* [@cleverdevil on LinkedIn](https://www.linkedin.com/in/cleverdevil)\n* [@cleverdevil on GitHub](https://github.com/cleverdevil)\n* Etc.\n\nWhile I have been lucky enough to get the same \"nickname\" across all of these\nsilos, not all people have been so lucky. When attempting to syndicate a post\nfrom my website to other services such as Twitter and Micro.blog while\n\"mentioning\" someone else, I may need to format that \"mention\" in a different\nway per service, perhaps even with a different username. Pseudonym aims to make\nthis a bit simpler. How? Well, let's dive into the API.\n\nPseudonym Lookup\n----------------\n\nTo determine the \"pseudonyms\" for a particular IndieWeb identity, simply send an\n`HTTP GET` request to `https://pseudonym.cleverdevil.io/identity?url=` with an\nIndieWeb website passed in as the `url` parameter. For example:\n\n```\nhttp get https://pseudonym.cleverdevil.io/identity?url=https://cleverdevil.io\n\n{\n    \"name\": \"Jonathan LaCour\",\n    \"nicknames\": null,\n    \"pseudonyms\": [\n        {\n            \"target\": \"twitter\",\n            \"url\": \"https://twitter.com/cleverdevil\",\n            \"username\": \"cleverdevil\"\n        },\n        {\n            \"target\": \"linkedin\",\n            \"url\": \"https://www.linkedin.com/in/cleverdevil\",\n            \"username\": \"cleverdevil\"\n        },\n        {\n            \"target\": \"keybase\",\n            \"url\": \"https://keybase.io/cleverdevil\",\n            \"username\": \"cleverdevil\"\n        },\n        {\n            \"target\": \"github\",\n            \"url\": \"https://github.com/cleverdevil\",\n            \"username\": \"cleverdevil\"\n        },\n        {\n            \"target\": \"instagram\",\n            \"url\": \"https://instagram.com/cleverdevil\",\n            \"username\": \"cleverdevil\"\n        },\n        {\n            \"target\": \"micro.blog\",\n            \"url\": \"https://micro.blog/cleverdevil\",\n            \"username\": \"cleverdevil\"\n        }\n    ],\n    \"timestamp\": 1549327619.68206,\n    \"url\": \"https://cleverdevil.io/\"\n}\n```\n\nThe requested URL will be fetched and parsed. The \"name\" and \"nicknames\" from\nthe website's [h-card](https://indieweb.org/h-card) will be identified, along\nwith any \"pseudonyms\" declared as [rel-me](https://indieweb.org/rel-me)\nreferences.\n\nIndividual identities will be cached in Pseudonym, and will be updated on-demand\nat most once every 24 hours.\n\nIdentity Search\n---------------\n\nInterested in finding an identity based upon their username on a silo or a\n`p-nickname` or `p-name` declared in their `h-card`? You can search the cache\nthat Pseudonym is aware of by sending an `HTTP GET` request:\n\n```\nhttp get https://pseudonym.cleverdevil.io/search?term=lacour\n\n[\n    {\n        \"name\": \"Jonathan LaCour\",\n        \"nicknames\": null,\n        \"pseudonyms\": [\n            {\n                \"target\": \"twitter\",\n                \"url\": \"https://twitter.com/cleverdevil\",\n                \"username\": \"cleverdevil\"\n            },\n            {\n                \"target\": \"linkedin\",\n                \"url\": \"https://www.linkedin.com/in/cleverdevil\",\n                \"username\": \"cleverdevil\"\n            },\n            {\n                \"target\": \"keybase\",\n                \"url\": \"https://keybase.io/cleverdevil\",\n                \"username\": \"cleverdevil\"\n            },\n            {\n                \"target\": \"github\",\n                \"url\": \"https://github.com/cleverdevil\",\n                \"username\": \"cleverdevil\"\n            },\n            {\n                \"target\": \"instagram\",\n                \"url\": \"https://instagram.com/cleverdevil\",\n                \"username\": \"cleverdevil\"\n            },\n            {\n                \"target\": \"micro.blog\",\n                \"url\": \"https://micro.blog/cleverdevil\",\n                \"username\": \"cleverdevil\"\n            }\n        ],\n        \"timestamp\": 1549327619.68206,\n        \"url\": \"https://cleverdevil.io/\"\n    }\n]\n```\n\nA list of matched identities will be returned.\n\nContent Formatting\n------------------\n\nIf you'd like some help formatting your content for syndication, you can\nleverage Pseudonym to transform your content automatically for different\nsyndication targets. Simply use Pseudonym's special `@{}` mention syntax. If you\nwant to \"mention\" me, you would use `@{https://cleverdevil.io}` or\n`@{cleverdevil.io}` for short in your post. Then, send that content to Pseudonym\nvia an `HTTP POST`:\n\n```\nhttp post https://pseudonym.cleverdevil.io/format content=\"Hello @{cleverdevil.io}, I hope you're well.\"\n\n{\n    \"github\": {\n        \"html\": \"Hello \u003ca href=\\\"https://github.com/cleverdevil\\\"\u003eJonathan LaCour\u003c/a\u003e, I hope you're well..\",\n        \"text\": \"Hello @cleverdevil, I hope you're well..\"\n    },\n    \"instagram\": {\n        \"html\": \"Hello \u003ca href=\\\"https://instagram.com/cleverdevil\\\"\u003eJonathan LaCour\u003c/a\u003e, I hope you're well..\",\n        \"text\": \"Hello @cleverdevil, I hope you're well..\"\n    },\n    \"keybase\": {\n        \"html\": \"Hello \u003ca href=\\\"https://keybase.io/cleverdevil\\\"\u003eJonathan LaCour\u003c/a\u003e, I hope you're well..\",\n        \"text\": \"Hello @cleverdevil, I hope you're well..\"\n    },\n    \"linkedin\": {\n        \"html\": \"Hello \u003ca href=\\\"https://www.linkedin.com/in/cleverdevil\\\"\u003eJonathan LaCour\u003c/a\u003e, I hope you're well..\",\n        \"text\": \"Hello @cleverdevil, I hope you're well..\"\n    },\n    \"micro.blog\": {\n        \"html\": \"Hello \u003ca href=\\\"https://micro.blog/cleverdevil\\\"\u003eJonathan LaCour\u003c/a\u003e, I hope you're well..\",\n        \"text\": \"Hello @cleverdevil, I hope you're well..\"\n    },\n    \"original\": {\n        \"html\": \"Hello @{cleverdevil.io}, I hope you're well..\",\n        \"text\": \"Hello @{cleverdevil.io}, I hope you're well..\"\n    },\n    \"twitter\": {\n        \"html\": \"Hello \u003ca href=\\\"https://twitter.com/cleverdevil\\\"\u003eJonathan LaCour\u003c/a\u003e, I hope you're well..\",\n        \"text\": \"Hello @cleverdevil, I hope you're well..\"\n    }\n}\n```\n\nMultiple `@{}` mentions are allowed for a single request, but be aware that in\nsome cases a particular identity may not be present in a particular target.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcleverdevil%2Fpseudonym","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcleverdevil%2Fpseudonym","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcleverdevil%2Fpseudonym/lists"}