[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7346D7J0DZPHHBRKHSZ3JBH":3,"skill-same:01M7346D7J0DZPHHBRKHSZ3JBH":56},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":23,"commitSha":24,"skillDirectory":25,"forksCount":26,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":29,"install":30,"resources":43},"01M7346D7J0DZPHHBRKHSZ3JBH","video-shot-transcript",null,"Use when a user asks to dissect a local video into unique shots, angles, poses, or frame divisions and wants the transcript or visible captions aligned to each division. Trigger for \"break this video down\", \"dissect by frames\", \"unique angles\", \"shot list\", \"transcript at each cut\", \"describe every scene\", TikTok\u002FReels\u002FShorts analysis, or any request to produce timestamp ranges like `0:00-0:02: \"...\" | visual description`.","LiamVisionary\u002Fhivemindos","LiamVisionary","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F102138294?v=4","01M73379NZZ99TT4ZS17XR3Q9D","01M73379PX6AKQNWN05VNSYRXW",13,"MIT","https:\u002F\u002Fgithub.com\u002FLiamVisionary\u002Fhivemindos\u002Fblob\u002Fmain\u002Fpackaged-skills\u002Foptional\u002Fmedia\u002Fhivemindos\u002Fvideo-shot-transcript\u002FSKILL.md",[],[],"2026-11-11 15:11:14",false,"---\nname: video-shot-transcript\ndescription: 'Use when a user asks to dissect a local video into unique shots, angles, poses, or frame divisions and wants the transcript or visible captions aligned to each division. Trigger for \"break this video down\", \"dissect by frames\", \"unique angles\", \"shot list\", \"transcript at each cut\", \"describe every scene\", TikTok\u002FReels\u002FShorts analysis, or any request to produce timestamp ranges like `0:00-0:02: \"...\" | visual description`.'\n---\n\n# Video Shot Transcript\n\nCreate a timestamped shot list that combines visual angle\u002Fpose changes with spoken transcript, embedded subtitles, or on-screen captions.\n\n## Output Shape\n\nDefault to this compact format unless the user asks for a table:\n\n```text\n0:00-0:02.3: \"This is a message to all finance bros\" | man sitting at a desk, hands steepled in front of him, looking at the camera; dark office, map behind him, keyboard in foreground.\n0:02.3-0:03.2: no captioned dialogue | full-body silhouette on a pale gray background, hand to chin in a thinking pose, looking slightly downward.\n```\n\nUse `no captioned dialogue`, `onscreen text: \"...\"`, or `transcript uncertain: \"...\"` instead of inventing words.\n\n## Privacy Rule\n\nTreat user-supplied local media as private by default.\n\n- Do not upload audio, video, frames, or transcripts to an external transcription or vision service unless the user explicitly approves that transfer after being told what will be uploaded.\n- Try local sources first: embedded subtitles, visible captions through OCR, local ASR tools, and manual frame inspection.\n- If a cloud transcription would materially improve the result, ask for approval in plain language and continue with local evidence if approval is not granted.\n\n## Workflow\n\n1. Probe the media with `ffprobe` and record duration, FPS, dimensions, streams, and embedded subtitle tracks.\n2. Detect candidate visual cuts with FFmpeg scene detection. Start around `scene=0.15`; raise toward `0.26` if there are too many false positives, lower toward `0.08` for subtle cuts.\n3. Generate contact sheets at 1-3 fps and representative frames at segment midpoints. Inspect the sheets visually; scene detection finds cuts, but the agent decides which angles are unique.\n4. Gather transcript evidence in this order:\n   - Embedded subtitles\u002Fcaptions if present.\n   - On-screen captions via local OCR, usually `tesseract`.\n   - Local audio transcription if a local tool is already installed (`whisper`, `whisper-cli`, `whisper-cpp`, `faster-whisper`, or similar).\n   - Cloud transcription only after explicit approval.\n5. Align words\u002Fcaptions to the shot boundaries. When caption timing is approximate, use the visual caption appearance times and explain uncertainty only where it matters.\n6. Write the final shot list all the way to the end of the video. Preserve short transition flashes when they are visually meaningful; otherwise merge near-duplicate cut detections into the surrounding shot.\n\n## Helper Script\n\nIf this skill directory has `scripts\u002Fdissect_video.py`, use it for the mechanical pass:\n\n```bash\npython3 scripts\u002Fdissect_video.py \u002Fpath\u002Fto\u002Fvideo.mp4 --out \u002Ftmp\u002Fvideo-shot-transcript\n```\n\nThe script writes:\n\n- `manifest.json` with probe metadata, detected cuts, and segment ranges.\n- `representative-frames\u002F` midpoint frames for each segment.\n- `contact-sheet-1fps.jpg` and `contact-sheet-2fps.jpg` when FFmpeg can create them.\n- `ocr.tsv` when `tesseract` is installed.\n- `audio.wav` for local ASR or user-approved transcription.\n- `draft.md` as a rough local-only starting point.\n\nThe script output is not the final answer. Use it to reduce grunt work, then inspect frames and clean the transcript.\n\n## Manual Commands\n\nProbe:\n\n```bash\nffprobe -hide_banner -v error -show_format -show_streams \u002Fpath\u002Fto\u002Fvideo.mp4\n```\n\nDetect cuts:\n\n```bash\nffmpeg -hide_banner -i \u002Fpath\u002Fto\u002Fvideo.mp4 \\\n  -vf \"select='gt(scene,0.15)',showinfo\" \\\n  -f null -\n```\n\nGenerate contact sheets:\n\n```bash\nffmpeg -hide_banner -y -i \u002Fpath\u002Fto\u002Fvideo.mp4 \\\n  -vf \"fps=2,scale=144:-1,tile=9x6:padding=6:margin=6:color=white\" \\\n  -frames:v 1 -update 1 \u002Ftmp\u002Fvideo-2fps-sheet.jpg\n```\n\nExtract local transcription audio:\n\n```bash\nffmpeg -hide_banner -y -i \u002Fpath\u002Fto\u002Fvideo.mp4 \\\n  -vn -ac 1 -ar 16000 -c:a pcm_s16le \u002Ftmp\u002Fvideo-audio.wav\n```\n\nOCR sampled frames:\n\n```bash\nffmpeg -hide_banner -y -i \u002Fpath\u002Fto\u002Fvideo.mp4 -vf fps=3 \u002Ftmp\u002Fvideo-frames\u002Fframe_%04d.jpg\nfor f in \u002Ftmp\u002Fvideo-frames\u002Fframe_*.jpg; do\n  tesseract \"$f\" stdout --psm 6 2>\u002Fdev\u002Fnull\ndone\n```\n\n## Visual Description Guidance\n\n- Name the shot type when clear: desk medium shot, side profile, extreme close-up, full-body silhouette, cash close-up, title card, transition flash.\n- Capture pose, gaze, camera distance, lighting, background, and important foreground objects.\n- Mention visible text separately from spoken transcript when the video uses title cards.\n- Do not over-describe tiny movements inside a continuous shot unless the user asked for frame-level motion.\n- Keep timestamps precise enough to be useful. Tenths of a second are fine for short social clips.\n\n## Final Check\n\nBefore replying:\n\n- Confirm the segments cover `0:00` through the actual end time.\n- Check that no transcript phrase is assigned to a shot where it is not visible\u002Fheard.\n- Mark uncertain transcript instead of guessing.\n- If audio was not transcribed locally and no external upload was approved, say the transcript came from visible captions or embedded subtitles.\n","# Video Shot Transcript\n\nCreate a timestamped shot list that combines visual angle\u002Fpose changes with spoken transcript, embedded subtitles, or on-screen captions.\n\n## Output Shape\n\nDefault to this compact format unless the user asks for a table:\n\n```text\n0:00-0:02.3: \"This is a message to all finance bros\" | man sitting at a desk, hands steepled in front of him, looking at the camera; dark office, map behind him, keyboard in foreground.\n0:02.3-0:03.2: no captioned dialogue | full-body silhouette on a pale gray background, hand to chin in a thinking pose, looking slightly downward.\n```\n\nUse `no captioned dialogue`, `onscreen text: \"...\"`, or `transcript uncertain: \"...\"` instead of inventing words.\n\n## Privacy Rule\n\nTreat user-supplied local media as private by default.\n\n- Do not upload audio, video, frames, or transcripts to an external transcription or vision service unless the user explicitly approves that transfer after being told what will be uploaded.\n- Try local sources first: embedded subtitles, visible captions through OCR, local ASR tools, and manual frame inspection.\n- If a cloud transcription would materially improve the result, ask for approval in plain language and continue with local evidence if approval is not granted.\n\n## Workflow\n\n1. Probe the media with `ffprobe` and record duration, FPS, dimensions, streams, and embedded subtitle tracks.\n2. Detect candidate visual cuts with FFmpeg scene detection. Start around `scene=0.15`; raise toward `0.26` if there are too many false positives, lower toward `0.08` for subtle cuts.\n3. Generate contact sheets at 1-3 fps and representative frames at segment midpoints. Inspect the sheets visually; scene detection finds cuts, but the agent decides which angles are unique.\n4. Gather transcript evidence in this order:\n   - Embedded subtitles\u002Fcaptions if present.\n   - On-screen captions via local OCR, usually `tesseract`.\n   - Local audio transcription if a local tool is already installed (`whisper`, `whisper-cli`, `whisper-cpp`, `faster-whisper`, or similar).\n   - Cloud transcription only after explicit approval.\n5. Align words\u002Fcaptions to the shot boundaries. When caption timing is approximate, use the visual caption appearance times and explain uncertainty only where it matters.\n6. Write the final shot list all the way to the end of the video. Preserve short transition flashes when they are visually meaningful; otherwise merge near-duplicate cut detections into the surrounding shot.\n\n## Helper Script\n\nIf this skill directory has `scripts\u002Fdissect_video.py`, use it for the mechanical pass:\n\n```bash\npython3 scripts\u002Fdissect_video.py \u002Fpath\u002Fto\u002Fvideo.mp4 --out \u002Ftmp\u002Fvideo-shot-transcript\n```\n\nThe script writes:\n\n- `manifest.json` with probe metadata, detected cuts, and segment ranges.\n- `representative-frames\u002F` midpoint frames for each segment.\n- `contact-sheet-1fps.jpg` and `contact-sheet-2fps.jpg` when FFmpeg can create them.\n- `ocr.tsv` when `tesseract` is installed.\n- `audio.wav` for local ASR or user-approved transcription.\n- `draft.md` as a rough local-only starting point.\n\nThe script output is not the final answer. Use it to reduce grunt work, then inspect frames and clean the transcript.\n\n## Manual Commands\n\nProbe:\n\n```bash\nffprobe -hide_banner -v error -show_format -show_streams \u002Fpath\u002Fto\u002Fvideo.mp4\n```\n\nDetect cuts:\n\n```bash\nffmpeg -hide_banner -i \u002Fpath\u002Fto\u002Fvideo.mp4 \\\n  -vf \"select='gt(scene,0.15)',showinfo\" \\\n  -f null -\n```\n\nGenerate contact sheets:\n\n```bash\nffmpeg -hide_banner -y -i \u002Fpath\u002Fto\u002Fvideo.mp4 \\\n  -vf \"fps=2,scale=144:-1,tile=9x6:padding=6:margin=6:color=white\" \\\n  -frames:v 1 -update 1 \u002Ftmp\u002Fvideo-2fps-sheet.jpg\n```\n\nExtract local transcription audio:\n\n```bash\nffmpeg -hide_banner -y -i \u002Fpath\u002Fto\u002Fvideo.mp4 \\\n  -vn -ac 1 -ar 16000 -c:a pcm_s16le \u002Ftmp\u002Fvideo-audio.wav\n```\n\nOCR sampled frames:\n\n```bash\nffmpeg -hide_banner -y -i \u002Fpath\u002Fto\u002Fvideo.mp4 -vf fps=3 \u002Ftmp\u002Fvideo-frames\u002Fframe_%04d.jpg\nfor f in \u002Ftmp\u002Fvideo-frames\u002Fframe_*.jpg; do\n  tesseract \"$f\" stdout --psm 6 2>\u002Fdev\u002Fnull\ndone\n```\n\n## Visual Description Guidance\n\n- Name the shot type when clear: desk medium shot, side profile, extreme close-up, full-body silhouette, cash close-up, title card, transition flash.\n- Capture pose, gaze, camera distance, lighting, background, and important foreground objects.\n- Mention visible text separately from spoken transcript when the video uses title cards.\n- Do not over-describe tiny movements inside a continuous shot unless the user asked for frame-level motion.\n- Keep timestamps precise enough to be useful. Tenths of a second are fine for short social clips.\n\n## Final Check\n\nBefore replying:\n\n- Confirm the segments cover `0:00` through the actual end time.\n- Check that no transcript phrase is assigned to a shot where it is not visible\u002Fheard.\n- Mark uncertain transcript instead of guessing.\n- If audio was not transcribed locally and no external upload was approved, say the transcript came from visible captions or embedded subtitles.\n",{"name":5,"description":7},"main","f270c4ae4f9d09c4e5da9cfa8adab7e89ae1f53e","packaged-skills\u002Foptional\u002Fmedia\u002Fhivemindos\u002Fvideo-shot-transcript",4,"https:\u002F\u002Fgithub.com\u002FLiamVisionary\u002Fhivemindos","https:\u002F\u002Fgithub.com\u002FLiamVisionary","2026-11-10 21:48:41",{"source":8,"skillName":5,"commands":31,"prompt":41,"zipAvailable":42},[32,35,38],{"tool":33,"command":34},"npx","npx skills add LiamVisionary\u002Fhivemindos --skill video-shot-transcript",{"tool":36,"command":37},"bunx","bunx skills add LiamVisionary\u002Fhivemindos --skill video-shot-transcript",{"tool":39,"command":40},"pnpm","pnpm dlx skills add LiamVisionary\u002Fhivemindos --skill video-shot-transcript","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLiamVisionary\u002Fhivemindos\u002Fblob\u002Fmain\u002Fpackaged-skills\u002Foptional\u002Fmedia\u002Fhivemindos\u002Fvideo-shot-transcript\u002FSKILL.md",true,[44,50],{"path":45,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":48,"sourceHtmlUrl":49},".hivemind-skill-source.json","REFERENCE","参考文档",1127,"https:\u002F\u002Fgithub.com\u002FLiamVisionary\u002Fhivemindos\u002Fblob\u002Fmain\u002Fpackaged-skills\u002Foptional\u002Fmedia\u002Fhivemindos\u002Fvideo-shot-transcript\u002F.hivemind-skill-source.json",{"path":51,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":54,"sourceHtmlUrl":55},"scripts\u002Fdissect_video.py","SCRIPT","脚本",10661,"https:\u002F\u002Fgithub.com\u002FLiamVisionary\u002Fhivemindos\u002Fblob\u002Fmain\u002Fpackaged-skills\u002Foptional\u002Fmedia\u002Fhivemindos\u002Fvideo-shot-transcript\u002Fscripts\u002Fdissect_video.py",[57,64,71,78,85,92],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":18},"01M734AA85KQEXDQXQJ3T7769M","tailscale-generation-skill-authoring","This skill should be used when the user asks to \"create a Tailscale generation skill\", \"add a local generation skill\", \"document a generation endpoint\", \"add an image generation provider\", \"add a TTS provider\", \"add video generation\", \"add 3D generation\", or needs guidance on where HivemindOS Tailscale or local generation providers belong in the shared skills shelf.","https:\u002F\u002Fgithub.com\u002FLiamVisionary\u002Fhivemindos\u002Fblob\u002Fmain\u002Fskills\u002Ftailscale-generation-skill-authoring\u002FSKILL.md",[],[],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":18},"01M734A7VD69PRA0C0EV5EFY9T","localtts","This skill should be used when the user asks to \"generate local TTS\", \"use local text to speech\", \"use remote TTS over Tailscale\", \"make speech audio\", \"add a TTS provider\", \"use Qwen3-TTS\", or needs TTS endpoint setup through local or HivemindOS Tailscale routes.","https:\u002F\u002Fgithub.com\u002FLiamVisionary\u002Fhivemindos\u002Fblob\u002Fmain\u002Fskills\u002Flocaltts\u002FSKILL.md",[],[],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":18},"01M734A4K2Z0F74QZP7V7WBFRY","karpathy-guidelines","Behavioral guidelines to reduce common LLM coding mistakes. Use when writing, reviewing, or refactoring code to avoid overcomplication, make surgical changes, surface assumptions, and define verifiable success criteria.","https:\u002F\u002Fgithub.com\u002FLiamVisionary\u002Fhivemindos\u002Fblob\u002Fmain\u002Fskills\u002Fkarpathy-guidelines\u002FSKILL.md",[],[],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":18},"01M734A1HMVYVJX3YJGNQ6KF6C","comfyui-image-generation","This skill should be used when the user asks to \"generate images\", \"generate images with ComfyUI\", \"use local ComfyUI\", \"use remote ComfyUI\", \"use Z-Image\", \"add an image generation provider\", or needs image-generation endpoint setup through local or HivemindOS Tailscale routes.","https:\u002F\u002Fgithub.com\u002FLiamVisionary\u002Fhivemindos\u002Fblob\u002Fmain\u002Fskills\u002Fcomfyui-image-generation\u002FSKILL.md",[],[],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":18},"01M7349Y684Q676DNNHZPSC8W1","wrangler","Cloudflare Workers CLI for deploying, developing, and managing Workers, KV, R2, D1, Vectorize, Hyperdrive, Workers AI, Containers, Queues, Workflows, Pipelines, and Secrets Store. Load before running wrangler commands to ensure correct syntax and best practices. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.","https:\u002F\u002Fgithub.com\u002FLiamVisionary\u002Fhivemindos\u002Fblob\u002Fmain\u002Fskills\u002Fcloudflare\u002Fwrangler\u002FSKILL.md",[],[],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":18},"01M7349V3WCBF835QP74SA9Q8C","workers-best-practices","Reviews and authors Cloudflare Workers code against production best practices. Load when writing new Workers, reviewing Worker code, configuring wrangler.jsonc, or checking for common Workers anti-patterns (streaming, floating promises, global state, secrets, bindings, observability). Biases towards retrieval from Cloudflare docs over pre-trained knowledge.","https:\u002F\u002Fgithub.com\u002FLiamVisionary\u002Fhivemindos\u002Fblob\u002Fmain\u002Fskills\u002Fcloudflare\u002Fworkers-best-practices\u002FSKILL.md",[],[]]