[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71GSK6PE0RDVRNJSBXWK02X":3,"skill-same:01M71GSK6PE0RDVRNJSBXWK02X":94},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":74,"commitSha":75,"skillDirectory":76,"forksCount":14,"repositoryHtmlUrl":77,"repositoryHomepageUrl":6,"ownerHtmlUrl":78,"ownerBlogUrl":6,"ownerDescription":79,"updatedAt":80,"install":81,"resources":93},"01M71GSK6PE0RDVRNJSBXWK02X","media-ingest",null,"Ingest video, audio, PDF, book, screenshot, and GitHub repo content into the brain.\nMulti-format handling with entity extraction and backlink propagation. Covers\nvideo-ingest, youtube-ingest, and book-ingest subtypes.","weareturnone\u002Fgbrain","weareturnone","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F106660686?v=4","01M71GRFW4YZ9DFYK6J17YXQNB","Roelof Stoelwinder ","01M71GRFWVQF5ASVB08TP5VKWG",0,"MIT","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Fmedia-ingest\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"ingest","media ingest","Media","multi","with","check","upload","file","github repo","query","people","true","search","repo","page","get","Audio","PDF","sources","Video","2026-11-10 10:12:30",false,"---\nname: media-ingest\nversion: 1.0.0\ndescription: |\n  Ingest video, audio, PDF, book, screenshot, and GitHub repo content into the brain.\n  Multi-format handling with entity extraction and backlink propagation. Covers\n  video-ingest, youtube-ingest, and book-ingest subtypes.\ntriggers:\n  - \"watch this video\"\n  - \"process this YouTube link\"\n  - \"ingest this PDF\"\n  - \"save this podcast\"\n  - \"process this book\"\n  - \"what's in this screenshot\"\n  - \"check out this repo\"\ntools:\n  - search\n  - query\n  - get_page\n  - put_page\n  - add_link\n  - add_timeline_entry\n  - file_upload\nmutating: true\nwrites_pages: true\nwrites_to:\n  - concepts\u002F\n  - people\u002F\n  - companies\u002F\n  - sources\u002F\n---\n\n# Media Ingest Skill\n\nIngest video, audio, PDF, book, screenshot, and GitHub repo content into the brain.\n\n> **Filing rule:** Read `skills\u002F_brain-filing-rules.md` before creating any new page.\n\n## Contract\n\nThis skill guarantees:\n- Every ingested media item has a brain page with analysis (not just a transcript dump)\n- Transcripts (video\u002Faudio) saved in raw and human-readable formats\n- Entity extraction: every person and company mentioned gets back-linked\n- Raw source files preserved via `gbrain files upload-raw`\n- Filing by primary subject, not by media format\n\n> **Convention:** See `skills\u002Fconventions\u002Fquality.md` for Iron Law back-linking.\n\nEvery mention of a person or company with a brain page MUST create a back-link.\n\n## Phases\n\n### Phase 1: Identify format and fetch\n\n| Format | Action |\n|--------|--------|\n| YouTube\u002Fvideo URL | Fetch transcript (Whisper, transcription service, or captions) |\n| Audio file | Transcribe with available STT service |\n| PDF | Extract text (OCR if needed) |\n| Book PDF | Extract text, identify chapters\u002Fsections |\n| Screenshot\u002Fimage | OCR via vision model, extract text and entities |\n| GitHub repo | Clone, read README + key files, summarize architecture |\n\n### Phase 2: Upload raw source\n\nSave the original file for provenance: `gbrain files upload-raw \u003Cfile> --page \u003Cslug>`\n\n### Phase 3: Create brain page\n\nFile by primary subject (not format). Use this template:\n\n```markdown\n# {Title}\n\n**Source:** {URL or file path}\n**Format:** {video\u002Faudio\u002FPDF\u002Fbook\u002Fscreenshot\u002Frepo}\n**Created:** {date}\n\n## Summary\n{Key points, not a transcript dump}\n\n## Key Segments \u002F Highlights\n{For video\u002Faudio: timestamped highlights. For books: chapter summaries.}\n\n## People Mentioned\n{List with links to brain pages}\n\n## Companies Mentioned\n{List with links to brain pages}\n```\n\n### Phase 4: Entity extraction and propagation\n\nFor every person and company mentioned:\n1. Check brain for existing page\n2. Create\u002Fenrich if needed (delegate to enrich skill)\n3. Add back-link from entity page to this media page\n4. Add timeline entry on entity page\n\nA media item is NOT fully ingested until entity propagation is complete.\n\n### Phase 5: Sync\n\n`gbrain sync` to update the index.\n\n## Output Format\n\nBrain page created with summary, highlights, and entity cross-links. Report to user:\n\"Ingested {title}: {N} entities detected, {N} pages updated.\"\n\n## Anti-Patterns\n\n- Dumping raw transcripts without analysis\n- Skipping entity extraction (\"I'll do that separately\")\n- Filing by format (all videos in `media\u002Fvideos\u002F`) instead of by subject\n- Not preserving raw source files\n- Creating stub pages without meaningful content\n","# Media Ingest Skill\n\nIngest video, audio, PDF, book, screenshot, and GitHub repo content into the brain.\n\n> **Filing rule:** Read `skills\u002F_brain-filing-rules.md` before creating any new page.\n\n## Contract\n\nThis skill guarantees:\n- Every ingested media item has a brain page with analysis (not just a transcript dump)\n- Transcripts (video\u002Faudio) saved in raw and human-readable formats\n- Entity extraction: every person and company mentioned gets back-linked\n- Raw source files preserved via `gbrain files upload-raw`\n- Filing by primary subject, not by media format\n\n> **Convention:** See `skills\u002Fconventions\u002Fquality.md` for Iron Law back-linking.\n\nEvery mention of a person or company with a brain page MUST create a back-link.\n\n## Phases\n\n### Phase 1: Identify format and fetch\n\n| Format | Action |\n|--------|--------|\n| YouTube\u002Fvideo URL | Fetch transcript (Whisper, transcription service, or captions) |\n| Audio file | Transcribe with available STT service |\n| PDF | Extract text (OCR if needed) |\n| Book PDF | Extract text, identify chapters\u002Fsections |\n| Screenshot\u002Fimage | OCR via vision model, extract text and entities |\n| GitHub repo | Clone, read README + key files, summarize architecture |\n\n### Phase 2: Upload raw source\n\nSave the original file for provenance: `gbrain files upload-raw \u003Cfile> --page \u003Cslug>`\n\n### Phase 3: Create brain page\n\nFile by primary subject (not format). Use this template:\n\n```markdown\n# {Title}\n\n**Source:** {URL or file path}\n**Format:** {video\u002Faudio\u002FPDF\u002Fbook\u002Fscreenshot\u002Frepo}\n**Created:** {date}\n\n## Summary\n{Key points, not a transcript dump}\n\n## Key Segments \u002F Highlights\n{For video\u002Faudio: timestamped highlights. For books: chapter summaries.}\n\n## People Mentioned\n{List with links to brain pages}\n\n## Companies Mentioned\n{List with links to brain pages}\n```\n\n### Phase 4: Entity extraction and propagation\n\nFor every person and company mentioned:\n1. Check brain for existing page\n2. Create\u002Fenrich if needed (delegate to enrich skill)\n3. Add back-link from entity page to this media page\n4. Add timeline entry on entity page\n\nA media item is NOT fully ingested until entity propagation is complete.\n\n### Phase 5: Sync\n\n`gbrain sync` to update the index.\n\n## Output Format\n\nBrain page created with summary, highlights, and entity cross-links. Report to user:\n\"Ingested {title}: {N} entities detected, {N} pages updated.\"\n\n## Anti-Patterns\n\n- Dumping raw transcripts without analysis\n- Skipping entity extraction (\"I'll do that separately\")\n- Filing by format (all videos in `media\u002Fvideos\u002F`) instead of by subject\n- Not preserving raw source files\n- Creating stub pages without meaningful content\n",{"name":5,"tools":52,"version":58,"mutating":59,"triggers":60,"writes_to":68,"description":73,"writes_pages":59},[39,36,53,54,55,56,57],"get_page","put_page","add_link","add_timeline_entry","file_upload","1.0.0",true,[61,62,63,64,65,66,67],"watch this video","process this YouTube link","ingest this PDF","save this podcast","process this book","what's in this screenshot","check out this repo",[69,70,71,72],"concepts\u002F","people\u002F","companies\u002F","sources\u002F","Ingest video, audio, PDF, book, screenshot, and GitHub repo content into the brain.\nMulti-format handling with entity extraction and backlink propagation. Covers\nvideo-ingest, youtube-ingest, and book-ingest subtypes.\n","master","1fd9e273fe234ffb8d2a7705955f087f861a5c3d","skills\u002Fmedia-ingest","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain","https:\u002F\u002Fgithub.com\u002Fweareturnone","I have a passion for operations, systems and doing good for the world.","2026-07-08 23:38:19",{"source":8,"skillName":5,"commands":82,"prompt":92,"zipAvailable":59},[83,86,89],{"tool":84,"command":85},"npx","npx skills add weareturnone\u002Fgbrain --skill media-ingest",{"tool":87,"command":88},"bunx","bunx skills add weareturnone\u002Fgbrain --skill media-ingest",{"tool":90,"command":91},"pnpm","pnpm dlx skills add weareturnone\u002Fgbrain --skill media-ingest","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Fmedia-ingest\u002FSKILL.md",[],[95,112,125,140,154,175],{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":47},"01M71GTZ2PH49PD2R6RR7MHJZP","signal-detector","Always-on ambient signal capture for the OpenClaw reference fixture.","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fopenclaw-reference-minimal\u002Fskills\u002Fsignal-detector\u002FSKILL.md",[],[102,103,104,105,106,107,108,109,110,111],"signal","signal detector","detector","for","openclaw","capture","reference","message","fixture","ambient",{"skillNo":113,"name":36,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":47},"01M71GTY1250DC73PGRWDE82KW","Look up brain pages in the OpenClaw reference fixture.","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fopenclaw-reference-minimal\u002Fskills\u002Fquery\u002FSKILL.md",[],[36,118,108,119,106,120,121,122,123,39,124,105,110],"do","lookup","look","pages","up","brain","about",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":47},"01M71GTX0T1T9224P29SD7CSG7","context-now","ALWAYS-ON time-sensitivity discipline for the OpenClaw reference fixture.","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fopenclaw-reference-minimal\u002Fskills\u002Fcontext-now\u002FSKILL.md",[],[132,133,134,135,136,106,105,137,108,110,138,139],"context","context now","now","time","how","discipline","sensitivity","long",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":146,"publishedAt":47},"01M71GTVZJTSWXBM4ZRF4A7QVA","brain-ops","Core read\u002Fwrite cycle for the OpenClaw reference fixture.","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fopenclaw-reference-minimal\u002Fskills\u002Fbrain-ops\u002FSKILL.md",[],[147,123,148,149,119,106,37,108,38,105,150,151,152,110,153],"brain ops","ops","Citation","read","cycle","core","write",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":47},"01M71GTT4F64V9RMNZ0WRTKWNG","webhook-transforms","Generic framework for converting external events (SMS, meetings, social mentions)\ninto brain-ingestible signals. Define a transform function, register a webhook URL,\nand incoming events get processed through the brain pipeline.","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Fwebhook-transforms\u002FSKILL.md",[],[161,162,163,164,165,122,166,167,168,169,38,170,39,171,172,41,105,173,174,42],"webhook","transforms","webhook transforms","SET","register","meetings","signals","URL","define","social","event","pipeline","sms","generic",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":192,"publishedAt":47},"01M71GTRDKSM500PRZEXFNQHF9","testing","Skill validation framework. Validates every skill has SKILL.md with frontmatter,\nevery reference exists, every env var is declared. The testing contract for the\nskill system itself.","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Ftesting\u002FSKILL.md",[181,184,187],{"categoryNo":182,"categoryName":183,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":185,"categoryName":186,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":188,"categoryName":189,"taxonomyType":190,"taxonomyTypeDesc":191},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[177,193,194,195,196,197,31,198,32,199,200,201,202,203,121,204,39,205,206,105],"test skills","validation","run","health check","test","health","env","skill validation","false","contract","tests","skill health","system","validate skills"]