thanks for the clarifications...
you're probably right on the Gamma instead of the ContrastRGB... even though there's slightly less control this way you'd only have to use one slider instead of three (and hey, i always spend too much time on details nobody notices anyway 
here's a first try for a combined macro - the inputs would be backround, foreground, and alpha (since it's really just a bumped up keymix). i used byte nodes to reduce the inputs... i also had to put in a SetDOD since i was getting weird results on the EdgeDetect if the alpha went out of frame.
last and not least, i switched the BlurApha_Var (your original Blur1) to "In Frame Only" for the same reason.
feel welcome to improve 
++ christoph
BACKGROUND = Checker(720, 576, 2, 32, xSize/GetDefaultAspect());
Color1 = Color(720, 576, 1, 0, 1, red, 1, 0);
ColorWheel1 = ColorWheel(720, 610, 2, 0, 1, 1, 1);
Add1 = Add(ColorWheel1, -0.1, -0.3, 0.2, 0, 0);
MacroIn_BytesBG = Bytes(BACKGROUND, bytes);
BlurBG_Link = Blur(MacroIn_BytesBG, BlurAlpha_Var.xPixels, xPixels,
0, BlurAlpha_Var.xFilter, BlurAlpha_Var.yFilter, "rgb");
GREENSCREEN = Over(Add1, Color1, 1, 0, 0);
Keylight1 = Keylight(GREENSCREEN, 0, 0, 0, "1.4", "composite", 0,
1, 0.200000033, 0, 0.556, 0.9, 0.342, 0.2, 0.719, 0.524,
0.01055409, -0.675461769, 0, 0.4, 0.5, 0.5, 0.5, 1, rExposure,
rExposure, 1, rGamma, rGamma, 1, "linear", 1, "A", 1, "A",
0, 0);
ALPHA = DilateErode(Keylight1, "a", -1, xPixels/GetDefaultAspect(),
0, 0, 0);
MacroIn_BytesAlpha = Bytes(ALPHA, bytes);
BlurAlpha_Var = Blur(MacroIn_BytesAlpha, 100, xPixels, 0, "gauss",
xFilter, "a");
MacroIn_SwitchMatte = SwitchMatte(GREENSCREEN, MacroIn_BytesAlpha,
1, "A", 1, 0);
SetDOD1 = SetDOD(MacroIn_BytesAlpha, 0, width, 0, height);
EdgeDetect_Var = EdgeDetect(SetDOD1, 4, 0, 0, 0, 0, 0, 0, xBlur/GetDefaultAspect(),
0, xDilateErode/GetDefaultAspect(), 0, 0, "Fast", 8, MacroIn_BytesAlpha.bytes);
Outside1 = Outside(MacroIn_BytesAlpha, BlurAlpha_Var, 1);
Over = Over(MacroIn_SwitchMatte, MacroIn_BytesBG, 1, 0, 0);
Blur_Var = Blur(EdgeDetect_Var, 6, xPixels/GetDefaultAspect(),
0, "gauss", xFilter, "a");
Gamma_Var = Gamma(Outside1, 1, rGamma, rGamma, 1);
KeyMix_Var = KeyMix(Over, BlurBG_Link, Gamma_Var, 1, "A", 30,
0);
IBlur_Out = IBlur(KeyMix_Var, Blur_Var, 6, xPixels/GetDefaultAspect(),
0, "gauss", xFilter, 5, 1, "A", "rgba", 0);