How to add a teal and orange with Claude

The cream label turns a warm peachy orange while the pale holographic backdrop and the purple bottle swing to cool teal, for the blockbuster two-tone grade.

Get this effect

  1. Switch to Code in your Claude Desktop App

  2. Install the skill (once)

    Show the prompt
    Install the Recharm video effects skill: download https://recharm-growth-staging.s3.us-east-2.amazonaws.com/website/downloads/recharm-video-effects.zip and unzip it into ~/.claude/skills
  3. Ask for the effect

    Add a teal and orange to input.mp4
    How hard the tint is pushed: 0.55
    The color cool areas lean toward: (40, 160, 170)

Several videos, several effects, one ask

Put your clips in the folder, mention them with @, and ask for everything at once. Claude runs one tested script after another on each clip, then joins them.

Add a teal and orange to @clip1.mp4, put a sale badge on @clip2.mp4, give @clip3.mp4 a VHS look, then join all three with crossfades.

Settings you can change

Ask Claude to change any of these, or edit them at the top of the script.

SettingDefaultWhat it does
STRENGTH0.55How hard the tint is pushed. 0 leaves the clip alone, 1 is a heavy grade.
TEAL(40, 160, 170)The color cool areas lean toward.
ORANGE(255, 150, 60)The color warm areas lean toward.
SOFTNESS8How gently a pixel moves from teal to orange as red overtakes blue. Lower gives a harder split.
SHADOW_LEVEL80Pixels darker than this lean teal whatever their color.
DESATURATE0.4Share of each pixel's own color dropped so the two tints read cleanly.

Without the skill

Don’t want to install the skill? Paste this prompt into Claude Code and Claude writes the script itself.

Show the prompt
Give all of input.mp4 a teal and orange grade, on every frame from start to end. For each pixel (RGB, 0-255): take its brightness Y = 0.299R + 0.587G + 0.114B; work out how warm it is as w = 1 / (1 + e^(-(R - B) / 8)), then multiply w by min(Y / 80, 1) so dark pixels count as cool; build a tint by blending from the teal offset (40, 160, 170) minus its own brightness to the orange offset (255, 150, 60) minus its own brightness by w (brightness with the same 0.299/0.587/0.114 weights); then the new pixel is Y + 0.6 x (pixel - Y) + 0.55 x tint, clipped to 0-255. Warm areas like the cream label should end up peachy orange, around RGB (225, 180, 135), and cool areas like the pale backdrop around RGB (150, 215, 225); the purple bottle turns a slate teal-blue. Do it in Python with numpy, piping raw frames from and back to ffmpeg. Keep the size, 30fps frame rate, length and audio the same, encode H.264 yuv420p and save it as output.mp4.

Run it without Claude

This is the exact script we tested. Save it as teal-and-orange.py and run:

python3 teal-and-orange.py input.mp4 output.mp4
Show the script
"""Teal and orange: warm colors (skin, labels, wood) pushed toward orange, everything cool and dark toward teal.
Usage: python3 teal-and-orange.py input.mp4 output.mp4
Needs Python 3 with numpy, and ffmpeg.
"""
import subprocess
import sys

import numpy as np

STRENGTH = 0.55          # how hard the tint is pushed (0 leaves the clip alone, 1 is a heavy grade)
TEAL = (40, 160, 170)    # the color cool areas lean toward
ORANGE = (255, 150, 60)  # the color warm areas lean toward
SOFTNESS = 8             # how gently a pixel moves from teal to orange as red overtakes blue
SHADOW_LEVEL = 80        # pixels darker than this lean teal whatever their color
DESATURATE = 0.4         # share of each pixel's own color dropped, so the two tints read cleanly

src, dst = sys.argv[1], sys.argv[2]
w, h = map(int, subprocess.check_output(
    ["ffprobe", "-v", "error", "-select_streams", "v:0", "-show_entries", "stream=width,height",
     "-of", "csv=p=0", src], text=True).strip().split(","))

LUMA = np.array([0.299, 0.587, 0.114], np.float32)
teal = np.array(TEAL, np.float32) - np.dot(TEAL, LUMA)        # teal's color with its brightness removed
orange = np.array(ORANGE, np.float32) - np.dot(ORANGE, LUMA)


def grade(rgb):
    y = (rgb @ LUMA)[..., None]
    # 0 = cool, 1 = warm, by how far red is above blue; dark pixels count as cool
    warm = 1 / (1 + np.exp(-(rgb[..., :1] - rgb[..., 2:]) / SOFTNESS))
    warm *= np.clip(y / SHADOW_LEVEL, 0, 1)
    tint = teal + (orange - teal) * warm
    out = y + (rgb - y) * (1 - DESATURATE) + tint * STRENGTH
    return np.clip(out, 0, 255).astype(np.uint8)


reader = subprocess.Popen(["ffmpeg", "-v", "error", "-i", src, "-vf", "fps=30", "-f", "rawvideo", "-pix_fmt", "rgb24", "-"],
                          stdout=subprocess.PIPE)
writer = subprocess.Popen(["ffmpeg", "-y", "-v", "error", "-f", "rawvideo", "-pix_fmt", "rgb24", "-s", f"{w}x{h}", "-r", "30",
                           "-i", "-", "-i", src, "-map", "0:v", "-map", "1:a?", "-c:v", "libx264", "-crf", "18",
                           "-pix_fmt", "yuv420p", "-c:a", "copy", "-shortest", dst], stdin=subprocess.PIPE)
size = w * h * 3
while True:
    buf = reader.stdout.read(size)
    if len(buf) < size:
        break
    frame = np.frombuffer(buf, np.uint8).reshape(h, w, 3).astype(np.float32)
    writer.stdin.write(grade(frame).tobytes())
writer.stdin.close()
sys.exit(reader.wait() or writer.wait())

Find 3x winning ads

Recharm cuts your ad footage into tagged, searchable clips: hooks, testimonials, product shots. Find the shots that win, add the effect with Claude, and ship 3x more ad edits.

Start 14-day free trial