{"id":13551166,"url":"https://github.com/qbit/mycete","last_synced_at":"2025-09-03T07:43:16.033Z","repository":{"id":136344876,"uuid":"111037224","full_name":"qbit/mycete","owner":"qbit","description":"A matrix.org micro-blogging (twitter,mastodon) connector.","archived":false,"fork":false,"pushed_at":"2022-03-13T14:40:08.000Z","size":2738,"stargazers_count":43,"open_issues_count":3,"forks_count":2,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-14T06:54:35.095Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qbit.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":"support/mycete.rc","governance":null,"roadmap":null,"authors":null}},"created_at":"2017-11-17T00:20:04.000Z","updated_at":"2025-01-31T00:45:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"10e5d88a-5862-4a0d-a914-a34dfdfa753b","html_url":"https://github.com/qbit/mycete","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/qbit/mycete","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qbit%2Fmycete","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qbit%2Fmycete/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qbit%2Fmycete/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qbit%2Fmycete/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qbit","download_url":"https://codeload.github.com/qbit/mycete/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qbit%2Fmycete/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273410261,"owners_count":25100451,"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","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-08-01T12:01:43.555Z","updated_at":"2025-09-03T07:43:15.994Z","avatar_url":"https://github.com/qbit.png","language":"Go","funding_links":[],"categories":["Go","others","Bridges"],"sub_categories":["Twitter"],"readme":"# mycete\n\n\u003ca href=\"https://github.com/qbit/mycete\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/qbit/mycete/master/logo.png\" align=\"left\" height=\"48\" width=\"48\" \u003e\u003c/a\u003e\n\n[![Build Status](https://travis-ci.org/qbit/mycete.svg?branch=master)](https://travis-ci.org/qbit/mycete)\n\n*BETA: Software is used frequently but Bugs may still appear and behaviour may change at any commit*\n\nRiot/Matrix room: [#mycete:tapenet.org](https://riot.im/app/#/room/#mycete:tapenet.org)\n\nA [matrix.org](https://matrix.org) micro-blogging (twitter,mastodon) connector.\n\n`mycete` pipes your chat messages from matrix to twitter and/or mastodon. It does this by\nlistening in on a channel you create. Everything you enter in the channel will be published\nto your various feeds!\n\nOptionaly, only stuff you prepend with a ''guard_prefix'' will be published. Obviously the prefix will be removed first.\n\nDelete tweets and toots you posted by redacting the corresponding matrix message.\n\nIf you upload images to the controlling matrix room, they will be appended to your next toot and tweet.\n\nTweets and Toots may be favoured or reblogged / retweeted by using the `reblog_cmd` or `favourite_cmd` (specified in the `[matrix]` section) followed by the status URL or ID\n\n## Example Information Flow\n\n\u003cimg src=\"https://raw.githubusercontent.com/btittelbach/lightningtalks_mycete-mastodonboostbot-matrix/master/images/mycete_statusflow.png\" align=\"center\" style=\"width:100%;\"\u003e\n\nsee also slides of lightningtalks which can be found [here](https://github.com/btittelbach/lightningtalks_mycete-mastodonboostbot-matrix)\n\n\n## from Mastodon back to Matrix\n\n`mycete` will also (optinally) inform you about toots that did not originate from `mycete` as well as when someone favourites or reblogs your status and when someone follows you.\n\nThe controlling settings are `show_mastodon_notifications`, `show_own_toots_from_foreign_clients` and \n`show_complete_home_stream` in `[matrix]`\n\nIf you don't need this, just remove the `feed2matrix` section.\n\nAdditionally it is possible to mirror your complete homestream or just part of it to other matrix rooms.\nFor each room you may filter by tag, post visibility, sensitivity, weather it is an original toot or a reblog, weather our account posted it or someone else and weather or not we are following the author.\n\nTo do this, create a separate configuration section for each room named `feed2morerooms_xxxxx` where xxxxx is your name for that configuration. You can specify arbitrary many configurations, as only the ones listed in `[feed2morerooms]configurations` are activated and used.\n\nIn addition to the home stream, it is possible to subscribe tag streams using `[feed2morerooms]subscribe_tagstreams` which will be mixed together with the homestream into one big stream which your configurations (s.a.) will then filter.\n\nIf you don't need this, just leave `configurations` empty or remove all `feed2morerooms` sections.\n\n## Building\n\n```\ngit clone https://github.com/qbit/mycete\ncd mycete\ngo build\n```\n\n## Example Config\n\n```\n[server]\ntwitter=true\nmastodon=true\n\n[matrix]\nuser=@fakeuser:matrix.org\npassword=snakesonaplane\nurl=https://matrix.org\nroom_id=!iasdfadsfadsfafs:matrix.org\nguard_prefix=t\u003e\nreblog_cmd=reblog\u003e\nfavourite_cmd=+1\u003e\njoin_welcome_text=\"Welcome! Warning: Everything you say I will toot and/or tweet to the world if it starts with t\u003e\"\nadmins_can_redact_user_status=false\n\n[twitter]\nconsumer_key=\nconsumer_secret=\naccess_token=\naccess_secret=\n\n[mastodon]\nserver=https://mastodon.social\nclient_id=\nclient_secret=\naccess_token=\n\n[images]\nenabled=true\ntemp_dir=/tmp\n\n[feed2matrix]\nshow_mastodon_notifications=true\nshow_own_toots_from_foreign_clients=true\nshow_complete_home_stream=false\ncharacterlimit = 1000\nimagebyteslimit = 4194304\nimagecountlimit = 4\n\n[feed2morerooms]\nsubscribe_tagstreams=interesstingtag otherinteresstingtag\nconfigurations=filter1 filter2\n\n[feed2morerooms_filter1]\ntarget_room=!example1:matrix.org\nfilter_visibility=public\nfilter_for_tags=interesstingtag\nfilter_sensitive=false\nfilter_reblogs=false\nfilter_myposts=true\nfilter_otherpeoplesposts=false\nfilter_unfollowed=false\n\n[feed2morerooms_filter2]\ntarget_room=!example2:matrix.org\nfilter_visibility=public\nfilter_for_tags=otherinteresstingtag\nfilter_sensitive=false\nfilter_reblogs=true\nfilter_myposts=false\nfilter_otherpeoplesposts=false\nfilter_unfollowed=true\n\n\n```\n\n## Linking to Mastodon\n\nWhen logged into your Mastodon Account in your web browser, go to \"Settings\", then \"Development\", then \"Your Applications\". Create a New Application and give it the required permissions. Put `Client key`, `Client secret` and `Your access token` the tokens into your 'mycete' configuration.\n\n### required permissions\nread:accounts read:blocks read:favourites read:filters read:follows read:lists read:mutes read:notifications read:search read:statuses write:conversations write:favourites write:filters write:media write:statuses push\n\n## Linking to Twitter\n\nOauth via console pin. (TODO)\n\n## TODO\n\n- [ ] create an interface for clients.\n- [X] TravisCI.\n- [X] Read the timelines back into the matrix room.\n- [X] favorite and reblog Mastodon status\n- [X] un-reblog and un-favourite when redacting matrix message\n- [ ] tests\n- [ ] Document the process for getting api keys.\n- [ ] Only establish our oauth / auth stuff when a service is enabled.\n- [ ] Post to RSS for blogging? (Mastodon already does rss out of the box)\n- [ ] Error early if our service is enabled and we have invalid credentials. (See if there is API for testing?)\n- [X] post images\n- [X] support uploading multiple images per Toot/Tweet\n- [X] more feedback and user error guards\n- [X] use constrained memory, not slowly ever growing maps. Aka don't be a memory hog\n- [ ] twitter stream to matrix, favorite and retweet\n- [ ] look into support for small videos\n- [ ] optionally redact matrix imagemessages after a while, thus not clobbering matrix-synapse storage\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqbit%2Fmycete","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqbit%2Fmycete","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqbit%2Fmycete/lists"}