{"id":16508507,"url":"https://github.com/osteele/slack-channel-manager","last_synced_at":"2026-04-16T00:32:00.677Z","repository":{"id":66371809,"uuid":"374916994","full_name":"osteele/slack-channel-manager","owner":"osteele","description":"Bulk add and modify Slack channels from the command line","archived":false,"fork":false,"pushed_at":"2021-06-14T05:25:17.000Z","size":40,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-19T12:58:57.532Z","etag":null,"topics":["slack"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/osteele.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-06-08T07:14:12.000Z","updated_at":"2021-06-19T11:34:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"85f4ebaa-2656-4e8a-9a07-d0cbb19b8f22","html_url":"https://github.com/osteele/slack-channel-manager","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/osteele/slack-channel-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osteele%2Fslack-channel-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osteele%2Fslack-channel-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osteele%2Fslack-channel-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osteele%2Fslack-channel-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/osteele","download_url":"https://codeload.github.com/osteele/slack-channel-manager/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osteele%2Fslack-channel-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31866287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["slack"],"created_at":"2024-10-11T15:45:55.295Z","updated_at":"2026-04-16T00:32:00.550Z","avatar_url":"https://github.com/osteele.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Slack Channel Creator\n\n## Installation\n\n1. On the [Slack app management page](https://api.slack.com/apps), create a\n   Slack application with these scopes: `channels:read`, `channels:write`,\n   `groups:read`, `groups:write`, `im:read`, `mpim:read`, `chat:write`, `pins:write`.\n   Install the\n   application in the workspace.\n\n2. Set the `SLACK_OAUTH_TOKEN` environment variable to the value of the User\n   OAuth Token from the Slack app management page. (In repl.it, use the Secrets\n   icon in the sidebar for this.)\n\n3. [Install Poetry](http://python-poetry.org/docs/). (This is not necessary on repl.it.)\n\n4. Install the dependencies:\n\n   `poetry install --no-root`\n\n## Commands\n\nCommon to all commands:\n\n- Where the documentation specifies a CSV file, you may also supply a file whose name ends in `.url`. In this case, the content of the file should be a URL that dereferences to a CSV document.\n- `--dry-run` shows what actions would be taken, without performing these actions.\n\n### Creating Channels\n\n1. Create a CSV file named `channels.csv`. This file must have a column named \"Name\", and\n   optional columns \"Topic\" and \"Purpose\". The file `examples/channel-creation.csv` is an\n   example.\n\n2. In the Terminal or Shell, run:\n\n   ```sh\n   poetry run create_channels\n   ```\n\nThe IDs of created channels (and all other channels) are written to\n`channel-ids.csv`. See the documentation for “Listing Channel IDs\", below, for\nadditional documentation about this file.\n\nThe `--dry-run` option previews the channel creation actions without executing\nthem.\n\n### Listing Channel IDs\n\nRun this command to write a list of all a workspace's public channels to `channel-ids.csv`.\n\n```sh\npoetry run list_channels\n```\n\nThe output file has these columns: \"Name\", \"Id\", \"Topic\", \"Purpose\", \"Members\", \"Private\", and \"Archived\".\n\nThe cells in the Id column can be used as direct link URLs to the channels. For\nexample, if the workspace is named `example-space` and a channel has an id\n`C3D404E10ED`, this channel id can be used in the URL for a direct link:\n`https://example-space.slack.com/archives/C3D404E10ED`.\n\n### Bulk Message Posting\n\nThis feature sends a parameterized message to each channel that is listed in a\nCSV file. The CSV file should contain at least a Name column, that lists the\nnames of Slack channels. It may contain other columns, that are used in the\ntemplate text. See the files in `examples` for an example.\n\n```sh\npoetry run post_messages channels.csv template.jinja\n```\n\nThe template file uses the [Jinja template\nformat](https://jinja.palletsprojects.com/en/3.0.x/templates/). Template\nvariables refer to cells in the CSV file, except that the spaces in the column\nnames are replaced by underscores. For example, if the CSV contains a column\nnamed `Zoom URL`, the template may refer to it as `{{ Zoom_URL }}`. See\n`examples/bulk-messaging.csv`  and examples/bulk-messaging.jinja` for an example.\n\nMessages are formatted with Slack's [mrkdwn](https://api.slack.com/reference/surfaces/formatting#linking-urls) syntax. The template may include `*` for bullet list items, `\u003chttp://example.com\u003e` and `\u003chttp://example.com|title\u003e` for links, etc.\n\nThe `--dry-run` option previews the actions without executing them.\n\n### Set channel pins\n\n- input: a csv, each row being [`channel`, `message`]\n- This tool focuses on *one pinned item* per channel. When you set pins with it, it creates a new pinned message for new channels, and edits the pinned message for channels that it has dealt with.\n\n```sh\npoetry run set_pins to_pin.csv\n```\n\nThe `--dry-run` option previews the actions without executing them.\n\n### Add Channel Members\n\n```sh\npoetry run add_channel_members CSV_FILE\n```\n\nCSV_FILE should be the path to a CSV file whose columns are Member or Email, and a column for each channel name.\n\nIf Member is supplied instead of Email, it should be in the form `User Name \u003cuser@host.com\u003e`.\n\nThe cell at the intersection of a member's row, and a channel's column, contains `y` if the member should be invited to the workspace.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosteele%2Fslack-channel-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosteele%2Fslack-channel-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosteele%2Fslack-channel-manager/lists"}