{"id":29285747,"url":"https://github.com/cathysarisky/netlify-translate-template","last_synced_at":"2025-07-05T23:10:06.273Z","repository":{"id":299084409,"uuid":"1001786298","full_name":"cathysarisky/netlify-translate-template","owner":"cathysarisky","description":"Ghost -\u003e Netlify webhook -\u003e DeepL -\u003e translated posts in Ghost","archived":false,"fork":false,"pushed_at":"2025-06-14T17:16:38.000Z","size":17,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-04T22:11:49.338Z","etag":null,"topics":["deepl","ghost","ghost-cms","netlify"],"latest_commit_sha":null,"homepage":"https://www.spectralwebservices.com/blog/translating-ghost-posts-with-deepl","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/cathysarisky.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2025-06-14T03:00:49.000Z","updated_at":"2025-06-18T23:47:45.000Z","dependencies_parsed_at":"2025-06-14T15:44:16.872Z","dependency_job_id":"04e37bdb-5ebe-4ce4-8cbe-d37e2a4fb447","html_url":"https://github.com/cathysarisky/netlify-translate-template","commit_stats":null,"previous_names":["cathysarisky/netlify-translate-template"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cathysarisky/netlify-translate-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cathysarisky%2Fnetlify-translate-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cathysarisky%2Fnetlify-translate-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cathysarisky%2Fnetlify-translate-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cathysarisky%2Fnetlify-translate-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cathysarisky","download_url":"https://codeload.github.com/cathysarisky/netlify-translate-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cathysarisky%2Fnetlify-translate-template/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263819240,"owners_count":23516123,"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":["deepl","ghost","ghost-cms","netlify"],"created_at":"2025-07-05T23:09:57.524Z","updated_at":"2025-07-05T23:10:06.246Z","avatar_url":"https://github.com/cathysarisky.png","language":"JavaScript","funding_links":["https://github.com/sponsors/cathysarisky"],"categories":[],"sub_categories":[],"readme":"![image](https://github.com/user-attachments/assets/4bef6ad3-04d2-4342-9d34-0ae7899352dc)\n\n## Ghost-DeepL glue (a Netlify function) ##\n\n[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/cathysarisky/netlify-translate-template)\n\n\n\nThis package receives webhooks from Ghost, sends the post content to DeepL API for translation, then creates new posts in the target languages.\n\nYou can create a free DeepL account that provides 500,000 characters of translation per month. Because Netlify also has a generous free tier, this is potentially a free solution to translation for smaller/less prolific Ghost sites.\n\nTo use this function, fork this repo, make a Netlify account, and deploy it to Netlify.\nOr just click the \"Deploy to Netlify\" button, above.\n\nSet up your environment variables.\n\nHere's how to get the values you need:\n\n* Get your DeepL API key by signing up here: https://www.deepl.com/en/pro-api (Note that the API plans and other plans are not the same. You need an API plan.)  Copy it into the.env file.\n\n* Get your Ghost API key and url by going to /ghost \u003e settings (gear icon) \u003e integrations, clicking \"custom\", and adding a new integration. Copy these into the .env file.\n\n* While you're on the integration page, click \"Add webhook\".  Create a new webhook, named anything you like.  The trigger is \"Post published\".  The url is {whatever your Netlify site's url is, starting with https}/.netlify/functions/translator .  Choose your own webhook secret.  Copy the webhook secret to the example.env file.\n\nDeploy the site.  (You have to do this any time you change environment variables.)\n\nAlso included is an example routes.yaml file that can be used to put each translation in its own part of Ghost.\n\n## Tips ##\n* The function looks for a tag called #translated, and aborts if it finds it.  This stops newly published translations from triggering the translation function, which can otherwise cause a chain reaction. (Ask me how I know. Or don't.)\n\n* Use the routes.yaml file (after editing it for your languages) to get basic collections in each language.  Each translation gets a tag (like #ES) to denote its language.\n\n## Thanks \u0026 Support ##\n* If you'd like me to set this up for you, feel free to hire me for an hour: https://tidycal.com/catsarisky/60-minute-paid\n* Tip Jar: https://www.spectralwebservices.com/tipjar/ \n* Sponsor on Github: https://github.com/sponsors/cathysarisky\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcathysarisky%2Fnetlify-translate-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcathysarisky%2Fnetlify-translate-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcathysarisky%2Fnetlify-translate-template/lists"}