{"_id":"@alkhipce/strapi-plugin-llm-translate","_rev":"3-25f37a31a09ae10c9168489d5e727cf9","name":"@alkhipce/strapi-plugin-llm-translate","dist-tags":{"alpha":"1.0.0-alpha.1","latest":"1.0.1"},"versions":{"1.0.0-alpha.1":{"name":"@alkhipce/strapi-plugin-llm-translate","version":"1.0.0-alpha.1","keywords":["strapi","plugin","strapi-plugin","i18n","internationalization","localization","translation","llm","ai","anthropic","claude","openai","gpt"],"author":{"name":"Dyomin Ilya","email":"i.dyomin@tekmates.pro"},"license":"MIT","_id":"@alkhipce/strapi-plugin-llm-translate@1.0.0-alpha.1","maintainers":[{"name":"alkhipce","email":"alkhipce@mail.ru"}],"homepage":"https://github.com/etozhealkhipce/strapi-plugin-llm-translate#readme","bugs":{"url":"https://github.com/etozhealkhipce/strapi-plugin-llm-translate/issues"},"dist":{"shasum":"51defb940434ea0cb1274a18dc1b80adef2fee09","tarball":"https://registry.npmjs.org/@alkhipce/strapi-plugin-llm-translate/-/strapi-plugin-llm-translate-1.0.0-alpha.1.tgz","fileCount":46,"integrity":"sha512-BKbbWQIPdUu0LLvc1R9zDJqGe6bUHEfy+z0UaqzsEAXIm6OvjfnICiGHurgzrMNTFLZnyEVwtlNRHL4FvQPzFg==","signatures":[{"sig":"MEUCIFABYPX6hEu/K6mldQ/rGiShQ4Y8x8PSoxKezMqSOWrnAiEAhR0IzSpTjlWZDUZnzfJkvUa8CLRYrjr3AluzICWxtXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100921},"type":"commonjs","strapi":{"kind":"plugin","name":"llm-translate","description":"Auto-translate localized content into every enabled locale using an LLM provider (Anthropic or OpenAI).","displayName":"LLM Translate"},"engines":{"npm":">=6.0.0","node":">=18.0.0 <=22.x.x"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"2a96010b53c8c37dfd0b0fc6e54ff933fc57dae4","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","test:ts:back":"tsc -p server/tsconfig.json --noEmit","test:ts:front":"tsc -p admin/tsconfig.json --noEmit","prepublishOnly":"npm run build && npm run verify"},"_npmUser":{"name":"alkhipce","email":"alkhipce@mail.ru"},"repository":{"url":"git+https://github.com/etozhealkhipce/strapi-plugin-llm-translate.git","type":"git"},"_npmVersion":"11.18.0","description":"Auto-translate localized content into every enabled locale using an LLM provider (Anthropic Claude or OpenAI), right from the Content Manager edit view.","directories":{},"_nodeVersion":"22.23.0","dependencies":{"openai":"^6.45.0","@anthropic-ai/sdk":"^0.109.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.9.4","react-dom":"^18.3.1","react-intl":"^6.8.9","typescript":"^5.9.3","react-redux":"^8.1.3","@types/react":"^18.3.31","@strapi/admin":"^5.39.0","@strapi/icons":"^2.2.1","@strapi/strapi":"^5.39.0","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.4","styled-components":"^6.4.3","@strapi/sdk-plugin":"^6.1.1","@strapi/design-system":"^2.2.1","@strapi/typescript-utils":"^5.39.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","react-intl":"^6.0.0","react-redux":"^8.0.0 || ^9.0.0","@strapi/admin":"^5.0.0","@strapi/icons":"^2.0.0","@strapi/strapi":"^5.0.0","react-router-dom":"^6.0.0","styled-components":"^6.0.0","@strapi/design-system":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/strapi-plugin-llm-translate_1.0.0-alpha.1_1782988390023_0.8225539153003616","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@alkhipce/strapi-plugin-llm-translate","version":"1.0.0","keywords":["strapi","plugin","strapi-plugin","i18n","internationalization","localization","translation","llm","ai","anthropic","claude","openai","gpt"],"author":{"name":"Dyomin Ilya","email":"i.dyomin@tekmates.pro"},"license":"MIT","_id":"@alkhipce/strapi-plugin-llm-translate@1.0.0","maintainers":[{"name":"alkhipce","email":"alkhipce@mail.ru"}],"homepage":"https://github.com/etozhealkhipce/strapi-plugin-llm-translate#readme","bugs":{"url":"https://github.com/etozhealkhipce/strapi-plugin-llm-translate/issues"},"dist":{"shasum":"0359511eb32125a34b6d2af68e0754be2b592a50","tarball":"https://registry.npmjs.org/@alkhipce/strapi-plugin-llm-translate/-/strapi-plugin-llm-translate-1.0.0.tgz","fileCount":46,"integrity":"sha512-NNficvhmBIm50+4FAIC7/EJTT+kPuIYbT0tjspHgWmsENcyBpjpG6loM3K23v90k4atIqQQFnaR3rCtoT4+R8w==","signatures":[{"sig":"MEQCIBTCWmrtxwxUgfaNEAWKSakehs4Kb5IhePkXTxtZhDsfAiAvWbvZ4ORwzn2jVluwyqWmIj94EDK9evdbsezAsgZHIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100913},"type":"commonjs","strapi":{"kind":"plugin","name":"llm-translate","description":"Auto-translate localized content into every enabled locale using an LLM provider (Anthropic or OpenAI).","displayName":"LLM Translate"},"engines":{"npm":">=6.0.0","node":">=18.0.0 <=22.x.x"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"f9c7ce123a1211cb05a49d19e95596d40383cf3f","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","test:ts:back":"tsc -p server/tsconfig.json --noEmit","test:ts:front":"tsc -p admin/tsconfig.json --noEmit","prepublishOnly":"npm run build && npm run verify"},"_npmUser":{"name":"alkhipce","email":"alkhipce@mail.ru"},"repository":{"url":"git+https://github.com/etozhealkhipce/strapi-plugin-llm-translate.git","type":"git"},"_npmVersion":"11.18.0","description":"Auto-translate localized content into every enabled locale using an LLM provider (Anthropic Claude or OpenAI), right from the Content Manager edit view.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"openai":"^6.45.0","@anthropic-ai/sdk":"^0.109.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","prettier":"^3.9.4","react-dom":"^18.3.1","react-intl":"^6.8.9","typescript":"^5.9.3","react-redux":"^8.1.3","@types/react":"^18.3.31","@strapi/admin":"^5.39.0","@strapi/icons":"^2.2.1","@strapi/strapi":"^5.39.0","@types/react-dom":"^18.3.7","react-router-dom":"^6.30.4","styled-components":"^6.4.3","@strapi/sdk-plugin":"^6.1.1","@strapi/design-system":"^2.2.1","@strapi/typescript-utils":"^5.39.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0","react-intl":"^6.0.0","react-redux":"^8.0.0 || ^9.0.0","@strapi/admin":"^5.0.0","@strapi/icons":"^2.0.0","@strapi/strapi":"^5.0.0","react-router-dom":"^6.0.0","styled-components":"^6.0.0","@strapi/design-system":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/strapi-plugin-llm-translate_1.0.0_1782988753953_0.38529435432177817","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alkhipce/strapi-plugin-llm-translate","version":"1.0.1","repository":{"type":"git","url":"git+https://github.com/etozhealkhipce/strapi-plugin-llm-translate.git"},"publishConfig":{"access":"public"},"description":"Auto-translate localized content into every enabled locale using an LLM provider (Anthropic Claude or OpenAI), right from the Content Manager edit view.","keywords":["strapi","plugin","strapi-plugin","i18n","internationalization","localization","translation","llm","ai","anthropic","claude","openai","gpt"],"type":"commonjs","exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","source":"./admin/src/index.ts","import":"./dist/admin/index.mjs","require":"./dist/admin/index.js","default":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","source":"./server/src/index.ts","import":"./dist/server/index.mjs","require":"./dist/server/index.js","default":"./dist/server/index.js"}},"scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","watch:link":"strapi-plugin watch:link","verify":"strapi-plugin verify","test:ts:front":"tsc -p admin/tsconfig.json --noEmit","test:ts:back":"tsc -p server/tsconfig.json --noEmit","prepublishOnly":"npm run build && npm run verify"},"dependencies":{"@anthropic-ai/sdk":"^0.109.0","openai":"^6.45.0"},"devDependencies":{"@strapi/admin":"^5.39.0","@strapi/design-system":"^2.2.1","@strapi/icons":"^2.2.1","@strapi/sdk-plugin":"^6.1.1","@strapi/strapi":"^5.39.0","@strapi/typescript-utils":"^5.39.0","@types/react":"^18.3.31","@types/react-dom":"^18.3.7","prettier":"^3.9.4","react":"^18.3.1","react-dom":"^18.3.1","react-intl":"^6.8.9","react-redux":"^8.1.3","react-router-dom":"^6.30.4","styled-components":"^6.4.3","typescript":"^5.9.3"},"peerDependencies":{"@strapi/admin":"^5.0.0","@strapi/design-system":"^2.0.0","@strapi/icons":"^2.0.0","@strapi/strapi":"^5.0.0","react":"^18.0.0","react-dom":"^18.0.0","react-intl":"^6.0.0","react-redux":"^8.0.0 || ^9.0.0","react-router-dom":"^6.0.0","styled-components":"^6.0.0"},"strapi":{"kind":"plugin","name":"llm-translate","displayName":"LLM Translate","description":"Auto-translate localized content into every enabled locale using an LLM provider (Anthropic or OpenAI)."},"engines":{"node":">=18.0.0 <=22.x.x","npm":">=6.0.0"},"license":"MIT","author":{"name":"Dyomin Ilya","email":"i.dyomin@tekmates.pro"},"gitHead":"9a1e44e6e1c59d177bf2f473a9b62fb6616e1986","_id":"@alkhipce/strapi-plugin-llm-translate@1.0.1","bugs":{"url":"https://github.com/etozhealkhipce/strapi-plugin-llm-translate/issues"},"homepage":"https://github.com/etozhealkhipce/strapi-plugin-llm-translate#readme","_nodeVersion":"22.23.1","_npmVersion":"11.18.0","dist":{"integrity":"sha512-x80Z2Kj7jjDaGKVaZadcakIMqO5jq8Sr2fNZMDVjYyo6441f9wq4QjkgrdNcdP+F65fXyyHBkwict8cIp0HszA==","shasum":"13402a90a2252d14e55a60a8e1d19eeea34e6b1d","tarball":"https://registry.npmjs.org/@alkhipce/strapi-plugin-llm-translate/-/strapi-plugin-llm-translate-1.0.1.tgz","fileCount":46,"unpackedSize":102044,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDHzgw+5BlIum8QMIIaJU+4x5jUtrz2RKhdX9BkzoDPZAIhAJrLq4vIzE+pXtMCsSW27r+oopWJHUrt9KV/2FsmSdh/"}]},"_npmUser":{"name":"alkhipce","email":"alkhipce@mail.ru"},"directories":{},"maintainers":[{"name":"alkhipce","email":"alkhipce@mail.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/strapi-plugin-llm-translate_1.0.1_1782997065981_0.7339125823049126"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-02T10:33:09.827Z","modified":"2026-07-02T12:57:46.208Z","1.0.0-alpha.1":"2026-07-02T10:33:10.172Z","1.0.0":"2026-07-02T10:39:14.086Z","1.0.1":"2026-07-02T12:57:46.111Z"},"bugs":{"url":"https://github.com/etozhealkhipce/strapi-plugin-llm-translate/issues"},"author":{"name":"Dyomin Ilya","email":"i.dyomin@tekmates.pro"},"license":"MIT","homepage":"https://github.com/etozhealkhipce/strapi-plugin-llm-translate#readme","keywords":["strapi","plugin","strapi-plugin","i18n","internationalization","localization","translation","llm","ai","anthropic","claude","openai","gpt"],"repository":{"type":"git","url":"git+https://github.com/etozhealkhipce/strapi-plugin-llm-translate.git"},"description":"Auto-translate localized content into every enabled locale using an LLM provider (Anthropic Claude or OpenAI), right from the Content Manager edit view.","maintainers":[{"name":"alkhipce","email":"alkhipce@mail.ru"}],"readme":"[![](https://flat.badgen.net/npm/v/@alkhipce/strapi-plugin-llm-translate?icon=npm)](https://www.npmjs.com/package/@alkhipce/strapi-plugin-llm-translate)\n[![](https://flat.badgen.net/github/stars/etozhealkhipce/strapi-plugin-llm-translate)](https://github.com/etozhealkhipce/strapi-plugin-llm-translate)\n\n# strapi-plugin-llm-translate\n\nBulk-translate Strapi i18n entries with Anthropic or OpenAI from the Content Manager edit view.\n\n## What it does\n\n- Sidebar panel on localized content types: **Translate to all languages**\n- Translates text fields, Blocks, components, and dynamic zones recursively\n- Leaves media, relations, and non-text fields unchanged\n- **Fill empty** — only untranslated fields; **Overwrite** — re-translate everything from the source locale\n- Honors locale script tags (`zh-Hans`, `sr-Latn`, etc.)\n\n## Requirements\n\n- Strapi `^5.0.0`, Node 18–22\n- Built-in `i18n` plugin with target locales configured\n- [Anthropic](https://console.anthropic.com/settings/keys) or [OpenAI](https://platform.openai.com/api-keys) API key\n\n## Install\n\n```bash\nnpm install @alkhipce/strapi-plugin-llm-translate\n```\n\nAuto-discovered via `\"strapi\": { \"kind\": \"plugin\" }` in `package.json`. Optional explicit config:\n\n```ts\n// config/plugins.ts\nexport default {\n  'llm-translate': { enabled: true },\n};\n```\n\n```bash\nnpm run build && npm run develop\n```\n\n## Settings\n\n**Settings → LLM Translate**\n\n| Field | Notes |\n| --- | --- |\n| Provider | `anthropic` or `openai` |\n| API key | Stored server-side, not returned to the admin UI |\n| Model | Optional; plugin picks a default if empty |\n| Additional instructions | Appended to every request (tone, terminology, etc.) |\n\n## Usage\n\n1. Open a localized entry in Content Manager.\n2. Sidebar → **Translate to all languages**.\n3. Select target locales and fill/overwrite mode.\n4. **Translate** — creates or updates locale variants via Document Service.\n\n## Implementation notes\n\n- Text extracted by schema walk, not JSON diff.\n- LLM output validated against JSON Schema (fixed key set).\n- Blocks: leaf text nodes only; marks, links, and tree structure kept.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}