Crear una App desde cero con Google Antigravity
Uso habitualmente Claude.ai pero hoy voy a construir esta herramienta de superproductividad con Google Antigravity.
Es apasionante.
Para difundir mi contenido y el de los clientes necesitaba una herramienta que creara los archivos de subtitulos que YouTube te pide para publicar un video, si es que quieres añadir subtítulos, claro.
Youtube te pide un archivo formato .SRT asi que le he pedido a Google Antigravity que me haga este trabajo.
AVISO IMPORTANTE: Debes tener idea de lo que es desarrollar con el «stack» que quieras utilizar o que el Agente IA te proponga. suelo usar siempre javascript, react y node pero por aprender mas soluciones voy a utilizar aqui python, streamlit y otros componentes. No hace falta que seas un crack pero sí que entiendas lo que estás haciendo ….
Indice de contenidos
- Paso 1 para crear una web app que cree subtitulos: prompt
- PROMPT INICIAL:
- RESULTADO DE GEMINI:
- Paso 2: Crear la web-app en mi PC Windows usando Google Antigravity:
- Paso 3: Crear y probar
- Subtitle Generator – Walkthrough & Troubleshooting
- 1. Local Execution
- Prerequisites
- Running the App
- App para crear subtitulos
- Resumen
Paso 1 para crear una web app que cree subtitulos: prompt
lo que hago es usar Gemini abriendo una nueva conversación y le pongo un prompt lo mas detallado posible para luego ir refinando. En este caso me interesa que me cree el codigo de la web app, que me diga qué dependencias (son librerias o componentes) necesita y tambien le pido que lo cree primero en mi ordenador que es un windows 11 para ahorrarme el hosting y porque asi se programa mucho mas deprisa.
PROMPT INICIAL:
hago videos para subir a youtube y tiktok y necesito crear subtitulos a partir del audio de esos videos. ¿Puedes crear una webapp donde yo ponga un enlace al video p.e. en youtube y tu puedas crear el archivo de subtitulos que youtube pide para poder publicarlos? Tengo el video creado en mi propio pc windows asi que tambien podrias crear esos subtitulos para tiktok
RESULTADO DE GEMINI:
import streamlit as st
import whisper
import os
import yt_dlp
from datetime import timedelta
# Configuración de la página
st.set_page_config(page_title=»Generador de Subtítulos AI», page_icon=»🎬»)
st.title(«🎬 Generador de Subtítulos (SRT)»)
st.markdown(«Crea subtítulos para YouTube y TikTok usando **OpenAI Whisper**.»)
# Función para formatear tiempo al estilo SRT
def format_timestamp(seconds):
td = timedelta(seconds=seconds)
# Convertir a string y asegurar formato 00:00:00,000
total_seconds = int(td.total_seconds())
hours = total_seconds // 3600
minutes = (total_seconds % 3600) // 60
secs = total_seconds % 60
millis = int(td.microseconds / 1000)
return f»{hours:02}:{minutes:02}:{secs:02},{millis:03}»
# Función para crear el contenido SRT
def create_srt_content(segments):
srt_content = «»
for i, segment in enumerate(segments):
start = format_timestamp(segment[‘start’])
end = format_timestamp(segment[‘end’])
text = segment[‘text’].strip()
srt_content += f»{i + 1}\n{start} –> {end}\n{text}\n\n»
return srt_content
# Cargar el modelo de Whisper (se descarga la primera vez)
@st.cache_resource
def load_model():
return whisper.load_model(«base») # Puedes usar «small» o «medium» para más precisión
model = load_model()
# Pestañas para elegir fuente
tab1, tab2 = st.tabs([«📺 Desde YouTube», «📂 Archivo Local (PC)»])
# — OPCIÓN 1: YOUTUBE —
with tab1:
youtube_url = st.text_input(«Pega el enlace de YouTube aquí:»)
if st.button(«Procesar YouTube»):
if youtube_url:
with st.spinner(‘Descargando audio de YouTube…’):
try:
ydl_opts = {
‘format’: ‘bestaudio/best’,
‘postprocessors’: [{‘key’: ‘FFmpegExtractAudio’,’preferredcodec’: ‘mp3’,}],
‘outtmpl’: ‘temp_audio.%(ext)s’,
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download([youtube_url])
st.success(«Audio descargado. Transcribiendo (esto puede tardar)…»)
# Transcribir
result = model.transcribe(«temp_audio.mp3»)
srt_output = create_srt_content(result[‘segments’])
st.success(«¡Subtítulos generados!»)
st.download_button(
label=»Descargar archivo .SRT»,
data=srt_output,
file_name=»subtitulos_youtube.srt»,
mime=»text/plain»
)
# Limpieza
if os.path.exists(«temp_audio.mp3»):
os.remove(«temp_audio.mp3″)
except Exception as e:
st.error(f»Error: {e}»)
else:
st.warning(«Por favor pega un enlace.»)
# — OPCIÓN 2: ARCHIVO LOCAL —
with tab2:
uploaded_file = st.file_uploader(«Sube tu video (MP4, MOV, AVI)», type=[‘mp4’, ‘mov’, ‘avi’, ‘mkv’])
if uploaded_file is not None:
if st.button(«Procesar Video Local»):
with st.spinner(‘Extrayendo audio y transcribiendo…’):
try:
# Guardar archivo temporalmente
with open(«temp_video.mp4», «wb») as f:
f.write(uploaded_file.getbuffer())
# Whisper puede leer el video directamente gracias a ffmpeg
result = model.transcribe(«temp_video.mp4»)
srt_output = create_srt_content(result[‘segments’])
st.success(«¡Subtítulos generados!»)
st.download_button(
label=»Descargar archivo .SRT»,
data=srt_output,
file_name=»subtitulos_tiktok.srt»,
mime=»text/plain»
)
# Limpieza
if os.path.exists(«temp_video.mp4»):
os.remove(«temp_video.mp4″)
except Exception as e:
st.error(f»Ocurrió un error: {e}»)
Paso 2: Crear la web-app en mi PC Windows usando Google Antigravity:
a. Crea una carpeta (folder) para el nuevo proyecto en tu PC
b. crea el fichero app.py con el codigo creado por Gemini y lo guardas en el raiz del proyecto. un truco es pegar en el prompt de Antigravity directamente el codigo python creado por Gemini para que cree directamente el fichero app.py y ademas proponga un plan de trabajo
Paso 3: Crear y probar
Si usas Antigravity o Claude code te van a proponer un plan y tu trabajo consiste en ir aceptando (o no ) los pasos que va a ir dando el agente IA de programación, en este caso Antigravity en modo Agente
Mi práctica habitual es crear todo el codigo y el servidor en modo local para probarlo y luego compruebo que todo funciona y doy el siguiente paso que es publicarlo en internet (deployment).
IMPORTANTE: No vayas como pollo sin cabeza diciendo a todo que sí. Aprende de cómo «razona» la IA. Para entendernos: debes ser capaz de entender el código aunque no lo hayas escrito y de saber la arquitectura que quieres crear: tipo de tecnologia (p.e. python), estructura de datos a crear para guardar la info generada, etc Por ejemplo en este proyecto es critico para ti para poder confiar en esta solucion conocer que es streamlit y ffmpeg y para qué sirven (no te lo cuento si no lo sabes para que investigues).
En mi caso el plan de prueba y test es este:
Subtitle Generator – Walkthrough & Troubleshooting
I have generated the code for your Subtitle Generator web app. Here is how to run it and troubleshoot common issues.
1. Local Execution
Prerequisites
- FFmpeg: I initiated an installation via
winget. Ensureffmpegis in your PATH. You can verify withffmpeg -version. - Python: You currently have Python 3.13.
- ⚠️ Warning: The
openai-whisperlibrary relies onnumba, which may not yet fully support Python 3.13. - Solution: If
pip install -r requirements.txtfails, please use Python 3.10 or 3.11. You can check your version withpython --version.
- ⚠️ Warning: The
Running the App
- Navigate to the directory:
cd c:\Users\scoup\dev\subtit
- Install dependencies (if not already done):
pip install -r requirements.txt
- Start the app:
streamlit run app.py
App para crear subtitulos
Resumen
Estos Agentes IA de programación son tan potentes que debes tener muy claro qué quieres conseguir y cómo probarlo. Lo ideal es que empieces con proyectos que mejoren TU propia productividad y luego vayas a por necesidades de otros
Dime qué te parece esto y si lo has probado. Y si quieres el codigo o detalles profundos pidemelo, no te cortes


