Overcast copycat sweep
Video OSINT agent: senses + OSINT reach for any agent.
npx -y skills add kdr/overcast --skill overcast-copycat-sweepAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 4 stars4 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
Hunt re-uploads and reskins of original video content across X / YouTube / TikTok — escalate from cheap metadata triage to frame/face/transcript matching and produce citable copycat findings.
SKILL.md
6.2 KB, as published. Nobody here has run it
overcast-copycat-sweep
Use this skill when the task is to find copies, re-uploads, or reskins of a
creator's original media (video theft / freebooting) and build an evidence-backed
report. Use the broad overcast skill and overcast/reference/verbs.md for
exact flags. Escalate tier by tier — never capture what metadata already rules
out.
Workflow
- Fingerprint the original (once per case). Reskins defeat exact hashes, so fingerprint three ways — distinctive frames, the creator's face, and the transcript:
overcast doctor --sources --json
overcast case init --json
overcast case setup --name copycat-sweep --target "<creator / original title>" --source "x:video:<topic keywords>" --yes --no-index --json
overcast watch ./original.mp4 --json # content + transcript into case memory
overcast index create originals --type image-ransac --local --json
overcast image add ./title-card.png --index <index-id> --json # + diagrams, key frames
- Sweep sources for candidates published AFTER the original — media-targeted
(
x:video:) queries with topic keywords, not exact titles:
overcast source add 'youtube:search:<topic keywords>' --json
overcast scan --since <original-publish-date> --limit 20 --json
-
Triage on scan metadata alone (no downloads): keep hits whose
publishedpostdates the original, whosedurationis close to it, or whosetitle/snippetechoes it; carryauthorandviewsinto the report. -
Escalate survivors — capture, then match every fingerprint layer:
overcast capture <scan-hit-id> --json
overcast image match <captured-file> --index <index-id> --draw --json # frames survive reskins/subtitles; --draw writes match-overlay proof
overcast face <captured-file> --match ./creator.jpg --json # the face survives re-branding
overcast listen <captured-file> --json # verbatim transcript = strongest signal
overcast ask "does this captured video repeat the original's content? cite moments" --json
Pass --draw on image match so each matched frame writes a RANSAC overlay
(original ↔ suspect keypoints). Cite the image match record as the finding's
--ref in step 5 — the brief embeds that overlay in the finding card as
visual proof.
Each image match / face --match / listen-on-a-match already
auto-suggests a finding (image RANSAC ≥1 inlier, face ≥75%): run
overcast finding list --state triage --json to see the leads, then
finding accept <id> (usually enough — the lead is already there) or
finding dismiss <id>. Step 5's manual finding create --ref <match-record>
stays valid for a richer because-clause (dedup suppresses the duplicate).
Local mode (no external source). The skill works entirely on local files:
skip steps 2–3 and run image match / face --match / listen directly on
candidate videos already on disk (or captured earlier). This is how you compare a
suspected rip you already have against the original, and how the pipeline is
tested offline (fingerprint an original, confirm a reskinned copy, reject an
unrelated clip) — no scan, no API. scan --local also sweeps the case's own
media/indexes when no source is enabled.
- Record verdicts and report; keep a standing watch. One
findingper confirmed copycat stating the because-clause (which layers matched, with scores), and ALWAYS one narrative note taggedtldr— even when the sweep comes up clean ("checked N sources, M candidates triaged, no copycats found") — because the brief's TL;DR / sources-checked / matches header is derived from exactly these records:
overcast finding create "copycat: <original> re-uploaded by @<author> (<views> views) — image frames 3x (best 94 inliers), face 87/100" --ref <image-match-record-id> --confidence high --json
overcast note "checked x + youtube (<n> hits); <m> candidates escalated; <k> confirmed: @<author> ..." --tag tldr --json
overcast target close <target-id> --as answered --note "copycats found + reported" --json # once a line resolves
# Wait for the note result before exporting, so the TL;DR is included.
overcast brief --export ./copycats.html --json # short by default (verdict-led); add --full for the frame-by-frame dump
overcast monitor --every 1d --json
Point the finding's --ref at the image match record (not the raw scan
hit) so its match-draw overlay rides into the finding card as visual proof.
Output
For each confirmed copycat return: post URL, author, views, published,
which layers matched (image frames / face / transcript), the strongest
record.id + media.at citations, and the exported brief path. The exported
brief opens with the TL;DR narrative (from the tldr-tagged note), the
sources-checked rollup, and the matches & findings verdicts; a clean sweep
must still say so explicitly ("checked, found none").
Caveats
Copycats retitle and re-caption, so search topic keywords and confirm with the
visual/transcript layers: burned-in subtitles and translated dubs defeat text
matching but not image frame matching or face --match. Face similarity is
0–100 (percent), not 0–1; image match reports a RANSAC inlier count (unbounded
integer) plus an inlier ratio (0–1) — there is no 0–100 image similarity. A
repost/quote is a share, not a rip —
confirm the account re-uploaded the media natively (check x:video:from:<handle>).
Apify-backed sources bill per result — prefer few, broad queries over many
narrow ones.
Keyword overlap is NOT a match: accounts pump many videos that share your topic
words, so text triage only shortlists — the frame/face/transcript layers decide.
Do not trust an image match inlier count alone; a high count on a degenerate
homography is the main false positive. image match gates on planar-projection
validity by default (--draw writes the overlay so you can eyeball coherent
correspondences vs lines collapsing to a point). Call a video a confirmed rip
only when the gated match survives AND the transcript/face agree.