Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Admin Video Document

ASecurity

Files loose meeting recordings sitting in a Google Drive recording inbox into the right category sub-folder, with an approval gate. For each loose video it groups the same-prefix siblings (the ` - Notes by Gemini` Doc, ` - Chat` .txt, any .srt) into one unit, reads the Gemini Notes to classify which sub-folder it belongs in, shows the user a filing plan to approve, then moves the whole group and logs the move to a `Video Index` sheet. If nothing fits it proposes a new sub-folder. Trigger on /...

20 stars
0 votes
0 copies
1 views
Added 9/19/2026
businessgobashgitapi

Works with

cliapimcp

Security Analysis

A100/100

Scanned 9/19/2026

Install to Claude Code

$npx -y skills add peter-tu-zynkr/zynkr-skill-builder --skill admin-video-document --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Admin Video Document?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Admin Video Document
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/peter-tu-zynkr-admin-video-document/badge)](https://www.skillsdirectory.com/skills/peter-tu-zynkr-admin-video-document)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: admin-video-document
description: "Files loose meeting recordings sitting in a Google Drive recording inbox into the right category sub-folder, with an approval gate. For each loose video it groups the same-prefix siblings (the ` - Notes by Gemini` Doc, ` - Chat` .txt, any .srt) into one unit, reads the Gemini Notes to classify which sub-folder it belongs in, shows the user a filing plan to approve, then moves the whole group and logs the move to a `Video Index` sheet. If nothing fits it proposes a new sub-folder. Trigger on /admin-video-document, '整理錄影檔', '歸檔錄影', '歸檔影片到資料夾', '整理錄影資料夾', 'file my recordings', 'sort the recording folder', 'organise the recordings folder', or when the user points at the recording inbox and wants the videos filed."
category: operations
sheetId: "3.06"
project: admin-video-document
platform: claude
status: Done
author: Peter Tu
input: "None — recordings root and Video Index are constants below. Reads videos loose at the root AND reconciles against Fireflies so unsaved meetings still get indexed."
process: "snapshot inbox → group siblings into recording units → read Notes to classify → APPROVAL GATE → move whole group → log to Video Index → report"
output: "Each approved recording unit moved into its category sub-folder (video + Notes + Chat + SRT together), one new row per unit in the Video Index sheet, and a zh-TW run report."
synergy: []
house-style: bound

---

# admin-video-document — 錄影歸檔助理

```bash
npx skills add https://github.com/peter-tu-zynkr/zynkr-skill-builder --skill admin-video-document
```

A Google Drive **recording inbox** is where Meet/Zoom recordings land loose at the
top level, mixed in with the category sub-folders they belong in. This skill does
the *judgement + move* for you: it figures out what each recording is about (from
its Gemini Notes), proposes which sub-folder it goes in, **waits for you to
approve**, then moves the recording together with its companion files and logs the
move to the Video Index.

It is **approval-gated by design** — moving files is hard to eyeball after the
fact, so nothing is moved or created before you say go. It is also **idempotent**:
a re-run only sees what is still loose at the root, so already-filed recordings
naturally drop out — safe to run any time.

---

## Constants — don't re-derive these

| Thing | Value |
|---|---|
| Google account (all Drive/Sheets tools) | `<your-google-workspace-account>` |
| Recordings root folder ID | `<your-recordings-folder-id>` |
| Video Index spreadsheet ID | `<your-video-index-sheet-id>` |

All Drive/Sheets operations run as `<your-google-workspace-account>`.

Sub-folder destinations are **discovered at runtime** (Step 1) — never hardcode the
list, because the user adds folders over time. Classification heuristics live in
`references/classification-guide.md`.

---

## Step 1 — Snapshot the inbox

Call `mcp__google-workspace__list_drive_items` on the recordings root folder
(`folder_id = <your-recordings-folder-id>`, `page_size = 200`). Split the
children into two buckets:

- **Sub-folders** — every child with `mimeType = application/vnd.google-apps.folder`.
  These are the valid filing destinations. Keep each one's name + ID.
- **Loose files** — everything else sitting at the root. These are the filing
  candidates.

Ignore two things outright: the Video Index spreadsheet itself, and any
`application/vnd.google-apps.shortcut` items (shortcuts, not real files).

### Step 1b — Reconcile against Fireflies

Drive only sees meetings somebody remembered to save. Fireflies sees every meeting
Fred joined, so a session can be fully transcribed and still be absent from the
recordings root. Sweep it once:

```
mcp__fireflies__fireflies_get_transcripts(limit=50, fromDate="<window-start>", format="text")
```

For each row, match against the loose files + existing sub-folders by **date +
title**. Classify:

- **Matched** — a Drive recording exists. Attach the `transcriptId` so Step 6 can
  write the Fireflies permalink (`https://app.fireflies.ai/view/<id>`) into the
  Video Index alongside the Drive link.
- **Fireflies-only** — transcribed but never saved to Drive. These have **no file
  to move**, so they are an index-only row, not a filing candidate. Surface them
  in the Step 4 plan under a separate **「僅 Fireflies,無影片檔」** heading so Peter
  sees the gap; never create a folder or fabricate a file for them.

⚠️ **Request budget.** The free plan allows **50 API requests per day** and every
call spends one. This is **one** `fireflies_get_transcripts` call for the whole
reconcile — do not call `fireflies_get_transcript` per row; this skill files and
indexes videos, it never needs the transcript body.

⚠️ `audio_url` / `video_url` are empty on the free plan, so a Fireflies-only row
can never become a Drive recording automatically. Saying so is the point of the
heading above.

---

## Step 2 — Group loose files into recording units

Recordings usually arrive as a triplet that shares a name prefix, e.g.:

```
Team Weekly Meeting - 2026/06/04 14:26 CEST - Recording      (video/mp4)
Team Weekly Meeting - 2026/06/04 14:26 CEST - Notes by Gemini (Google Doc)
Team Weekly Meeting - 2026/06/04 14:26 CEST - Chat            (text/plain)
```

Build **recording units** by grouping loose files on a *group key*:

- Derive the group key by stripping the trailing ` - Recording`,
  ` - Notes by Gemini`, or ` - Chat` token from the name. Match any `.srt` file
  that shares the same prefix into the same group.
- Each unit's **anchor** is the video file (`video/mp4` or `video/quicktime`).
  The Notes Doc / Chat / SRT are its **companions** and move with it.
- A standalone video with no ` - Recording` suffix (e.g. `AI 業務系統 Demo`,
  `MECE AI 應用 (Lecturer)`, `Rescue time 用法`) is its own single-file unit.
- If a loose Notes/Chat file has no matching video at root, leave it alone (don't
  invent a unit for it) — note it in the final report as an orphan.

---

## Step 3 — Classify each unit

For each recording unit, decide the best-fit destination among the Step 1
sub-folders. Use `references/classification-guide.md` for what each `[N]` folder
is for and the title heuristics.

1️⃣ **If the unit has a `- Notes by Gemini` Doc** → read it with
`mcp__google-workspace__get_doc_content` (fall back to
`mcp__claude_ai_Google_Drive__read_file_content`). Combine the meeting summary
with the title to choose the folder. This is the high-confidence path.

2️⃣ **If there is no Notes Doc** (standalone video, or video-only group) →
classify from the title alone and mark confidence as **低 (low)**.

3️⃣ **If nothing fits** with reasonable confidence → mark the unit as a
**🆕 新資料夾 proposal** and suggest a short folder name in the existing naming
style (e.g. `[N.0] <topic>` or `[@] <topic>`). **Do not create it yet.**

**Watch for client / consult meetings hiding behind a generic title.** A
recording can *look* like an internal meeting (e.g. a partner weekly, `<Name> /
You`, `<Name> <> You`) but actually be a **sales / consulting engagement with
a client**. Tells: the Notes are about a prospect's business, a demo for them, a
pilot, pricing, or a proposal; or the other party is a known client (cross-check
the Video Index — e.g. a name already filed under the sales/consult folder).
When it's a client engagement, route it into the **nested `Consult` folder inside
the sales/consult sub-folder** (one folder per client cohort, files numbered `[N]`
— see Step 5 numbering rule), NOT the People or Weekly-meeting folder. If
unsure, surface it at the gate with the client name in 依據 so the user can confirm.

Record for each unit: the chosen folder (or 🆕 proposal), a confidence
(高 / 中 / 低), and a one-line 依據 (reason) — what in the Notes/title drove it.
For a destination that uses `[N]` numbering, also note the next number you'd
assign and the proposed new filename (Step 5).

---

## Step 4 — Present the filing plan — APPROVAL GATE ⟵ stop here

Show the user **one zh-TW table**, one row per recording unit, then stop and wait.

| # | 錄影單元 | 檔案 | 建議資料夾 | 信心 | 依據 |
|---|---|---|---|---|---|
| 1 | Team Weekly Meeting - 2026/06/04 | 影片+Notes+Chat(3) | [8.0] Weekly meeting | 高 | 團隊週會逐字稿 |
| 2 | … | … | … | … | … |

- 「建議資料夾」shows the existing folder name, or `🆕 新資料夾:<name>` for a proposal.
- 「檔案」lists what moves together (影片 / Notes / Chat / SRT) and the count.
- After the table, ask the user how to proceed:
  1️⃣ 全部照建議歸檔
  2️⃣ 我要改某幾列的目標資料夾(請告訴我列號 → 資料夾)
  3️⃣ 跳過某幾列(先不動)

**Nothing moves, and no folder is created, until the user explicitly approves.**
Apply any per-row edits or skips they give before executing.

---

## Step 5 — Execute the approved moves

For each **approved** unit:

1. If it targets a 🆕 new folder, create it first:
   `mcp__google-workspace__create_drive_file` with
   `mimeType = application/vnd.google-apps.folder`, `name = <approved name>`,
   `parentId = <your-recordings-folder-id>`. Capture the new folder ID.
2. Move **every file in the unit** (video + Notes + Chat + SRT) into the target:
   for each file call `mcp__google-workspace__update_drive_file` with
   `add_parents = <target folder id>` and
   `remove_parents = <current parent — the root, OR another sub-folder if you're
   re-filing>`.

Move all companions to the **same** destination as their video. If a single file
in a group fails to move, finish the rest and flag the partial in the report.

### Numbered-folder rename rule (e.g. the `Consult` folder)

Some destinations file their contents with a **sequential `[N]` prefix** instead
of keeping the raw recording name — most notably the **`Consult` folder** under
the sales/consult sub-folder, where each client engagement is `[N] <Client> (...) -
<date>` for the video and `[N] <Client>_<…>` for the companion doc (e.g.
`[1] Bicky (Pilot Round) - 2025/08/29` + `[1] Bicky Yang_錄影逐字稿`).

When the approved destination is a numbered folder:

1. **List the destination folder** with `mcp__google-workspace__list_drive_items`
   and find the current **max `[N]`**. The unit's number = max + 1 (stack up).
2. **Rename every file in the unit to that same `[N]`**, mirroring the folder's
   existing pattern, in the **same `update_drive_file` call** that moves it (pass
   `name = …`). Keep the video + companion on one shared number, e.g.
   `[2] Mark (TheM) - 2026/06/09` (video) and
   `[2] Mark (TheM)_Notes by Gemini - 2026/06/09` (Notes Doc).
3. Use the **client/person identity the user gives** (company + name) for `<Client>`;
   if they haven't named it, infer from the Notes and confirm at the gate.

Plain category folders (`[8.0] Weekly meeting`, `[7.0] People`, …) do **not**
renumber — keep the original recording name there. Only renumber for folders that
already follow the `[N] …` convention.

---

## Step 6 — Log each move to the Video Index

Append one row **per recording unit** (keyed on the video) to the Video Index
sheet (`spreadsheet_id = <your-video-index-sheet-id>`).

1. First read the header + a couple of existing rows with
   `mcp__google-workspace__read_sheet_values` (`range_name = A1:F5`) to match the
   column order and the `Folder Path` prefix style currently in use.
2. Append after the last used row with
   `mcp__google-workspace__modify_sheet_values`. Columns:
   `Folder Path · Folder Name · File Name · Drive Link · Created Time · Last Updated`
   - **Folder Name** = destination sub-folder display name (e.g. `[8.0] Weekly meeting`).
   - **Folder Path** = best-effort full path, matching the prefix style you read in
     step 1 of this section, ending in the destination folder name.
   - **File Name** = the video's name.
   - **Drive Link** = `https://drive.google.com/file/d/<video_id>/view`.
   - **Created Time / Last Updated** = use the video's `createdTime` / now if available.

Only log units that actually moved.

---

## Step 7 — Report

Print a zh-TW summary:

- ✅ 已歸檔 N 個錄影單元 → 列出每個 → 哪個資料夾(含一起搬的檔案數)
- 🆕 新建 M 個資料夾(如有)
- ⏭️ 跳過 / 待確認的列(如有)
- 📄 已寫入 Video Index N 列
- 📥 收件匣還留著的東西(孤兒 Notes/Chat、信心過低、或使用者跳過的)

---

## Why it's built this way

- **Approval-gated, not autonomous.** Moving files is hard to eyeball after the
  fact, and the user wants to approve. Unlike fully-autonomous intake skills, this
  one always stops at Step 4. Safety = the gate, not just idempotency.
- **Group-aware.** A recording is useless without its Notes/Chat next to it, so
  the unit — not the single file — is what gets filed.
- **Notes-driven classification.** The Gemini Notes summary is a far stronger
  signal than the title alone, especially for ambiguous 1:1 / demo titles.
- **Index stays complete.** Logging every move keeps the Video Index a true
  record of where each recording lives.

## House style

Writing style is **not owned by this file**. The house voice lives in two Google Docs under
`[@] 寫作指南` (`12DBdFz3SK22ie9im_ThFMI7IBRXsTZsV`), read at runtime:

- 《[2.0] Zynkr 通用風格指南 House Voice》 `10bOIQwRm9Pxwgct4hlwCwK_B4Pipai1HqBPZKzyRHSE` —
  the universal core, plus the addendum for this surface
- 《[3.2] 禁用詞清單 Forbidden Words》 `1N5sHLP4qzmmhpCGsi6KElxi1z0MFe4QZ0Q_35T10Uyg`

Read both before producing client- or reader-facing text, and scan the draft against 《[3.2]》
before handing it over. If Drive is unreachable, say so in the output rather than proceeding
unchecked. Never re-implement either list inside this file.

Attribution

peter-tu-zynkrpeter-tu-zynkr
View sourceMore from peter-tu-zynkr →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Solution Architect

Designs system architecture, component specifications, and technical integration strategy. Use when: designing solutions, system architecture, technology stack, or integration approaches.

192 votes

Akorchak:Venture Assessment

Generate a comprehensive VC investment assessment report for a company

72 votes

Stock Analysis

Analyze stocks and cryptocurrencies using Yahoo Finance data. Supports portfolio management (create, add, remove assets), crypto analysis (Top 20 by market cap), and periodic performance reports (daily/weekly/monthly/quarterly/yearly). 8 analysis dimensions for stocks, 3 for crypto. Use for stock analysis, portfolio tracking, earnings reactions, or crypto monitoring.

6511 votes

Just Fucking Cancel

Find and cancel unwanted subscriptions by analyzing bank transactions. Detects recurring charges, calculates annual waste, and helps you cancel with direct URLs and browser automation. Use when: 'cancel subscriptions', 'audit subscriptions', 'find recurring charges', 'what am I paying for', 'save money', 'subscription cleanup', 'stop wasting money'. Supports CSV import (Apple Card, Chase, Amex, Citi, Bank of America, Capital One, Mint, Copilot) OR Plaid API for automatic transaction pull. Out...

6511 votes

Telegram Compose

Compose rich, readable Telegram messages using HTML formatting via direct Telegram API. Use when: (1) Sending any Telegram message beyond a simple one-line reply, (2) Creating structured messages with sections, lists, or status updates, (3) Need formatting unavailable via Clawdbot's Markdown conversion (underline, spoilers, expandable blockquotes, user mentions by ID), (4) Sending alerts, reports, summaries, or notifications to Telegram, (5) Want professional, scannable message formatting wit...

6511 votes
View all in business →