[{"data":1,"prerenderedAt":293},["ShallowReactive",2],{"case-study-wng-harness":3},{"id":4,"title":5,"accent":6,"body":7,"description":254,"extension":265,"liveUrl":266,"meta":267,"metrics":268,"navigation":278,"order":279,"path":280,"role":281,"seo":282,"stem":283,"summary":284,"tech":285,"year":291,"__hash__":292},"caseStudies\u002Fcase-studies\u002Fwng-harness.md","The Content Co-Pilot","mint",{"type":8,"value":9,"toc":253},"minimark",[10,15,32,40,44,51,54,58,61,68,108,111,115,133,143,154,158,161,187,191,202,205,209,243,247,250],[11,12,14],"h2",{"id":13},"the-problem","The problem",[16,17,18,19,23,24,27,28,31],"p",{},"Making video for the modern influencer ecosystem asks you to be good at three hard things at once: ",[20,21,22],"strong",{},"learn"," to produce a polished piece, ",[20,25,26],{},"produce"," it at the pace social algorithms demand, and ",[20,29,30],{},"review"," it well enough to actually get better. Doing all three as a hobby while holding down a full-time job is where most people quit.",[16,33,34,35,39],{},"I know because I quit once already. I tried this in 2022, and every step was its own failure point: research the idea, find an angle, outline, film, cut the narrative, record the voiceover, master the audio, add captions and transcription. I outsourced the editing and wrote the rest myself, and I still burned out fast. Short-form doesn't make that easier; it makes it worse. Same six or seven steps, now compressed into a thirty-second piece you're expected to ship ",[36,37,38],"em",{},"every week",". Consistency is the whole game, and consistency is the problem for a new creator balancing a full-time job.",[11,41,43],{"id":42},"why-i-built-it","Why I built it",[16,45,46,47,50],{},"Creativity is in my blood; I like making things and advocating for things I care about. When I picked this back up in the spring of 2026, it was to be part of the environmental and naturalist community, not to build software. But the thing that broke me in 2022 was never the ",[36,48,49],{},"creative"," work. It was the mechanical work stacked on top of it: the editing, the mastering, the captioning, the per-platform packaging.",[16,52,53],{},"Every one of those failure points was a step AI could take off my plate. So the hobby became a harness, one that killed the outsourcing problem and the burnout problem at once. It handed me back the part I actually started this for.",[11,55,57],{"id":56},"how-it-works","How it works",[59,60],"wng-diagram",{},[16,62,63,64,67],{},"The harness is an orchestrator wrapped around a set of specialized Claude ",[36,65,66],{},"skills",", one per phase. Each skill has a tight contract: it consumes the previous phase's output and produces the next phase's input. Eight phases take a raw idea to a packaged, ready-to-post reel.",[69,70,71,78,84,90,96,102],"ul",{},[72,73,74,77],"li",{},[20,75,76],{},"1 | Research & angle."," Two entry paths. Footage-first: I start with a clip and research what angle it can carry. Idea-first: I start with an angle and source copyright-free clips or pull from my own media library to build the narrative.",[72,79,80,83],{},[20,81,82],{},"2 | Identify & fact-check."," I classify the organism I'm highlighting, cross-reference the research, and validate every claim the model makes. A byproduct is a private catalog of identified plants, insects, and animals that I can contribute back to iNaturalist and community science.",[72,85,86,89],{},[20,87,88],{},"3 | Script & shotlist."," The script gets written with real attention to narrative structure, and I map which clip runs under which line of voiceover.",[72,91,92,95],{},[20,93,94],{},"4 & 5 | Silent cut and voiceover, in parallel."," Once the script is verified, Claude assembles the silent version of the video while I record the voiceover.",[72,97,98,101],{},[20,99,100],{},"6 & 7 | Captions and master, in parallel."," Once the voice and video are verified, one agent transcribes the voiceover into timed captions while another syncs, masters, and cuts the video against it.",[72,103,104,107],{},[20,105,106],{},"8 | Review & package."," I verify the final output and give notes; then the pipeline produces a posting package with SEO-optimized titles, descriptions, and captions tuned per platform for Instagram, YouTube, and TikTok.",[16,109,110],{},"After a video posts, I pull the analytics from each platform and use Claude to find the trends that separate the videos that worked from the ones that didn't, which feeds straight back into phase one.",[11,112,114],{"id":113},"the-architecture","The architecture",[16,116,117,120,121,124,125,128,129,132],{},[20,118,119],{},"A validator, not a monolith."," The orchestrator is a Python harness that validates the outputs of each Claude skill and enforces the order they run in. The orchestrator decides ",[36,122,123],{},"what"," runs next and ",[36,126,127],{},"whether the result is valid","; each skill decides ",[36,130,131],{},"how"," to do its one job. That split is the whole trick: it keeps a fleet of AI steps from turning into chaos.",[16,134,135,138,139,142],{},[20,136,137],{},"Contracts are what hold it together."," Each skill's input ",[36,140,141],{},"is"," the previous skill's verified output. The video skill requires the verified script as a markdown file. The audio mastering skill requires the raw voiceover audio I dropped in. No valid input, no run. That rule turned out to matter more than I expected (see below).",[16,144,145,148,149,153],{},[20,146,147],{},"State you can see."," Every piece has a phase. A ",[150,151,152],"code",{},"wfg status"," CLI reads the state of every in-flight video, and a web dashboard (with its own design system, wrapped in an Electron app) turns \"how's the channel doing?\" into a glance instead of a memory exercise. The pipeline isn't trapped in a terminal; it meets the work where it lives.",[11,155,157],{"id":156},"where-i-sit-in-the-loop","Where I sit in the loop",[16,159,160],{},"The point was never to have AI do everything. I stay at three gates and one manual step, and I'd defend every one of them:",[69,162,163,169,175,181],{},[72,164,165,168],{},[20,166,167],{},"Research."," I verify every species and plant ID against iNaturalist and university extension sites, and I fact-check any claim the model generates. In a naturalist community, getting an ID wrong isn't a typo -- it's a credibility hit.",[72,170,171,174],{},[20,172,173],{},"The parallel gate."," Nothing starts editing until I manually confirm the outline and script are right. That's the handoff from my judgment to the machine's execution, and I own it.",[72,176,177,180],{},[20,178,179],{},"Final review."," Before anything is packaged, I verify the cut and give notes. This is where taste lives.",[72,182,183,186],{},[20,184,185],{},"Analytics (still manual)."," I pull the per-platform data by hand. I haven't found a clean automated path for it yet, and I'd rather admit that than pretend the loop is fully closed.",[11,188,190],{"id":189},"the-skills-that-lied","The skills that lied",[16,192,193,194,197,198,201],{},"The biggest mistake I made early was trusting the pipeline without verifying it. One week I shipped two shorts that ",[36,195,196],{},"looked"," pipeline-made. In reality, Claude had only ",[36,199,200],{},"referenced"," the skills: it never honored the contracts between them, so the skills never actually ran. The output was plausible enough that I almost didn't catch it.",[16,203,204],{},"That's what forced v2: a stricter harness that validates the pipeline's steps were genuinely adhered to, not just name-dropped. A system that assumed good faith produced confident, believable, fake work, and the fix was to stop trusting and start checking.",[11,206,208],{"id":207},"what-shipped","What shipped",[69,210,211,217,223,237],{},[72,212,213,216],{},[20,214,215],{},"3-second skip rate: 93% → under 50%."," At the start, 93% of viewers left inside three seconds. Offloading the mechanical work let me put my energy into retention instead of editing tutorials, and retention is what moved.",[72,218,219,222],{},[20,220,221],{},"14 videos, at least one a week, across three platforms."," The consistency that broke me in 2022, now sustained alongside a full-time job.",[72,224,225,228,229,232,233,236],{},[20,226,227],{},"From 0 to ~150 subscribers across three channels",", average views up from ~100 to a peak of ",[20,230,231],{},"11k"," on a single video, a number I'd penciled in as a ",[36,234,235],{},"May 2027"," goal and hit in 2026.",[72,238,239,242],{},[20,240,241],{},"A growing catalog of identified species"," and a contribution back to iNaturalist: the pipeline produces real ecological value, not just views.",[11,244,246],{"id":245},"what-i-learned","What I learned",[16,248,249],{},"The point of AI workflows isn't to have AI do everything for you. It's finding the right balance between offloading the mechanical development and keeping the strategic, creative human touch. That's what makes something feel human instead of AI slop, and at the end of the day the consumer can tell the difference.",[16,251,252],{},"Get that line right and one person with a day job becomes a content operation without burning out. Get it wrong, like v1 did, and you get a haunted house that fakes its own output while you're not looking.",{"title":254,"searchDepth":255,"depth":255,"links":256},"",2,[257,258,259,260,261,262,263,264],{"id":13,"depth":255,"text":14},{"id":42,"depth":255,"text":43},{"id":56,"depth":255,"text":57},{"id":113,"depth":255,"text":114},{"id":156,"depth":255,"text":157},{"id":189,"depth":255,"text":190},{"id":207,"depth":255,"text":208},{"id":245,"depth":255,"text":246},"md",null,{},[269,272,275],{"label":270,"value":271},"3-second skip rate","93% → \u003C50%",{"label":273,"value":274},"Videos shipped","14",{"label":276,"value":277},"Pipeline phases","8",true,1,"\u002Fcase-studies\u002Fwng-harness","Solo, design, engineering, orchestration",{"title":5,"description":254},"case-studies\u002Fwng-harness","A personal AI assistant that runs the mechanical 90% of content production for my Wild & Native Gardens channel, an eight-phase pipeline from raw idea to ready-to-post reel, so my energy goes to the creative work that keeps it from feeling like AI slop.",[286,287,288,289,290],"Python","Claude","Electron","Web dashboard","Social analytics","2026","ip-bmVHgUypkmNHijG0Oh7dVTlP-fmRziUZ31wsF5n4",1792537541224]