{"id":20110358,"url":"https://github.com/lukeocodes/netlify-plugin-opensearch","last_synced_at":"2026-05-12T00:48:28.854Z","repository":{"id":65456922,"uuid":"267836389","full_name":"lukeocodes/netlify-plugin-opensearch","owner":"lukeocodes","description":"Automatically generate opensearch search.xml file with Netlify","archived":false,"fork":false,"pushed_at":"2020-06-26T09:50:33.000Z","size":32,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-01T15:09:05.882Z","etag":null,"topics":["netlify","netlify-plugin","nodejs","opensearch","search"],"latest_commit_sha":null,"homepage":"https://netlify-plugins-by-lukeocodes.netlify.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lukeocodes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-29T11:01:24.000Z","updated_at":"2020-06-26T09:50:35.000Z","dependencies_parsed_at":"2023-01-24T11:55:11.840Z","dependency_job_id":null,"html_url":"https://github.com/lukeocodes/netlify-plugin-opensearch","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukeocodes%2Fnetlify-plugin-opensearch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukeocodes%2Fnetlify-plugin-opensearch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukeocodes%2Fnetlify-plugin-opensearch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukeocodes%2Fnetlify-plugin-opensearch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lukeocodes","download_url":"https://codeload.github.com/lukeocodes/netlify-plugin-opensearch/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241341349,"owners_count":19947097,"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":["netlify","netlify-plugin","nodejs","opensearch","search"],"created_at":"2024-11-13T18:11:34.056Z","updated_at":"2026-05-12T00:48:28.815Z","avatar_url":"https://github.com/lukeocodes.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](https://img.shields.io/badge/main-not%20master-green)\n![](https://img.shields.io/badge/made%20with-%E2%9D%A4-red)\n![](https://img.shields.io/npm/v/netlify-plugin-opensearch)\n![](https://img.shields.io/github/contributors/lukeocodes/netlify-plugin-opensearch)\n![](https://img.shields.io/github/issues/lukeocodes/netlify-plugin-opensearch)\n\n# Netlify Opensearch Plugin\n\nAutomatically generate [OpenSearch](http://a9.com/-/spec/opensearch/1.1/) search.xml file postBuild on Netlify deploy.\n\n## What is this?\n\nEver wondered why when you type a URL and the browser says \"press TAB to search\"? That's opensearch! In Chrome or Chromium, the URL bar (or Omnibox) offers the ability to search a site without navigating to the sites homepage. Once Chromium has determined it can search a site, any time the user types the URL of the site the user is reminded they can \"press TAB to search\". \n\nOnce the user presses TAB, they can type in a string and presses the enter. This automatically sents the user to the URL of the site search, along with their search terms, where the search is performed and results shown.\n\nType in the URL of the search demo site and see! [https://netlify-plugins-by-lukeocodes.netlify.app](https://netlify-plugins-by-lukeocodes.netlify.app)\n\n![Screenshot 2020-06-24 at 08 58 25](https://user-images.githubusercontent.com/956290/85519211-0e529a00-b5f9-11ea-8909-b8fb2024d6f5.png)\n\nThen press TAB and you can search the demo site directly!\n\n![Screenshot 2020-06-24 at 08 58 30](https://user-images.githubusercontent.com/956290/85519208-0d216d00-b5f9-11ea-9dfd-705d5384e4e3.png)\n\n## Usage\n\nTo install, add the plugin in your `netlify.toml`. No config is required.\n\n```toml\n[[plugins]]\n  package = \"netlify-plugin-opensearch\"\n```\n\nDefault config will generate the following file at `https://your-site-name.netlify.app/search.xml`\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cOpenSearchDescription xmlns=\"http://a9.com/-/spec/opensearch/1.1/\"\u003e\n  \u003cShortName\u003eSearch\u003c/ShortName\u003e\n  \u003cUrl type=\"text/html\" template=\"https://your-site-name.netlify.app/search?q={searchTerms}\"/\u003e\n\u003c/OpenSearchDescription\u003e\n```\n\n## Options\n\nThe available options.\n\n| plugins.inputs  | type  | required  | default  | description  |\n|---|---|---|---|---|\n| searchUrl | String | false | `\u003cenv.URL\u003e/search?q=` | The URL of the search query, remembering that the search parameters are concatenated to the end as `{searchTerms}` |\n| searchFile | String | false | `search.xml` | The name of the file to be saved to. You'll need to configure your metadata to point to this file. |\n| siteShortName | String | false | Search | A short name of the site to search. **It must be 16 or fewer characters** |\n| siteDescription | String|null | false | null | A description of the site to search. **It must be 1024 or fewer characters** |\n| siteTags | String|null | false | null | Comma separated list of keywords and strings |\n| siteContact | String|null | false | null | Email address to contact the site |\n\n### Options Applied\n\nHow to use these options:\n\n```toml\n[[plugins]]\n  package = \"netlify-plugin-opensearch\"\n    [plugins.inputs]\n      searchUrl = \"https://different-website.com/search?q=\"\n      searchFile = \"opensearch.xml\"\n      siteShortName = \"My Site\"\n      siteDescription = \"Search cool content from my site\"\n      siteTags = \"my site\"\n      siteContact = \"me@my-site.com\"\n```\n\nWhich will produce the following file at `https://your-site-name.netlify.app/opensearch.xml`:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cOpenSearchDescription xmlns=\"http://a9.com/-/spec/opensearch/1.1/\"\u003e\n  \u003cShortName\u003eMy Site\u003c/ShortName\u003e\n  \u003cUrl type=\"text/html\" template=\"https://different-website.com/search?q={searchTerms}\"/\u003e\n  \u003cDescription\u003eSearch cool content from my site\u003c/Description\u003e\n  \u003cTags\u003emy site\u003c/Tags\u003e\n  \u003cContact\u003eme@my-site.com\u003c/Contact\u003e\n\u003c/OpenSearchDescription\u003e\n```\n\n### Options On the Demo Site\n\nFor more context, this is how the demo site is configured:\n\n```toml\n[[plugins]]\n  package = \"netlify-plugin-opensearch\"\n    [plugins.inputs]\n      siteShortName = \"Demo Site\"\n      siteDescription = \"Find stuff on the demo site\"\n      siteTags = \"demos\"\n      siteContact = \"luke@lukeoliff.com\"\n```\n\nWhich produced the following file as you can [see here](https://netlify-plugin-algolia-index.netlify.app/search.xml)\n\n```xml\n\u003cOpenSearchDescription xmlns=\"http://a9.com/-/spec/opensearch/1.1/\"\u003e\n  \u003cShortName\u003eDemo Site\u003c/ShortName\u003e\n  \u003cUrl type=\"text/html\" template=\"https://netlify-plugin-algolia-index.netlify.app/search?q={searchTerms}\"/\u003e\n  \u003cDescription\u003eFind stuff on the demo site\u003c/Description\u003e\n  \u003cTags\u003edemos\u003c/Tags\u003e\n  \u003cContact\u003eluke@lukeoliff.com\u003c/Contact\u003e\n\u003c/OpenSearchDescription\u003e\n```\n\n## Install on your website\n\nNow, a search metatag to the head of your site, changing `search.xml` to match your configuration above.\n\n```html\n\u003clink rel=\"search\" href=\"search.xml\" type=\"application/opensearchdescription+xml\" title=\"Your Site Name\" /\u003e\n```\n\n## To do\n\n- Better support for the OpenSearch specification [as documented here](http://a9.com/-/spec/opensearch/1.1/) and [here](https://developer.mozilla.org/en-US/docs/Web/OpenSearch).\n\n## Contributing\n\nMake pull-requests, but follow [code of conduct](CODE_OF_CONDUCT.md) please.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukeocodes%2Fnetlify-plugin-opensearch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flukeocodes%2Fnetlify-plugin-opensearch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukeocodes%2Fnetlify-plugin-opensearch/lists"}