{"id":20237348,"url":"https://github.com/lostfictions/italian-gramsci","last_synced_at":"2025-07-02T11:39:01.345Z","repository":{"id":146936078,"uuid":"352278316","full_name":"lostfictions/italian-gramsci","owner":"lostfictions","description":"it's-a me, gramsci","archived":false,"fork":false,"pushed_at":"2025-03-03T02:08:11.000Z","size":877,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-03T03:20:45.002Z","etag":null,"topics":["botally"],"latest_commit_sha":null,"homepage":"https://twitter.com/italian_gramsci","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lostfictions.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":"2021-03-28T08:31:31.000Z","updated_at":"2024-11-24T09:32:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"d643389f-318b-4348-afb7-12f4c2afb7e8","html_url":"https://github.com/lostfictions/italian-gramsci","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lostfictions%2Fitalian-gramsci","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lostfictions%2Fitalian-gramsci/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lostfictions%2Fitalian-gramsci/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lostfictions%2Fitalian-gramsci/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lostfictions","download_url":"https://codeload.github.com/lostfictions/italian-gramsci/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241681765,"owners_count":20002375,"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":["botally"],"created_at":"2024-11-14T08:26:38.595Z","updated_at":"2025-03-03T14:29:58.311Z","avatar_url":"https://github.com/lostfictions.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"it's a me, italian gramsci! i tweet-a da thoughts i have while inna da prison.\n\na mastodon and ~~twitter~~ bsky bot for node. toots and ~~tweets~~ skeets fragments from the prison notebooks. it's written in [typescript](https://www.typescriptlang.org/) and runs on [node.js](http://nodejs.org/).\n\nyou can run it on your computer and even remix it into something new! you'll need node and git installed. if you install node manually, you should match the node version listed in [the `.node-version`](.node-version) file — but instead of installing node directly i recommend using [fnm](https://github.com/Schniz/fnm), which can automatically handle installing and switching node versions by detecting `.node-version` files.\n\nonce you're set, run:\n\n```sh\ngit clone https://github.com/lostfictions/italian-gramsci\ncd italian-gramsci\ncorepack enable # enables use of the pnpm package manager\npnpm install\npnpm dev\n```\n\nrunning `pnpm dev` will generate an image and save it to a file on your computer. when posting to the internet, this bot runs using github actions' [scheduled events](https://docs.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events). check out the [workflow file](.github/workflows/twoot.yml) for more details.\n\nif you clone the repository you can run your own remixed version that posts to mastodon and bsky using github actions too! no need to edit the workflow file — you'll just need to set some environment variables in the github repository settings:\n\n- `MASTODON_TOKEN`: a Mastodon user API token\n- `BSKY_USERNAME`: the bot's username on Bluesky\n- `BSKY_PASSWORD`: the app password for the bot's account on Bluesky\n- `PERSIST_DIR`: the directory in which to store state, like which lines have already been posted. (default: `persist`)\n\nadditionally, `MASTODON_SERVER` (hardcoded in [src/env.ts](src/env.ts)) controls\nthe mastodon instance to which API calls should be made (usually where the bot\nuser lives.)\n\nthis bot uses [dotenv](https://github.com/motdotla/dotenv), so if you're testing things locally, you can stick any of the above environment variables in a file named `.env` in the project root. (it's gitignored, so there's no risk of accidentally committing private API tokens you put in there.)\nwhen running on github actions, state (like which line of prose was last posted) is persisted across bot runs by pushing it to an \"orphan\" git branch. the action is configured to do this for you automatically.\n\n\u003e [!IMPORTANT]\n\u003e as part of this branch-based persistence approach, you'll need the orphan git branch to already exist in the repo you're pushing to. the branch is appropriately named `persist`; if you've forked this repo with all its branches, this should be included. if not -- well, it's a bit clunky to create. for now, the recommended approach is to make sure your local clone has the correct remote github repo set and that the file `persist/statuses.json` exists locally (you may have to run `pnpm regen`). then from the root of the repo run `npx gh-pages -d persist -b persist`.\n\n###### [more bots?](https://github.com/lostfictions?tab=repositories\u0026q=botally)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flostfictions%2Fitalian-gramsci","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flostfictions%2Fitalian-gramsci","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flostfictions%2Fitalian-gramsci/lists"}