{"id":13709518,"url":"https://github.com/gasolin/saihubot","last_synced_at":"2026-03-16T17:36:45.716Z","repository":{"id":10219081,"uuid":"65007138","full_name":"gasolin/saihubot","owner":"gasolin","description":":speech_balloon: client side chatbot that works in the browser and command line","archived":false,"fork":false,"pushed_at":"2023-03-06T10:34:15.000Z","size":10583,"stargazers_count":19,"open_issues_count":49,"forks_count":2,"subscribers_count":1,"default_branch":"gh-pages","last_synced_at":"2025-06-09T07:56:09.797Z","etag":null,"topics":["bot-framework","browser-bot","chat-bot","chatbot","hubot","javascript-bot"],"latest_commit_sha":null,"homepage":"https://gasolin.github.io/saihubot/","language":"CSS","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/gasolin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2016-08-05T09:35:19.000Z","updated_at":"2025-04-28T00:41:59.000Z","dependencies_parsed_at":"2024-08-26T06:08:00.993Z","dependency_job_id":"5f3fddcf-b6e4-4654-86c4-f0f88a58002e","html_url":"https://github.com/gasolin/saihubot","commit_stats":{"total_commits":293,"total_committers":4,"mean_commits":73.25,"dds":0.07508532423208192,"last_synced_commit":"6cf9ae2b0a8025edccb8b629dad437442cb9489b"},"previous_names":[],"tags_count":58,"template":false,"template_full_name":null,"purl":"pkg:github/gasolin/saihubot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gasolin%2Fsaihubot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gasolin%2Fsaihubot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gasolin%2Fsaihubot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gasolin%2Fsaihubot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gasolin","download_url":"https://codeload.github.com/gasolin/saihubot/tar.gz/refs/heads/gh-pages","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gasolin%2Fsaihubot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260898762,"owners_count":23079263,"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":["bot-framework","browser-bot","chat-bot","chatbot","hubot","javascript-bot"],"created_at":"2024-08-02T23:00:40.660Z","updated_at":"2026-03-16T17:36:45.668Z","avatar_url":"https://github.com/gasolin.png","language":"CSS","funding_links":[],"categories":["Staker Command Usage"],"sub_categories":[],"readme":"# Saihubot\n\n[![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](https://lerna.js.org/) [![](https://github.com/gasolin/saihubot/workflows/Lint%20Action/badge.svg)](https://github.com/gasolin/saihubot/actions?query=workflow%3A%22Lint+Action%22)\n\n:robot: Frontend Framework to build :speech_balloon: message/chat bots ops in the :globe_with_meridians: [Browser](https://gasolin.github.io/saihubot/) or [Command Line](https://www.npmjs.com/package/saihu), no server required.\n\nYou can add new skills to bot via `skills` and extend its ability via `addons`. All with plain javascript. :clap:\n\nSaihubot's API is inspired by [hubot](https://github.com/github/hubot/)'s API, so a developer who has learned `hubot-plugins` could learn `saihu-skills` very quickly. :zap:\n\nCheck [Online Demo](https://gasolin.github.io/saihubot/)\n\n![Imgur](https://i.imgur.com/zoLMvTG.png)\n\nOr run the command bot without install\n\n```sh\nnpx saihu npm saihu\n```\n\n## Features\n\n* Chatbot works in multiple platforms, without server setup.\n* Structure was inspired by [hubot](https://github.com/github/hubot/)\n  * Regex based message matching\n  * Could write adapter to fully cooperate with your web UI\n  * Could swap brain to support different backends\n  * Provide skills(pluginn) architecture that able to expand functions\n  * Can extend bot functionality by import addons\n* Tiny size, easy to learn (the init version has just 80 lines that bundle with three skills)\n* Plugin callbacks are extremely flexible; You can control in-page elements, execute the local command, fetch remote data, trigger remote actions...\n\n## Modules\n\n| Module  | Version | Description | Doc |\n| --------|---------|-------------|-----|\n| [saihubot](https://github.com/gasolin/saihubot/tree/gh-pages/packages/saihubot#readme) | [![npm version](https://badge.fury.io/js/saihubot.svg)](https://www.npmjs.com/package/saihubot) | core module|[Doc](http://gasolin.idv.tw/saihubot/docs/saihubot/) |\n| [saihu](https://github.com/gasolin/saihubot/tree/gh-pages/packages/cli#readme) | [![npm version](https://badge.fury.io/js/saihu.svg)](https://www.npmjs.com/package/saihu) | Sample Command line bot |[Doc](http://gasolin.idv.tw/saihubot/docs/saihu) |\n| [Web samples](https://github.com/gasolin/saihubot/tree/gh-pages/samples) | [Online Demos](https://gasolin.github.io/saihubot/) | |\n\n| Adapters | Version | Description | Doc |\n| --------|---------|-------------|-----|\n|[saihubot-html-adapter](https://github.com/gasolin/saihubot/tree/gh-pages/packages/html-adapter#readme) |[![npm version](https://badge.fury.io/js/saihubot-html-adapter.svg)](https://www.npmjs.com/package/saihubot-html-adapter) |HTML |[Doc](http://gasolin.idv.tw/saihubot/docs/saihubot-html-adapter) |\n|[saihubot-react-redux-adapter](https://github.com/gasolin/saihubot/tree/gh-pages/packages/react-redux-adapter#readme) |[![npm version](https://badge.fury.io/js/saihubot-react-redux-adapter.svg)](https://www.npmjs.com/package/saihubot-react-redux-adapter) |React + Redux |[Doc](http://gasolin.idv.tw/saihubot/docs/saihubot-react-redux-adapter) |\n|[saihubot-cli-adapter](https://github.com/gasolin/saihubot/tree/gh-pages/packages/cli-adapter#readme) |[![npm version](https://badge.fury.io/js/saihubot-cli-adapter.svg)](https://www.npmjs.com/package/saihubot-cli-adapter.svg) |Command Line |[Doc](http://gasolin.idv.tw/saihubot/docs/saihubot-cli-adapter) |\n\n| Skills | Version | Description | Doc |\n| --------|---------|-------------|-----|\n|[saihubot-skill-search](https://github.com/gasolin/saihubot/tree/gh-pages/packages/skill-search#readme) |[![npm version](https://badge.fury.io/js/saihubot-skill-search.svg)](https://www.npmjs.com/package/saihubot-skill-search) | Search engines |[Doc](http://gasolin.idv.tw/saihubot/docs/saihubot-skill-search) |\n|[saihubot-skill-diagnostics](https://github.com/gasolin/saihubot/tree/gh-pages/packages/skill-diagnostics#readme) |[![npm version](https://badge.fury.io/js/saihubot-skill-diagnostics.svg)](https://www.npmjs.com/package/saihubot-skill-diagnostics) | ping, echo, current time | [Doc](http://gasolin.idv.tw/saihubot/docs/saihubot-skill-diagnostics) |\n|[saihubot-cli-skill-qrcode](https://github.com/gasolin/saihubot/tree/gh-pages/packages/cli-skill-qrcode#readme) |[![npm version](https://badge.fury.io/js/saihubot-cli-skill-qrcode.svg)](https://www.npmjs.com/package/saihubot-cli-skill-qrcode) | generate qrcode | [Doc](http://gasolin.idv.tw/saihubot/docs/saihubot-cli-skill-qrcode) |\n\n## How to use\n\n### Try Saihubot samples online\n\nIf you just want to try how the saihubot looks like, Check [Online Demo](https://gasolin.github.io/saihubot/)\n\n### Try Saihubot locally\n\nClone the project with command\n\n```sh\ngit clone https://github.com/gasolin/saihubot.git\n```\n\nThen run\n\n\n```sh\nnpm build\nnpm start\n```\n\nor\n\n```sh\nnpx http-server .\n```\n\nnow you have a working bot in the browser!\n\n### Try Saihubot on Github\n\nFork the project, edit index.html with Github editor, save it and see the result on https://[yourname].github.io/saihubot\n\n\nSaihubot also provide Search skills, you can include it via `skillsFile: ['skills/saihubot-search.js']`\n\nCheck the [Search Demo](https://gasolin.github.io/saihubot/samples/search).\n\n### :mag_right: Google Search skill:\n\n```\nme: g saihubot\nbot: Search saihubot via Google\nme: google saihubot\nbot: Search saihubot via Google\nme: search saihubot\nbot: Search saihubot via Google\n```\n\n## Want to learn more?\n\nCheck the [docs](https://github.com/gasolin/saihubot/tree/gh-pages/docs) section.\n\n## What Saihu means?\n\nSaihu(`師傅`) means `master` in Taiwanese, which people used to call the artisans.\nSaihubot's origin goal is to provide a code sample that makes learning [hubot](https://github.com/github/hubot/) and its ES6 variant [Webbybot](https://github.com/gasolin/webbybot/) easier; then I found Saihu is a great way to embed bot into anywhere browser can live with.\n\n## License\n\nSaihubot use MIT License\n\n## ChangeLog\n\nCheck [ChangeLog](CHANGELOG.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgasolin%2Fsaihubot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgasolin%2Fsaihubot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgasolin%2Fsaihubot/lists"}