feat: add asset preferences, video research, and Remotion ad assets

- Add thumbs-down feedback modal and preference API endpoint
- Add AI UGC video platforms research doc
- Add ReflectAd Remotion composition with public flow assets
- Add gemini-ad-designer and poster-ad-designer pipeline skills
- Add research_reflect_v1.1 pipeline script

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-05-03 20:28:07 -05:00
parent b318798ca7
commit 807dfc539b
40 changed files with 3089 additions and 232 deletions
+5 -3
View File
@@ -28,7 +28,7 @@ export function RepurposeModal({ assetId, onClose }: RepurposeModalProps) {
const [available, setAvailable] = useState<string[]>([]);
const [selected, setSelected] = useState<Set<string>>(new Set());
const [loading, setLoading] = useState(false);
const [result, setResult] = useState<{ created: number } | null>(null);
const [result, setResult] = useState<{ formats?: string[] } | null>(null);
useEffect(() => {
fetch(`/api/assets/${assetId}/repurpose`)
@@ -73,8 +73,10 @@ export function RepurposeModal({ assetId, onClose }: RepurposeModalProps) {
{result ? (
<div className="py-4 text-center">
<p className="text-lg font-semibold">{result.created} asset{result.created !== 1 ? "s" : ""} created</p>
<p className="text-sm text-muted-foreground mt-1">Check the Asset Library to review them.</p>
<p className="text-lg font-semibold">Repurposing to {result.formats?.length || 0} format{(result.formats?.length || 0) !== 1 ? "s" : ""}</p>
<p className="text-sm text-muted-foreground mt-1">
Gemini is regenerating the ad at each new size. New assets will appear in the Asset Library when ready.
</p>
<DialogFooter>
<Button onClick={onClose}>Done</Button>
</DialogFooter>