{"id":17924050,"url":"https://github.com/benpate/sherlock","last_synced_at":"2025-04-03T10:44:52.629Z","repository":{"id":169869717,"uuid":"645418466","full_name":"benpate/sherlock","owner":"benpate","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-01T21:50:25.000Z","size":1541,"stargazers_count":21,"open_issues_count":4,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-09T00:19:28.839Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/benpate.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-05-25T15:52:07.000Z","updated_at":"2025-01-27T02:03:16.000Z","dependencies_parsed_at":"2023-11-22T22:28:21.735Z","dependency_job_id":"69bb0497-0786-426c-8eb7-d2e51226ada6","html_url":"https://github.com/benpate/sherlock","commit_stats":null,"previous_names":["benpate/sherlock"],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benpate%2Fsherlock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benpate%2Fsherlock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benpate%2Fsherlock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benpate%2Fsherlock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/benpate","download_url":"https://codeload.github.com/benpate/sherlock/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246989499,"owners_count":20865306,"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":[],"created_at":"2024-10-28T20:46:54.963Z","updated_at":"2025-04-03T10:44:52.606Z","avatar_url":"https://github.com/benpate.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sherlock\n\n\u003cimg alt=\"Illustration of Sherlock Holmes and Watson in a train car, by Sidney Paget. From Arthur Conan Doyle's 1892 book 'The Adventure of Silver Blaze'\" src=\"https://github.com/benpate/sherlock/raw/main/meta/The_Adventure_of_Silver_Blaze.jpg\" style=\"width:100%; display:block; margin-bottom:20px;\"\u003e\n\n[![GoDoc](https://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](http://pkg.go.dev/github.com/benpate/sherlock)\n[![Version](https://img.shields.io/github/v/release/benpate/sherlock?include_prereleases\u0026style=flat-square\u0026color=brightgreen)](https://github.com/benpate/sherlock/releases)\n[![Build Status](https://img.shields.io/github/actions/workflow/status/benpate/sherlock/go.yml?style=flat-square)](https://github.com/benpate/sherlock/actions/workflows/go.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/benpate/sherlock?style=flat-square)](https://goreportcard.com/report/github.com/benpate/sherlock)\n[![Codecov](https://img.shields.io/codecov/c/github/benpate/sherlock.svg?style=flat-square)](https://codecov.io/gh/benpate/sherlock)\n\n## Relentless Metadata Inspector\n\nSherlock is a Go library that inspects a URL for any and all available metadata, pulling from whatever metadata formats are available, and returning it as an [ActivityStreams 2.0](https://www.w3.org/TR/activitystreams-core/) document.\n\nThe goal is to have a standard interface into all web content, regardless of competing data standards.\n\n### Supported Formats\n\n✅ [ActivityPub](https://www.w3.org/TR/activitypub/)/[ActivityStreams](https://www.w3.org/TR/activitystreams-core/)\n\n✅ [MicroFormats](https://microformats.org)\n\n✅ [Open Graph](https://ogp.me)\n\n### In Progress\n\n🚧 [WebFinger](https://webfinger.net)\n\n🚧 [JSON-LD (Linked)](https://json-ld.org/)\n\n🚧 [Twitter Metadata](https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/abouts-cards)\n\n🚧 [Microdata](https://html.spec.whatwg.org/multipage/microdata.html#microdata)\n\n🚧 [RDFa](https://rdfa.info)\n\n🚧 [oEmbed data provider](https://oembed.com)\n\n\n### Using Sherlock\n\n```go\nclient := sherlock.NewClient()\n\n// If you only have a URL, then pass it in to .Load()\nresult, err := client.Load(\"https://my-url-here\")\n\n// If you have already downloaded a file, then pass it to .Parse()\nresult, err := sherlock.ParseHTML(\"https://original-url\", \u0026bytes.Buffer)\n\n```\n\n### Using Sherlock with Hannibal\n\nSherlock can also be used as an http client for [Hannibal](https://github.com/benpate/hannibal), the ActivityPub library for Go.  This allows many other online resources to *look like* they're ActivityPub-enabled.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenpate%2Fsherlock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenpate%2Fsherlock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenpate%2Fsherlock/lists"}