Information gain
Skill seldonframe/seldonframe/.claude/skills/information-gain
Open-source AI front office for local service businesses: AI receptionist (voice/SMS/chat) + website + CRM + booking. Self-hostable or $29/mo flat. The open-source GoHighLevel alternative.
npx -y skills add seldonframe/seldonframe --skill information-gainAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 16 stars16 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
The non-commodity sourcing step for any SEO/content loop — find niche YouTube videos, pull their transcripts, and mine ORIGINAL founder stories / real numbers / failures into cited source briefs that exist nowhere else in writing. Google's helpful-content system ranks information gain; this is how a loop produces it instead of commodity AI text. Invoke as a sub-step from x-post-engine, content-loop, or youtube-engine (or standalone with a topic).
SKILL.md
7.0 KB, as published. Nobody here has run it
information-gain — mine original source material, never commodity
Why this exists
Google is burying commodity content: AI articles that restate what every other page already says. What ranks now is information gain — facts, numbers, and stories that exist nowhere else in writing. The cheapest large supply of that raw material is spoken: founder interviews, podcasts, and case-study videos on YouTube where someone says "we hit $75K/month" or "here's the exact mistake that cost us 6 months" — and no one has ever written it down.
This skill turns that spoken material into cited source briefs a content loop writes from. The article becomes an original source (Google sees novel information), not the 400th rewrite of a listicle.
This is a SOURCING step, not a publishing step. It returns briefs; the calling loop (x-post-engine / content-loop / youtube-engine) writes and publishes. Drafts only — Max makes the angle call.
The one hard rule (never-lies)
Everything here is worthless the moment it fabricates. So:
- Never invent a transcript, a quote, a number, or a story. If the transcript can't be fetched, you have NO brief for that video — say so, move on.
- Every brief cites its source video (title + channel + URL + the approximate spoken timestamp when you can). The published article must embed or link the original video — this is both the honesty contract and why it ranks (Google sees the primary source).
- Only claim what was actually said. "$75K/month" goes in a brief only if the speaker said it. Paraphrase faithfully; quote sparingly and exactly.
- A brief with a number you can't point to a transcript line for is a defect, not a draft. Drop it.
Inputs
- A topic / keyword cluster (from the calling loop — e.g. "SaaS mastermind", "AI receptionist for clinics", "speed to lead").
- The curated channel list in
docs/strategy/youtube-sources.md— read it and prefer the channels under the matching cluster (recurring founder-interview channels are goldmines, far better yield than open search). Max feeds new channels there; that file is the "prime the pump" input. - Any pre-saved transcripts in
docs/strategy/youtube-transcripts/— a human-dropped transcript (from the manual notegpt.io route) that you use as-is. Check this folder FIRST; it's the reliable path when the API is blocked.
The loop (per topic)
1. Find candidate videos
Search YouTube for the topic + intent terms ("interview", "how I built", "$ /month", "case study", "what I'd do differently"). Prefer:
- founder interviews / solo build-in-public retrospectives (dense with real numbers + failures),
- videos with specific figures in the title or first minute,
- recent (fresher information gain) but evergreen stories are fine.
Collect 3–6 URLs per topic. Use WebSearch (site:youtube.com) or a known
channel list. Record { title, channel, url } for each.
2. Pull the transcript
FIRST check docs/strategy/youtube-transcripts/ — if a human already dropped a
transcript for this video (from the manual notegpt.io route), use it as-is; the
first line holds the source URL. Otherwise run the helper (fail-soft, honest):
node scripts/youtube-transcript.mjs "<url>" --json
- Exit 0 + JSON → you have
{ videoId, url, chars, transcript }. Use it. - Exit 1 (
[no-transcript]) → captions are blocked/disabled for that video. Either skip it, or take the manual route the script prints: paste the URL into https://notegpt.io/youtube-transcript-generator, copy the transcript, and save it next to the working file. Do NOT proceed without a real transcript.
(The helper reuses the same programmatic caption source as the Soul-wiki ingester and adds honest failure signaling — a service error body is treated as no transcript, never as content.)
3. Mine the non-commodity material
Read the transcript and extract ONLY what's original and load-bearing:
- Real numbers — revenue, MRR, conversion %, headcount, timelines, ad spend, prices. The exact figure, in the speaker's framing.
- Founder stories — the specific decision, the pivot, the origin moment.
- Failures — what broke, what it cost, what they'd do differently. (Failure stories are the rarest-in-writing and the highest information gain.)
- Contrarian specifics — a tactic that contradicts the generic advice.
Skip anything generic ("focus on your customer") — that's commodity; it adds no gain. If a video yields nothing specific, it yields no brief. That's fine.
4. Emit source briefs
Return, per usable video, a brief in this shape (the calling loop consumes it):
### Source brief — <video title> (<channel>)
- URL: <youtube url> (cite this in the article; embed the video)
- Extracted facts (each traceable to the transcript):
- <real number / story / failure, faithfully paraphrased> [~mm:ss if known]
- ...
- Best exact quote (≤ 25 words, verbatim): "<quote>" — <speaker>
- Angle: <one line — how this becomes a non-commodity section/article>
If zero videos yielded briefs for a topic, return NO BRIEFS — <topic>: no transcript-backed original material found so the loop doesn't invent filler.
How the calling loops use this
- x-post-engine (long-form X articles): run this between Inputs and Produce.
Weave 1–2 briefs into the article as an original "here's what a founder
actually did" section; embed the video; the receipts are the transcript facts,
not
[FILL]placeholders. - content-loop (guides): run after keyword research. Each brief becomes a
GuideSource({ label, url }with the video URL) plus an original passage. This is the "information gain" that separates a guide from the listicles it competes with. - youtube-engine (weekly pack): extend the MINE step — mine transcripts of this week's niche videos for founder stories that match the real work, so the pack's ideas carry original hooks.
SERP check first (borrowed from the playbook)
Before writing to a keyword, glance at the live SERP. If every result is a listicle (Feedspot / Goodpods / "top 10" roundups), do BOTH: publish your own roundup and mine a founder story none of them have. The roundup wins the head term; the information-gain story wins the long tail and the AI-Overview citation. Don't out-commodity the commodity — out-original it.
Definition of done
- N cited source briefs (or an explicit
NO BRIEFSline), each fact traceable to a real transcript, each video cited. Zero fabricated numbers. The calling loop takes it from here.