{"id":15650194,"url":"https://github.com/gwuhaolin/koa-seo","last_synced_at":"2025-04-30T17:41:39.183Z","repository":{"id":80950182,"uuid":"93853903","full_name":"gwuhaolin/koa-seo","owner":"gwuhaolin","description":"koa SEO middleware","archived":false,"fork":false,"pushed_at":"2017-11-13T02:37:07.000Z","size":71,"stargazers_count":37,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-14T14:17:59.979Z","etag":null,"topics":["chrome","koa","middleware","seo","server-rendering"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gwuhaolin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2017-06-09T11:51:08.000Z","updated_at":"2025-04-02T13:06:45.000Z","dependencies_parsed_at":"2023-03-12T12:49:12.083Z","dependency_job_id":null,"html_url":"https://github.com/gwuhaolin/koa-seo","commit_stats":{"total_commits":32,"total_committers":3,"mean_commits":"10.666666666666666","dds":0.15625,"last_synced_commit":"951b35dc29a65e5b22c5f9a8f23b7bb3069bae4c"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwuhaolin%2Fkoa-seo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwuhaolin%2Fkoa-seo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwuhaolin%2Fkoa-seo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwuhaolin%2Fkoa-seo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gwuhaolin","download_url":"https://codeload.github.com/gwuhaolin/koa-seo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251752718,"owners_count":21638167,"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":["chrome","koa","middleware","seo","server-rendering"],"created_at":"2024-10-03T12:33:53.384Z","updated_at":"2025-04-30T17:41:39.061Z","avatar_url":"https://github.com/gwuhaolin.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Npm Package](https://img.shields.io/npm/v/koa-seo.svg?style=flat-square)](https://www.npmjs.com/package/koa-seo)\n[![Build Status](https://img.shields.io/travis/gwuhaolin/koa-seo.svg?style=flat-square)](https://travis-ci.org/gwuhaolin/koa-seo)\n[![Npm Downloads](http://img.shields.io/npm/dm/koa-seo.svg?style=flat-square)](https://www.npmjs.com/package/koa-seo)\n[![Dependency Status](https://david-dm.org/gwuhaolin/koa-seo.svg?style=flat-square)](https://npmjs.org/package/koa-seo)\n\n# koa-seo\nSEO middleware for koa base on [chrome-render](https://github.com/gwuhaolin/chrome-render), a substitute for [prerender](https://prerender.io).\n\nModern web app use technique like react.js vue.js which render html in browser, this lead to search engine can't crawl your page content.\n\nThis project want to solve this kind of problem in a general-purpose way, it detect request is from search engine crawler then use headless chrome to render out your modern web page and return to crawler.\n\nHere is koa-seo's architecture diagram:\n![koa-seo arch](./doc/koa-seo%20arch.png)\n\n## Use\n```bash\nnpm i koa-seo\n```\nthen use it:\n```js\nconst Koa = require('koa');\nconst seoMiddleware = require('koa-seo');\nconst app = new Koa();\n\napp.use(seoMiddleware({\n    render: {\n        // use `window.isPageReady=1` to notify chrome-render page has ready\n        useReady: true,\n    }\n}));\n\napp.listen(3000);\n```\nyou can download and run this [complete demo](test/server.js)\n\n## Options\n- `render` options from [koa-chrome-render](https://github.com/gwuhaolin/koa-chrome-render#render-options)\n\nFor more flexible use case see [koa-chrome-render](https://github.com/gwuhaolin/koa-chrome-render).\n\n## Friends\n- koa-seo dependent on [koa-chrome-render](https://github.com/gwuhaolin/koa-chrome-render) chrome-render middleware for koa.\n- [chrome-render](https://github.com/gwuhaolin/chrome-render) general server render base on chrome.\n- [chrome-pool](https://github.com/gwuhaolin/chrome-pool) Headless chrome tabs manage pool.\n- [express-middleware-seo](https://github.com/Binaryify/express-middleware-seo) SEO middleware for express base on [chrome-render](https://github.com/gwuhaolin/chrome-render)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgwuhaolin%2Fkoa-seo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgwuhaolin%2Fkoa-seo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgwuhaolin%2Fkoa-seo/lists"}