{"id":15373832,"url":"https://github.com/boly38/botensky","last_synced_at":"2026-01-29T22:13:11.455Z","repository":{"id":240114070,"uuid":"801706351","full_name":"boly38/botEnSky","owner":"boly38","description":"botEnTrain's successor for BlueSky social app","archived":false,"fork":false,"pushed_at":"2024-05-23T07:01:24.000Z","size":111,"stargazers_count":0,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-23T07:48:25.207Z","etag":null,"topics":["bluesky-bot","bot","nodejs","work-in-progress"],"latest_commit_sha":null,"homepage":"https://bsky.app/profile/botensky.bsky.social","language":null,"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/boly38.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}},"created_at":"2024-05-16T18:53:14.000Z","updated_at":"2024-06-09T14:41:00.967Z","dependencies_parsed_at":"2024-05-16T20:30:43.907Z","dependency_job_id":"e6f620c4-9dbe-40b2-b446-299099f5770b","html_url":"https://github.com/boly38/botEnSky","commit_stats":null,"previous_names":["boly38/botensky"],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boly38%2FbotEnSky","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boly38%2FbotEnSky/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boly38%2FbotEnSky/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boly38%2FbotEnSky/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/boly38","download_url":"https://codeload.github.com/boly38/botEnSky/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244902929,"owners_count":20529114,"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":["bluesky-bot","bot","nodejs","work-in-progress"],"created_at":"2024-10-01T13:56:30.233Z","updated_at":"2026-01-29T22:13:11.448Z","avatar_url":"https://github.com/boly38.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# botEnSky\n\n👢 botEnSky is a [BlueSky social app](https://bsky.app/) 🤖 bot born on May 16, 2024.\n- written in JavaScript (Node.js ESM Project),\n- the worthy successor to [@botentrain1](https://twitter.com/botentrain1) (ex Twitter bot - [code](https://github.com/boly38/botEnTrain)) but for BlueSky.\n\nHis ambition is to **bring 😊 happiness to 🦋 Bluesky 👤 users**.\n\n## References\n\n- **BlueSky 🤖 Bot account : [@botensky.bsky.social](https://bsky.app/profile/botensky.bsky.social)** \n- Bot engine 🌐 WebPage : https://botensky.verymad.net\n\n## Bot features (plugins)\n\n- French help - cf. https://botensky.verymad.net\n- English : cf. below.\n\n### Plugins\n- 🧩 [Plantnet](src/plugins/Plantnet.js) plugin\n\n*search a post with an embedded image, a not muted author, and without reply using [some questions](src/data/questionsPlantnet.json) and use Pl@ntNet API to try to identify the flower.*\n- on **good score** result: post a reply with confident ratio, name, common name, and embed sample image +alt (provided by Pl@ntNet)\n- on **bad score** result, or **nothing detected** result: mute author and don't reply. The action to \"mute\" the author is to avoid to replay the same plantnet identification twice a day (for same result). Muted authors are unMuted by UnMute plugin at the end of the day.\n\n- 🧩 [askPlantnet](src/plugins/AskPlantnet.js) plugin\n\n*search a post with one of [askPlantnet](src/data/askPlantnet.json) mention, and try to identify the parent post first image using the same previous logic except that bad score or nothing detected will produce a reply to the mention.*\n\n\n- 🧩 [unMute](src/plugins/UnMute.js) plugin\n\n*remove bot all muted authors.*\n\n- 🧩 [Summary](src/plugins/Summary.js) plugin\n\n*get some analytics for last 7 days of bot activity.*\n\n- 🧩 [BioClip](src/plugins/BioClip.js) plugin\n\n*search a post with an embedded image, a not muted author, and without reply using [some questions](src/data/questionsBioClip.json) and use [GrBird API](https://huggingface.co/spaces/3oly/grBird) to try to classify the bird.*\n- on **good score** result: post a reply with confident ratio, species, genus, family, common name, and a link to flickr gallery (provided by [Avibase](https://avibase.bsc-eoc.org/))\n- on **bad score** result, or **nothing detected** result: mute author and don't reply. The action to \"mute\" the author is to avoid to replay the same classification twice a day (for same result). Muted authors are unMuted by UnMute plugin at the end of the day.\n\n\n- 🧩 [askBioclip](src/plugins/AskBioclip.js) plugin\n\n*search a post with one of [askBioclip](src/data/askBioclip.json) mention, and try to classify the parent post first image using the same previous logic except that bad score or nothing detected will produce a reply to the mention.*\n\n- 🧩 [1Day1Bioclip](src/plugins/OneDayOneBioclip.js) plugin\n\n*Every day, the robot searches [Unsplash](https://unsplash.com/) for a collection with one of [this queries](src/data/oneDayOneBioclip.json) for photo of another author and attempts to identify it using Bioclip. The details of the photo and its identification are then posted on Bluesky.*\n\n- 🧩 [Healthcheck](src/plugins/HealthCheck.js) plugin\n\n*Performs health checks of external services upon manager request. These checks help ensure the system is functioning properly by diagnosing problems.\n\n### Bot trigger\n- Github Actions [workflows](.github/workflows) (`trigger_*`) are used to trigger the bot, they are based on `schedule` directives (UTC time, [doc](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule))\n\n\n## How to contribute ?\n\n- cf. [CONTRIBUTING](.github/CONTRIBUTING.md)\n\n### Versions\n- [releases notes](https://github.com/boly38/botEnSky/releases)  - generated via [GitHub client](https://cli.github.com/)\n- [tests - code-coverage](https://boly38.github.io/botEnSky/)\n\n### Credits\nApplication and code structure:\n- [NodeJs](https://nodejs.org/) and Node dependencies (cf. [graph](https://github.com/boly38/botEnSky/network/dependencies))\n- [BlueSky API](https://docs.bsky.app/)\n\nServices ( having free plan 🚀 🌷 )\n- [GitHub Actions](https://github.com/features/actions)\n- [PlantNet.org](https://plantnet.org) ([API](https://my.plantnet.org/)) - plant identification service (max 200 req/days)\n- [BioCLIP](https://github.com/Imageomics/bioclip) ([GrBird API](https://huggingface.co/spaces/3oly/grBird)) - classification from BioCLIP : a CLIP model trained on a new 10M-image dataset of biological organisms with fine-grained taxonomic labels. (cf. [paper](https://arxiv.org/abs/2311.18803) for more details) - credits : Samuel Stevens, Jiaman Wu, Matthew J Thompson, Elizabeth G Campolongo, Chan Hee Song, David Edward Carlyn, Li Dong, Wasila M Dahdul, Charles Stewart, Tanya Berger-Wolf, Wei-Lun Chao, Yu Su.\n- [betterstack](https://logs.betterstack.com/) - logs management\n\n### Contributions\n\n- Team: cf. [contributors](https://github.com/boly38/botEnSky/graphs/contributors)\n![Repobeats](https://repobeats.axiom.co/api/embed/7e769fd1b4307573766d3ea965277996d11a0b3f.svg \"Repobeats analytics image\")\n\n\u003csmall\u003eprovided by [Repobeats](https://repobeats.axiom.co/)\u003c/small\u003e \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboly38%2Fbotensky","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboly38%2Fbotensky","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboly38%2Fbotensky/lists"}