{"id":21683417,"url":"https://github.com/snow-actions/tweet","last_synced_at":"2025-04-12T07:50:35.305Z","repository":{"id":40566549,"uuid":"286003898","full_name":"snow-actions/tweet","owner":"snow-actions","description":"Tweet to Twitter via GitHub Actions.","archived":false,"fork":false,"pushed_at":"2023-04-21T08:20:03.000Z","size":3604,"stargazers_count":57,"open_issues_count":3,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-04T02:34:38.047Z","etag":null,"topics":["actions","github-actions","twitter"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/snow-actions.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-08T08:26:45.000Z","updated_at":"2025-03-03T11:28:50.000Z","dependencies_parsed_at":"2024-06-18T19:45:38.972Z","dependency_job_id":"24a2d79d-8543-4b83-841e-5d6b06970215","html_url":"https://github.com/snow-actions/tweet","commit_stats":{"total_commits":189,"total_committers":3,"mean_commits":63.0,"dds":0.3915343915343915,"last_synced_commit":"ae3b21541638d390b601d82a4f2dcc496bf6120c"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":"actions/typescript-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snow-actions%2Ftweet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snow-actions%2Ftweet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snow-actions%2Ftweet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snow-actions%2Ftweet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snow-actions","download_url":"https://codeload.github.com/snow-actions/tweet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248537003,"owners_count":21120688,"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":["actions","github-actions","twitter"],"created_at":"2024-11-25T16:11:50.787Z","updated_at":"2025-04-12T07:50:35.281Z","avatar_url":"https://github.com/snow-actions.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tweet action\n\n[![CI](https://github.com/snow-actions/tweet/actions/workflows/ci.yml/badge.svg)](https://github.com/snow-actions/tweet/actions/workflows/ci.yml)\n\nTweet via GitHub Actions.\n\n## Usage\n\n1. Create your Twitter App in [developer.twitter.com](https://developer.twitter.com/en/apps).\n1. Generate Twitter API v1.1 tokens. ([Not Twitter API v2](#why-not-twitter-api-v2))\n1. Set secrets `TWITTER_CONSUMER_API_KEY`, `TWITTER_CONSUMER_API_SECRET_KEY`, `TWITTER_ACCESS_TOKEN`, `TWITTER_ACCESS_TOKEN_SECRET` in settings.\n1. Create workflow YAML.\n\n### Basic\n\n```yml\nsteps:\n  - name: Tweet\n    uses: snow-actions/tweet@v1.4.0\n    with:\n      status: |\n        Released ${{ github.event.release.name }}\n        ${{ github.event.release.html_url }}\n    env:\n      CONSUMER_API_KEY: ${{ secrets.TWITTER_CONSUMER_API_KEY }}\n      CONSUMER_API_SECRET_KEY: ${{ secrets.TWITTER_CONSUMER_API_SECRET_KEY }}\n      ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}\n      ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}\n```\n\n### Optional\n\n```yml\nenv:\n  CONSUMER_API_KEY: ${{ secrets.TWITTER_CONSUMER_API_KEY }}\n  CONSUMER_API_SECRET_KEY: ${{ secrets.TWITTER_CONSUMER_API_SECRET_KEY }}\n  ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}\n  ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}\nsteps:\n  - uses: actions/checkout@v3\n  - name: Tweet summary\n    id: summary\n    uses: snow-actions/tweet@v1.4.0\n    with:\n      status: |\n        Released ${{ github.event.release.name }}\n        ${{ github.event.release.html_url }}\n      media_paths: |\n        1st.png\n        2nd.png\n  - name: Tweet details\n    uses: snow-actions/tweet@v1.4.0\n    with:\n      status: |\n        Additional information\n      in_reply_to_status_id: ${{ fromJSON(steps.summary.outputs.response).id_str }}\n```\n\n## Environments\n\nAuthentication parameters.\n\n|name|required|description|\n|---|---|---|\n|CONSUMER_API_KEY|required|Consumer API key|\n|CONSUMER_API_SECRET_KEY|required|Consumer API secret key|\n|ACCESS_TOKEN|required|Access token|\n|ACCESS_TOKEN_SECRET|required|Access token secret|\n\n## Inputs \u0026 Outputs\n\nSee [action.yml](action.yml) and [Twitter API reference](https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update).\n\n### Inputs\n\nRequest parameters.\n\n|name|required|description|\n|---|---|---|\n|status|required|The text of the status update. URL encode as necessary. [t.co link wrapping](https://developer.twitter.com/en/docs/basics/tco) will affect character counts.|\n|media_paths|optional|[Upload media](https://developer.twitter.com/en/docs/twitter-api/v1/media/upload-media/overview) path(s). You may attach up to 4 photos, 1 animated GIF or 1 video in a Tweet.|\n\n#### Media types \u0026 size restrictions\n\nSize restrictions for uploading via API\n- Image 5MB\n- GIF 15MB\n- Video 15MB (when using media_category=amplify)\n\n### Outputs\n\nResponse.\n\n|name|description|\n|---|---|\n|response|Response JSON|\n\n## Supported\n\n### Runners\n\nSee [ci.yml](.github/workflows/ci.yml)\n\n- `ubuntu-*`\n- `windows-*`\n- `macos-*`\n- `self-hosted`\n\n### Events\n\n- Any\n\n## Why not Twitter API v2?\n\nThe access token of Twitter API v2 has a time limit.\n\nIf the scope `offline.access` is applied an OAuth 2.0 refresh token will be issued. With this refresh token, we obtain an access token. Secure storage is required to keep these tokens.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnow-actions%2Ftweet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnow-actions%2Ftweet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnow-actions%2Ftweet/lists"}