Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install vivekkarmarkar-claude-code-os-skills-audify-and-sharegit clone https://github.com/VivekKarmarkar/claude-code-os.gitcp claude-code-os/SKILL.MD ~/.claude/skills/vivekkarmarkar-claude-code-os-skills-audify-and-share/SKILL.md---
name: audify-and-share
description: Convert a document (PDF, MD, TXT, log, or Claude Code session JSONL) to MP3 via OpenAI TTS AND upload + share it via Google Drive in one step. Chains the `/audify` and `/upload-and-share` skills. Use when the user says "audify and share", "convert to mp3 and share with X", "make an mp3 of this and send to Y", "audify this PDF and share with vivek@...", or any combination of an audify-style request plus a share-with-email ask.
---
# audify-and-share — Document → MP3 → Drive Share
One command that chains `/audify` (document → MP3) with `/upload-and-share` (MP3 → Drive → shared with recipient). No new scripts — pure orchestration.
## Arguments
Typical invocations:
- `/audify-and-share report.pdf with alice@example.com`
- `/audify-and-share Assignment8 PDF and share with vivekjobapp123@gmail.com`
- `/audify-and-share the session transcript, share with bob@example.com`
- `/audify-and-share this paper with adi@x.com, bob@y.com` (multiple recipients)
The input file and recipient email are both required. Parse them from the user message.
## Workflow
### Step 1 — Audify
Delegate to the `/audify` skill (see `~/.claude/skills/audify/SKILL.md`). In practice this means:
```bash
# Dry-run first for a cost/size sanity check
python3 ~/.claude/skills/audify/scripts/audify.py /path/to/input --dry-run
# Real run — long inputs should go in the background
python3 ~/.claude/skills/audify/scripts/audify.py /path/to/input [-o SHORT.mp3]
```
If the input filename has spaces or special characters (e.g. `Assignment 8 - Foo.pdf`), pass `-o` with a clean short name (`assignment8.mp3`) to avoid downstream shell-quoting headaches.
For Claude Code session transcripts, first flatten the JSONL:
```bash
python3 ~/.claude/skills/audify/scripts/extract_session.py SESSION.jsonl session.txt
python3 ~/.claude/skills/audify/scripts/audify.py session.txt
```
### Step 2 — Upload + Share
Delegate to the `/upload-and-share` skill (see `~/.claude/skills/upload-and-share/SKILL.md`). Concretely:
```bash
# Upload
gws drive files create --json '{"name": "OUTPUT.mp3"}' --upload "/abs/path/OUTPUT.mp3"
# (capture the returned file id)
# Share with each recipient (default: reader / view access)
gws drive permissions create \
--params '{"fileId": "<FILE_ID>"}' \
--json '{"role": "reader", "type": "user", "emailAddress": "<EMAIL>"}'
# Fetch the webViewLink
gws drive files get \
--params '{"fileId": "<FILE_ID>", "fields": "webViewLink, name"}'
```
Access-level defaults match `/upload-and-share`:
| User says | Role |
|---|---|
| (nothing specified) | reader |
| "view", "read only" | reader |
| "edit", "writer", "full access" | writer |
| "comment" | commenter |
### Step 3 — Report
Single confirmation message covering both operations:
```
Audified "<input>" → <output>.mp3 (<N> chunks, ~$<cost>)
Shared with <email> (<access>)
Link: https://drive.google.com/file/d/<id>/view
```
## Error handling
- **Audify fails** → surface the error; do NOT attempt upload (nothing to upload).
- **Audify succeeds, upload fails** → report the local MP3 path so the user can retry with `/upload-and-share` directly.
- **Upload succeeds, share fails** → report the file ID so the user can retry `gws drive permissions create` manually.
## Why this skill exists (design note)
We observed this exact 2-step pattern three times in a single session — audify a PDF, then upload-and-share the resulting MP3 with the same recipient. Chaining them into a single command eliminates the handoff friction while keeping both underlying skills intact and independently useful.
## Files
(None — this skill is pure orchestration; all logic lives in `/audify` and `/upload-and-share`.)