{"id":49320100,"url":"https://github.com/synpulse8-opensource/pulse8-semantic-search-plugin-for-strapi","last_synced_at":"2026-04-26T17:03:26.695Z","repository":{"id":336396951,"uuid":"1142133474","full_name":"synpulse8-opensource/pulse8-semantic-search-plugin-for-strapi","owner":"synpulse8-opensource","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-04T07:10:13.000Z","size":1076,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-04T19:09:53.373Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/strapi-semantic-search","language":"TypeScript","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/synpulse8-opensource.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-26T01:49:50.000Z","updated_at":"2026-02-04T07:15:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/synpulse8-opensource/pulse8-semantic-search-plugin-for-strapi","commit_stats":null,"previous_names":["synpulse8-opensource/pulse8-semantic-search-plugin-for-strapi"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/synpulse8-opensource/pulse8-semantic-search-plugin-for-strapi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synpulse8-opensource%2Fpulse8-semantic-search-plugin-for-strapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synpulse8-opensource%2Fpulse8-semantic-search-plugin-for-strapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synpulse8-opensource%2Fpulse8-semantic-search-plugin-for-strapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synpulse8-opensource%2Fpulse8-semantic-search-plugin-for-strapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/synpulse8-opensource","download_url":"https://codeload.github.com/synpulse8-opensource/pulse8-semantic-search-plugin-for-strapi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synpulse8-opensource%2Fpulse8-semantic-search-plugin-for-strapi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32305043,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T09:34:17.070Z","status":"ssl_error","status_checked_at":"2026-04-26T09:34:00.993Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2026-04-26T17:03:26.497Z","updated_at":"2026-04-26T17:03:26.674Z","avatar_url":"https://github.com/synpulse8-opensource.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Strapi Semantic Search Plugin\n\nAI-powered semantic search for Strapi CMS using embedding models. Search your content by meaning, not just keywords.\n\n## Table of contents\n\n- [Quick start](#quick-start)\n- [Description](#description)\n- [Configuration](#configuration)\n- [API endpoints](#api-endpoints)\n- [Troubleshooting](#troubleshooting)\n- [Local development](#local-development)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Quick start\n\nTo add semantic search to your local Strapi instance, simply install the npm package.\n\n```bash\nnpm install strapi-semantic-search\n# or\nyarn add strapi-semantic-search\n```\n\nOnce installed, navigate to the semantic search tab in the admin panel and configure the content to be serach.\n\nFor strapi cloud, we are working on getting this plugin into Strapi market, stay tuned.\n\n## Description\n\nThe main goal of this plugin is to allow users to easily setup and use semantic search with any embedding model that they want.\nThe plugin provide the following features:\n\n- **Semantic Search**: Find content based on meaning using AI embeddings\n- **Multi-Provider Support**: Works with any OpenAI-compatible API\n- **Auto-Generation**: Automatically generate embeddings when content is created or updated\n- **Multi-Content Type**: Search across multiple content types simultaneously\n- **Embedding Management**: View statistics, regenerate, or delete embeddings from the UI\n- **Note**: Currently the plugin will **only** generate embeddings for content that is published.\n\n## Configuration\n\nHead to the admin panel and use the UI to configure your embedding model connection details and the plugin settings. You can find the content type of the your content from the url, e.g. `http://localhost:1337/admin/content-manager/collection-types/api::article.article`. For more examples on configuration, check the [screenshots](./screenshots/) folder.\n\n### Field Configuration\n\nEach content type has the following configurable fields:\n\n| Setting               | Purpose                                                                                                                                                                                                                                     | Example                      |\n| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |\n| **Searchable fields** | Top-level fields the plugin reads to build embedding text.                                                                                                                                                                                  | `title, description, blocks` |\n| **Populate fields**   | Relations, components, dynamic zones, or media fields to load from the database. Scalar fields (strings, numbers, booleans, dates) are always included automatically and should **not** be listed here. Leave empty to populate all fields. | `blocks, author, coverImage` |\n\n\u003e **Important**: The `populateFields` setting only accepts relation, component, dynamic zone, and media field names. Scalar fields like `title`, `description`, `slug`, etc. are always returned by Strapi and do not need to be populated. Adding a scalar field to `populateFields` will cause a validation error. See [Strapi's REST API](https://docs.strapi.io/dev-docs/api/rest/populate-select) for more details.\n\n### Similarity Scores\n\nWhen searching you can configure the similarity score threshold which is a number 0-1 that indicates how relevant the content is to the query. Lower values return more results but may include less relevant content. In practice, we found that for searching in longer pieces of text 0.25 - 0.3 indicates that the article is relevant.\n\n## API Endpoints\n\nAll endpoints are available under `/api/strapi-semantic-search/`. You can optionally pass **`populate`** in the request body to control which relations are loaded on results—same format as [Strapi's REST API](https://docs.strapi.io/dev-docs/api/rest/populate-select): `\"*\"` (all), `[\"author\", \"cover\"]`, or a deep object. See [documentation](/server/src/documentation/index.ts) for the full OpenAPI spec.\n\n### Search Single Content Type\n\n```bash\nPOST /api/strapi-semantic-search/search\nContent-Type: application/json\n\n{\n  \"query\": \"digital transformation in banking\",\n  \"contentType\": \"api::article.article\",\n  \"limit\": 10,\n  \"threshold\": 0.3,\n  \"locale\": \"en\",\n  \"populate\": [\"author\"]\n}\n```\n\n### Search Multiple Content Types\n\n```bash\nPOST /api/strapi-semantic-search/multi-search\nContent-Type: application/json\n\n{\n  \"query\": \"financial services consulting\",\n  \"contentTypes\": [\"api::article.article\", \"api::page.page\"],\n  \"limit\": 10,\n  \"threshold\": 0.3,\n  \"locale\": \"en\"\n  \"populate\": [\"author\"]\n}\n```\n\n## Troubleshooting\n\nCheck the console logs in your Strapi instance with the `[Semantic Search]` prefix. Common issues include\n\n- Misconfigured API settings\n- Searching for unpublished content\n- Embeddings have not been generated yet\n- Threshold is set too high\n\n## Local Development\n\nFor local plugin development, view [this guide](https://docs.strapi.io/cms/plugins-development/create-a-plugin) on how to link a local plugin to a local Strapi instance with yalc. Essentially\n\n```sh\n# In the plugin directory\nnpm install\nnpm run build\nnpm run watch:link\n```\n\n```sh\n# In the Strapi instance\nnpm install openai\nnpx yalc add strapi-semantic-search \u0026\u0026 npx yalc link strapi-semantic-search \u0026\u0026 npx install\nnpm run develop\n```\n\n## Contributing\n\nThank you for your interest in contributing to the semantic search plugin! This plugin is created and maintained by [Synpulse](https://www.synpulse.com/en). If you would like to contribute to the project, please create an issue and submit a pull request. Our maintainers will review your pull request as soon as possible.\n\n## License\n\nSee the [LICENSE](./LICENSE) file for licensing information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsynpulse8-opensource%2Fpulse8-semantic-search-plugin-for-strapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsynpulse8-opensource%2Fpulse8-semantic-search-plugin-for-strapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsynpulse8-opensource%2Fpulse8-semantic-search-plugin-for-strapi/lists"}