Induct Media
Create research-complete artifacts from media-curator acquisitions: a media REF,
citation sidecar, radar sidecar, index/search metadata notes, and optional
profile backlinks. This is the media-curator to research handoff for videos,
lectures, podcasts, talks, and interviews.
Triggers
- "induct media research source"
- "video audio research induction"
- "media research handoff"
- "timestamp citation transcript"
- "media REF template"
- "turn acquired media into research corpus REF"
Inputs
Required:
- Acquired media metadata or local media path from media-curator.
- Transcript sidecar path from
transcribe-media.
- Source URL.
Optional:
--ref-id REF-XXX to use an assigned identifier.
--storage copied|lfs|object-storage|hash-only to choose archive policy.
- Title, platform, duration, publication/upload date, speakers, channel/venue,
license, acquisition ID, media hash, transcript hash.
- Existing citation mentions extracted from the transcript.
Storage Policies
Choose one policy and record it in the REF frontmatter:
| Policy |
Use when |
Required record |
copied |
File is small enough for normal corpus storage |
media/video/ or media/audio/ path and SHA-256 |
lfs |
Git LFS is enabled for large binaries |
LFS path, pointer committed, SHA-256 |
object-storage |
S3/WebDAV/object backend stores binaries |
Object URI, backend name, SHA-256 |
hash-only |
Corpus cannot store or redistribute the media |
Source URL, media SHA-256 when locally available, acquisition note |
Never copy media when license or platform terms do not allow redistribution.
Hash-only records are valid when source integrity and transcript provenance are
enough for corpus analysis.
Output Artifacts
Write or update:
.aiwg/research/findings/REF-XXX.md from templates/reference-media.md
.aiwg/research/citations/REF-XXX-citations.md from templates/citation-sidecar.md
.aiwg/research/radar/REF-XXX-radar.md from templates/radar-sidecar.md
.aiwg/research/index.md or the configured index/search metadata
- Speaker/channel/venue profile backlinks when profiles already exist
Recommended media layout:
media/video/REF-XXX-speaker-year-short-title.mp4
media/audio/REF-XXX-speaker-year-short-title.mp3
media/transcripts/REF-XXX-speaker-year-short-title.transcript.json
Execution Flow
- Read acquisition metadata and transcript sidecar.
- Verify the transcript sidecar has
schema: aiwg.media.transcript.v1,
segments[], source.sha256, and transcript.sha256.
- Resolve or assign
REF-XXX.
- Determine source type (
video, audio, podcast, lecture, interview,
or talk) and select reference-media.md.
- Apply the selected storage policy. Compute missing SHA-256 values when the
local file is readable.
- Generate the media REF with source URL, platform, duration, upload date,
speakers, channel/venue, transcript path/hash, media storage, and license.
- Generate citation sidecar:
- normal paper-style outgoing/incoming tables when formal references exist
- spoken-reference table for timestamped verbal mentions and unresolved
informal references
- Generate radar sidecar with media-specific GRADE rationale.
- Update index/search metadata so
research-query can find the REF by title,
speakers, source URL, channel/venue, source type, and transcript text when
available.
- Report verification limits and required human review before publication
quotes are used.
Citation Rules
Timestamp citations use:
@.aiwg/research/findings/REF-XXX.md @ HH:MM:SS - "exact transcript quote"
The timestamp MUST exist in the transcript sidecar, and the quote MUST exactly
match the transcript text. Keep spoken references distinct from formal paper
citations; unresolved verbal mentions remain valid sidecar rows with
Inducted REF set to -.
Worked Fixture
Minimal media-curator output:
{
"schema": "aiwg.media.acquisition.v1",
"title": "Example Lecture",
"source_url": "https://example.invalid/watch?v=lecture",
"platform": "YouTube",
"media_path": ".aiwg/media/acquisitions/example-lecture.mp4",
"sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"duration": "00:42:00",
"speakers": [{"name": "Doe, Jane"}],
"license": "platform ToS only"
}
Transcript from transcribe-media:
{
"schema": "aiwg.media.transcript.v1",
"source": {
"path": ".aiwg/media/acquisitions/example-lecture.mp4",
"url": "https://example.invalid/watch?v=lecture",
"sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
},
"transcript": {
"sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"language": "en",
"tool": "human",
"quality": {"limitations": []}
},
"segments": [
{"id": "seg-000001", "start": "00:00:05", "end": "00:00:12", "speaker": "SPEAKER_00", "text": "Exact words from the lecture."}
]
}
Expected research outputs:
REF-XXX.md records source URL, platform, duration, speaker, transcript hash,
media hash, license posture, and key timestamps.
REF-XXX-citations.md includes any formal references plus timestamped spoken
mentions.
REF-XXX-radar.md records media GRADE and refresh cadence.
- Index/search metadata includes source type, speaker, channel/venue, source
URL, transcript path, and storage policy.
A complete, runnable worked example — sample.acquisition.json (from
media-curator /acquire) and sample.transcript.json (from /transcribe-media)
plus the three expected output artifacts — lives in examples/. See
examples/README.md. The acquisition fixture is byte-identical to
media-curator's acquire/examples/sample.acquisition.json, so the input contract
is exercised end to end.
References
- @$AIWG_ROOT/agentic/code/frameworks/media-curator/skills/transcribe-media/SKILL.md
- @$AIWG_ROOT/agentic/code/frameworks/research-complete/templates/reference-media.md
- @$AIWG_ROOT/agentic/code/frameworks/research-complete/templates/citation-sidecar.md
- @$AIWG_ROOT/agentic/code/frameworks/research-complete/templates/radar-sidecar.md
1---2namespace: aiwg3platforms: [all]4name: induct-media5description: Induct acquired audio/video, transcript sidecars, and source metadata from media-curator into research-complete REF artifacts with timestamp citations and storage policy records6userInvocable: true7triggers:8 - "induct media research source"9 - "video audio research induction"10 - "media research handoff"11 - "timestamp citation transcript"12 - "media REF template"13 - "turn acquired media into research corpus REF"14commandHint:15 argumentHint: "<media-metadata.json|media-path> --transcript <path> --source-url <url> [--storage copied|lfs|object-storage|hash-only] [--ref-id REF-XXX] [--dry-run]"16 allowedTools: Read, Write, Glob, Grep, Bash17 model: sonnet18 category: research19 modelRole: coding20 modelTier: standard21---2223# Induct Media2425Create research-complete artifacts from media-curator acquisitions: a media REF,26citation sidecar, radar sidecar, index/search metadata notes, and optional27profile backlinks. This is the media-curator to research handoff for videos,28lectures, podcasts, talks, and interviews.2930## Triggers3132- "induct media research source"33- "video audio research induction"34- "media research handoff"35- "timestamp citation transcript"36- "media REF template"37- "turn acquired media into research corpus REF"3839## Inputs4041Required:42- Acquired media metadata or local media path from media-curator.43- Transcript sidecar path from `transcribe-media`.44- Source URL.4546Optional:47- `--ref-id REF-XXX` to use an assigned identifier.48- `--storage copied|lfs|object-storage|hash-only` to choose archive policy.49- Title, platform, duration, publication/upload date, speakers, channel/venue,50 license, acquisition ID, media hash, transcript hash.51- Existing citation mentions extracted from the transcript.5253## Storage Policies5455Choose one policy and record it in the REF frontmatter:5657| Policy | Use when | Required record |58|---|---|---|59| `copied` | File is small enough for normal corpus storage | `media/video/` or `media/audio/` path and SHA-256 |60| `lfs` | Git LFS is enabled for large binaries | LFS path, pointer committed, SHA-256 |61| `object-storage` | S3/WebDAV/object backend stores binaries | Object URI, backend name, SHA-256 |62| `hash-only` | Corpus cannot store or redistribute the media | Source URL, media SHA-256 when locally available, acquisition note |6364Never copy media when license or platform terms do not allow redistribution.65Hash-only records are valid when source integrity and transcript provenance are66enough for corpus analysis.6768## Output Artifacts6970Write or update:71- `.aiwg/research/findings/REF-XXX.md` from `templates/reference-media.md`72- `.aiwg/research/citations/REF-XXX-citations.md` from `templates/citation-sidecar.md`73- `.aiwg/research/radar/REF-XXX-radar.md` from `templates/radar-sidecar.md`74- `.aiwg/research/index.md` or the configured index/search metadata75- Speaker/channel/venue profile backlinks when profiles already exist7677Recommended media layout:78- `media/video/REF-XXX-speaker-year-short-title.mp4`79- `media/audio/REF-XXX-speaker-year-short-title.mp3`80- `media/transcripts/REF-XXX-speaker-year-short-title.transcript.json`8182## Execution Flow83841. Read acquisition metadata and transcript sidecar.852. Verify the transcript sidecar has `schema: aiwg.media.transcript.v1`,86 `segments[]`, `source.sha256`, and `transcript.sha256`.873. Resolve or assign `REF-XXX`.884. Determine source type (`video`, `audio`, `podcast`, `lecture`, `interview`,89 or `talk`) and select `reference-media.md`.905. Apply the selected storage policy. Compute missing SHA-256 values when the91 local file is readable.926. Generate the media REF with source URL, platform, duration, upload date,93 speakers, channel/venue, transcript path/hash, media storage, and license.947. Generate citation sidecar:95 - normal paper-style outgoing/incoming tables when formal references exist96 - spoken-reference table for timestamped verbal mentions and unresolved97 informal references988. Generate radar sidecar with media-specific GRADE rationale.999. Update index/search metadata so `research-query` can find the REF by title,100 speakers, source URL, channel/venue, source type, and transcript text when101 available.10210. Report verification limits and required human review before publication103 quotes are used.104105## Citation Rules106107Timestamp citations use:108109```text110@.aiwg/research/findings/REF-XXX.md @ HH:MM:SS - "exact transcript quote"111```112113The timestamp MUST exist in the transcript sidecar, and the quote MUST exactly114match the transcript text. Keep spoken references distinct from formal paper115citations; unresolved verbal mentions remain valid sidecar rows with116`Inducted REF` set to `-`.117118## Worked Fixture119120Minimal media-curator output:121122```json123{124 "schema": "aiwg.media.acquisition.v1",125 "title": "Example Lecture",126 "source_url": "https://example.invalid/watch?v=lecture",127 "platform": "YouTube",128 "media_path": ".aiwg/media/acquisitions/example-lecture.mp4",129 "sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",130 "duration": "00:42:00",131 "speakers": [{"name": "Doe, Jane"}],132 "license": "platform ToS only"133}134```135136Transcript from `transcribe-media`:137138```json139{140 "schema": "aiwg.media.transcript.v1",141 "source": {142 "path": ".aiwg/media/acquisitions/example-lecture.mp4",143 "url": "https://example.invalid/watch?v=lecture",144 "sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"145 },146 "transcript": {147 "sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",148 "language": "en",149 "tool": "human",150 "quality": {"limitations": []}151 },152 "segments": [153 {"id": "seg-000001", "start": "00:00:05", "end": "00:00:12", "speaker": "SPEAKER_00", "text": "Exact words from the lecture."}154 ]155}156```157158Expected research outputs:159- `REF-XXX.md` records source URL, platform, duration, speaker, transcript hash,160 media hash, license posture, and key timestamps.161- `REF-XXX-citations.md` includes any formal references plus timestamped spoken162 mentions.163- `REF-XXX-radar.md` records media GRADE and refresh cadence.164- Index/search metadata includes source type, speaker, channel/venue, source165 URL, transcript path, and storage policy.166167A complete, runnable worked example — `sample.acquisition.json` (from168media-curator `/acquire`) and `sample.transcript.json` (from `/transcribe-media`)169plus the three expected output artifacts — lives in `examples/`. See170`examples/README.md`. The acquisition fixture is byte-identical to171media-curator's `acquire/examples/sample.acquisition.json`, so the input contract172is exercised end to end.173174## References175176- @$AIWG_ROOT/agentic/code/frameworks/media-curator/skills/transcribe-media/SKILL.md177- @$AIWG_ROOT/agentic/code/frameworks/research-complete/templates/reference-media.md178- @$AIWG_ROOT/agentic/code/frameworks/research-complete/templates/citation-sidecar.md179- @$AIWG_ROOT/agentic/code/frameworks/research-complete/templates/radar-sidecar.md