Un evento, o una serie semanal sencilla
Para: una milonga, un seminario o algo que se repite igual todas las semanas.
Completá el formulario. Para las noches fijas elegí «Gjentas: Ukentlig» (se repite cada semana) y la última fecha; cada fecha queda como un evento propio que después se puede cambiar o cancelar por separado.
El formulario está en noruego. El título y la descripción se pueden escribir en noruego o en inglés («Tekstspråk»); por ahora no en español. Si tenés el texto en los dos idiomas, cargá el otro en los campos opcionales del final; con un idioma alcanza.
Abrir el formulario ↗Los campos del formulario en español
- Tekstspråk
- Idioma del texto: elegí English si escribís el título y la descripción en inglés
- Tittel
- Título
- Type
- Kurs = clase, Workshop = seminario, Milonga, Practica, Festival, Maraton = maratón, Utetango = al aire libre, Annet = otro
- Dato
- Fecha (AAAA-MM-DD)
- Starttid / Sluttid
- Hora de inicio / fin
- Gjentas
- Se repite: Nei = no, Ukentlig = todas las semanas
- Gjentas til / Unntatt datoer
- Se repite hasta / excepto estas fechas
- Sted / Adresse
- Lugar / dirección
- Arrangør
- Organiza
- Lærere
- Profesores
- Pris / Studentpris / Kurspris (kr)
- Precio / estudiantes / clase, en coronas
- Musikk
- Música: Tradisjonell = tradicional, Alternativ / neo, Levende orkester = orquesta en vivo
- Lenke
- Enlace a la página del evento
- Beskrivelse
- Descripción
- Tittel / Beskrivelse (andre språk)
- Título / descripción opcional en el otro idioma
- Samtykke
- Consentimiento: las personas mencionadas aceptaron figurar
Varias fechas con variaciones, desde una planilla
Para: una serie en la que cambian, por ejemplo, el DJ o el precio, o muchas fechas de una vez.
- La primera fila tiene los nombres de las columnas (en noruego, ver abajo); la segunda fila, todo lo que las fechas tienen en común (título, lugar, horarios, precio …).
- En las filas siguientes completá solo lo que cambia, normalmente Dato (fecha) y DJ. Celda vacía = igual que la segunda fila. Escribí
-para borrar un dato y «Avlyst» en Status para las fechas canceladas. - Seleccioná todas las celdas (también los nombres de las columnas), copiá (Ctrl+C / ⌘C) y pegá en el formulario «Nytt arrangement (fra tabell)». Funciona con Excel, Hojas de cálculo de Google y Numbers.
| Tittel | Type | Dato | Starttid | Sluttid | Sted | Adresse | Arrangør | DJ | Pris (kr) | Lenke | Status |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Fredagsmilonga | Milonga | 16.10.2026 | 20:00 | 00:30 | Salen | Storgata 1, Oslo | Tangoklubben | DJ A | 150 | https://… | – |
| 23.10.2026 | DJ B | ||||||||||
| 30.10.2026 | Avlyst |
Columnas
- Tittel
- Título: el nombre del evento. (obligatorio)
- Type
- Tipo, uno o más separados por comas: Class (clase), Workshop (seminario), Milonga, Practica, Festival, Marathon, Open-air (al aire libre), Other (otro) – p. ej. «Class, Milonga». (obligatorio)
- Dato
- Fecha, una por fila: AAAA-MM-DD, DD.MM.AAAA o DD/MM/AAAA. (obligatorio)
- Starttid / Sluttid
- Hora de inicio / fin, HH:MM. Si termina después de medianoche, está bien (p. ej. 01:00). Inicio (obligatorio)
- Sted / Adresse
- Nombre del lugar y dirección. (obligatorio)
- Arrangør
- Organiza: el club o la persona que organiza. (obligatorio)
- DJ / Lærere
- DJ / profesores, separados por comas.
- Pris (kr), Studentpris (kr), Kurspris (kr)
- Precio, precio para estudiantes, precio de la clase, en coronas enteras.
- Musikk
- Música: Traditional, Alternative / neo y/o Live orchestra, separados por comas.
- Flyer / Video
- Enlace a una imagen / a YouTube o Vimeo.
- Lenke
- Enlace: la página del evento o el evento de Facebook. (obligatorio)
- Beskrivelse
- Descripción: un texto corto.
- Tekstspråk
- Idioma del texto: «English» o «Norsk» (predeterminado), el idioma de Tittel y Beskrivelse. Por ahora el texto de los eventos va en noruego o inglés.
- Tittel (andre språk) / Beskrivelse (andre språk)
- Opcional: título y descripción en el otro idioma.
- Status
- Escribí «Avlyst» (o «Cancelled») en las fechas canceladas.
Las columnas pueden ir en cualquier orden y solo hacen falta las que uses.
Con IA, desde una página de Facebook o un sitio web
Para: el evento ya está descrito en algún lado y preferís no escribirlo de nuevo.
- Copiá las instrucciones de abajo.
- Abrí tu asistente de IA (Copilot, Gemini, ChatGPT …), pegá las instrucciones y agregá el texto del evento justo después: copiá el texto de la página del evento o adjuntá una captura de pantalla. Los asistentes de IA normalmente no pueden entrar a Facebook por su cuenta.
- Revisá la respuesta. La IA se puede equivocar: fijate sobre todo en la fecha, los horarios, el lugar y el precio.
- Pegá la respuesta completa en el formulario «Nytt arrangement (JSON fra KI)».
You are helping to submit an event to Tangokalender, a community calendar for Argentine tango in Oslo.
Read the event information I give you below (text, screenshot or link contents) and convert it as follows.
Pages to use (open them if you can browse; if you cannot, work from what the user gives you):
- https://tango.oslo.no/schema/tango-event-submission.schema.json: the submission JSON Schema, with every field and the allowed values. Follow it exactly.
- https://tango.oslo.no/events.json: the upcoming events, as stored. Check it before you answer: whether the event is already listed, which events belong to the same series, and how venues, addresses, organisers and teachers are already spelt.
- https://github.com/Tangokalender/tangokalender.github.io/tree/main/events: every event as one JSON file, past dates too (events/YYYY/MM-month/YYYY-MM-DD-<id>.json). Use it when the series has no upcoming dates left, e.g. a new term of a course.
Rules:
- Output ONLY a JSON value that conforms to this JSON Schema, with no explanation around it: https://tango.oslo.no/schema/tango-event-submission.schema.json
- Required in every object: "title", "types", "start", "venue" (with "name" and "address"), "organizer" and "link". Everything else may be null or left out.
- "organizer" is the group or person the source names as organiser. If none is named, use the page or profile that published the event (on Facebook: the event host). Ask the user if you cannot tell.
- One JSON object per date. If the event repeats (e.g. "every Wednesday until 9 December"), output an array with one object per date and leave out dates the source says are cancelled. If no end date is given, include the next 4 dates.
- "start" and "end" are Oslo local time: "YYYY-MM-DDTHH:MM", without a time zone. Use "YYYY-MM-DD" when no time is given (e.g. festivals). If the event ends after midnight, "end" has the next day's date. If the year is not stated, use the next upcoming occurrence of that date.
- "types" is a list with one or more of: class (class or course), workshop (workshop or seminar), milonga (social dance evening), practica (practice evening), festival (festival or multi-day event with workshops), marathon (multi-day, mostly social dancing), outdoor (open-air / outdoor event (utetango); combine with e.g. milonga), other (anything else). Use several when the event combines them, e.g. ["class", "milonga"], or ["milonga", "outdoor"] for an open-air milonga.
- "music_style" (only if the source states it) is a list of: alternative (alternative or neo tango), live_orchestra (live orchestra), traditional (traditional / golden-age tango).
- Prices are whole Norwegian kroner as integers: "price_nok" (regular entry), "student_price_nok", "class_price_nok" (the class or course part). If a price covers a whole course or several dates (e.g. 910 kr for a 6-session course), put it in "class_price_nok" on each date, leave "price_nok" null, and say what it covers in "description" (e.g. "Pris for hele kurset.").
- "venue" is {"name", "address", "city"}; "city" is usually "Oslo".
- "link" is the URL of the event page (for example the Facebook event). "flyer_url" and "video_url" (YouTube or Vimeo) only if such links appear in the source.
- "description": 1–3 short, neutral sentences (level, entry, dress code). No marketing language. Write it in the language of the source if that is Norwegian or English, otherwise in English.
- "lang" is the language of "title" and "description": "nb" (Norwegian) or "en" (English).
- "translations" only if the source itself has the text in both languages: {"en": {"title": …, "description": …}} for a Norwegian event (or {"nb": …} for an English one). Never translate yourself.
- Use null (or [] for lists) for anything the source does not state. Never guess names, prices, times or addresses.
- Write people's names (DJ, teachers, organiser) only as they appear in the public event.
- If a date is already in the calendar (same title or organiser, venue and date), do not output it again. Tell the user that it is already listed and that corrections go through the «Rett opp» link on the event page.
Existing events as templates:
- When the event continues a series that is already in the calendar (a weekly milonga, a course, a monthly practica), or the user gives you an existing event as JSON, use the latest event of that series as a template. Find it in the pages above, by the same title, or by the same organiser and venue.
- Copy "title" exactly: a new date with the same title and the same organiser or venue is added to the existing series. Also copy "types", "venue", "organizer", "teachers", "music_style", the prices, "description", "lang" and "translations", unless the source says something different. The source always wins over the template.
- Take "start", "end", "dj", "flyer_url" and "video_url" from the source only. These change from date to date. "link" is the source's event page; use the template's only when the source has none.
- Even for a new event, if the venue or the organiser is already in the calendar, write the name and address exactly as they are there.
- Stored events are not submissions. Convert them: leave out "$schema", "id", "series", "status", "source", "source_url", "published_date", "first_seen", "last_verified", "crawl_timestamp" and "confidence". Shorten "start" and "end" to "YYYY-MM-DDTHH:MM" (no seconds, no "+01:00"/"+02:00"). Turn "video" {"platform", "id"} into "video_url" (https://www.youtube.com/watch?v=<id> or https://vimeo.com/<id>).
Example. For the input
Milonga del Fiordo 🎶 Fredag 12. mars kl. 21–01.30 på Kulturhuset Fjord, Storgata 9, Oslo.
DJ: Gjeste-DJ. Inngang 150 kr, studenter 100 kr. Tradisjonell tango hele kvelden.
Arr: Tangoforeningen Fjord. https://www.facebook.com/events/000000000000000
the output is
{
"title": "Milonga del Fiordo",
"types": ["milonga"],
"start": "2027-03-12T21:00",
"end": "2027-03-13T01:30",
"venue": {"name": "Kulturhuset Fjord", "address": "Storgata 9, Oslo", "city": "Oslo"},
"organizer": "Tangoforeningen Fjord",
"dj": "Gjeste-DJ",
"teachers": [],
"music_style": ["traditional"],
"price_nok": 150,
"student_price_nok": 100,
"class_price_nok": null,
"description": "Milonga med tradisjonell tango hele kvelden.",
"lang": "nb",
"flyer_url": null,
"video_url": null,
"link": "https://www.facebook.com/events/000000000000000"
}
Event information:
Las noches fijas quedan como una entrada por fecha: decile al asistente qué fechas son, p. ej. «todos los miércoles del 7 de octubre al 9 de diciembre, menos el 18 de noviembre». Si son fechas nuevas de algo que ya está en el calendario, el asistente usa una fecha anterior como modelo, así los nombres, el lugar y el precio quedan escritos igual. Si tu asistente no puede abrir enlaces, pegá también una fecha anterior de events.json.
Corregir o cancelar
Cada evento tiene un enlace «Proponer una corrección ↗». El formulario (en noruego) muestra lo que figura ahora; completá solo lo que hay que cambiar, elegí si el cambio vale solo para esa fecha o también para todas las siguientes de la serie, y envialo. Las cancelaciones se avisan con «Status: Avlyst»: el evento sigue en el calendario marcado como cancelado.
Para editores: cambiar muchos eventos desde la línea de comandos
Cuándo: tenés permiso de escritura en el repositorio de datos y querés cambiar muchas fechas a la vez: cancelar un mes, mudar una serie a otro lugar, corregir un precio.
tangoedit es un programa chico para Linux, Windows y macOS (descargalo, no hay que instalar nada). Ejecutalo en un clon del repositorio de datos; con Julia, julia --project=. -m TangoKalender edit … hace lo mismo.
- Buscá los eventos. Tienen que coincidir todas las palabras;
clave:textobusca en un solo campo (series:,type:,venue:). Solo eventos próximos; acotá con--from/--until. - Mirá antes de cambiar.
--dry-runmuestra los cambios línea por línea,--previewcomo tarjetas. - Cambiá con
clave=valor:status=cancelled,price_nok=150,venue.name=…. Todo se verifica antes de escribir; si algo está mal, no cambia nada. - Hacé commit y abrí un pull request. El sitio se actualiza cuando se fusiona.
# ¿cuáles coinciden?
tangoedit series:onsdagsmilonga --from=2026-11-01 --until=2026-11-30
# cómo van a quedar (no se escribe nada)
tangoedit series:onsdagsmilonga --from=2026-11-01 --until=2026-11-30 status=cancelled --dry-run
# cancelarlos
tangoedit series:onsdagsmilonga --from=2026-11-01 --until=2026-11-30 status=cancelled
tangoedit --helpPrivacidad
Usá solo información que ya sea pública. Los nombres de DJ y profesores solo pueden figurar si dieron su consentimiento; lo confirmás en el formulario. No pegues mensajes privados ni datos personales en un asistente de IA.
Para enviar necesitás una cuenta (gratuita) de GitHub. Para desarrolladores y agentes de IA: llms.txt · esquema de envío (JSON Schema) · formato guardado