slack-extended
// Upload files, manage canvases, and manage bookmarks in Slack. Use when you need to share files, create/edit canvases, or add/organize link bookmarks in Slack channels. Complements the core slack skill which handles messages, reactions, and pins.
Slack Extended
Extends the core slack skill with file uploads and canvas management. Uses Python scripts that call the Slack API directly with the bot token from ~/.openclaw/openclaw.json.
Requires OAuth scopes: files:write, canvases:write (add at api.slack.com if missing).
File Upload
Upload a local file to a Slack channel:
python3 /mnt/openclaw/skills/slack-extended/scripts/slack_file_upload.py \
--channel C123ABC \
--file /path/to/file.png \
--title "Q4 Report" \
--message "Here's the latest report"
Arguments:
--channel(required): Channel ID to share the file in--file(required): Path to the local file--title: Display title (defaults to filename)--message: Comment posted with the file
Returns JSON with file_id, permalink, and channel.
Common patterns:
- Share a generated chart:
--file /tmp/chart.png --title "Performance Chart" - Share a text file:
--file ./notes.txt --title "Meeting Notes" - Share with context:
--message "Backtest results for GEM v2" --file results.csv
Canvas Operations
Manage Slack canvases (collaborative documents):
Create a canvas
python3 /mnt/openclaw/skills/slack-extended/scripts/slack_canvas.py create \
--title "Sprint Notes" \
--markdown "## Goals\n- Ship feature X\n- Fix bug Y"
Edit a canvas
Append content:
python3 /mnt/openclaw/skills/slack-extended/scripts/slack_canvas.py edit \
--canvas-id F07ABCD1234 \
--operation insert_at_end \
--markdown "## Update\nNew section added"
Replace a section:
python3 /mnt/openclaw/skills/slack-extended/scripts/slack_canvas.py edit \
--canvas-id F07ABCD1234 \
--section-id temp:C:abc123 \
--operation replace \
--markdown "## Revised Section\nUpdated content"
Operations: insert_at_start, insert_at_end, insert_after, replace, delete
Look up sections
python3 /mnt/openclaw/skills/slack-extended/scripts/slack_canvas.py sections \
--canvas-id F07ABCD1234
Delete a canvas
python3 /mnt/openclaw/skills/slack-extended/scripts/slack_canvas.py delete \
--canvas-id F07ABCD1234
Set access
python3 /mnt/openclaw/skills/slack-extended/scripts/slack_canvas.py access \
--canvas-id F07ABCD1234 \
--channel C123ABC \
--level edit
Canvas Markdown
Canvases support: bold, italic, strikethrough, headings (h1-h3), bulleted/ordered lists, checklists, code blocks, code spans, links, tables (max 300 cells), blockquotes, dividers, emojis.
Mentions:  for users,  for channels.
Bookmarks
Manage link bookmarks in the bookmark bar at the top of Slack channels.
Limitation: Slack API only supports link bookmarks. Folders are a UI-only feature and cannot be created via the API.
Requires OAuth scopes: bookmarks:write, bookmarks:read
List bookmarks
python3 /mnt/openclaw/skills/slack-extended/scripts/slack_bookmark.py list \
--channel C123ABC
Add a link bookmark
python3 /mnt/openclaw/skills/slack-extended/scripts/slack_bookmark.py add \
--channel C123ABC \
--title "Design Docs" \
--link "https://example.com" \
--emoji ":link:"
Edit a bookmark
python3 /mnt/openclaw/skills/slack-extended/scripts/slack_bookmark.py edit \
--channel C123ABC \
--bookmark-id Bk123 \
--title "New Title"
Remove a bookmark
python3 /mnt/openclaw/skills/slack-extended/scripts/slack_bookmark.py remove \
--channel C123ABC \
--bookmark-id Bk123
Troubleshooting
missing_scopeerror: Add the required scope (files:writeorcanvases:write) at api.slack.com, then reinstall the app to the workspace.channel_not_found: Use the channel ID (e.g.C07ABC123), not the channel name.not_authed: Bot token may have changed. Check~/.openclaw/openclaw.json.- Canvas edit fails: Look up sections first to get valid
section_idvalues. missing_scopefor bookmarks: Addbookmarks:writeandbookmarks:readat api.slack.com, then reinstall.- Folders not supported: Slack API does not support creating folders — only link bookmarks. Folders can only be created manually in the Slack UI.