Robot de edición de Wikipedia dirigido por SD0001
SDZeroBot
Ganador del premio a la herramienta más genial de 2020
en la categoría
Recién llegado
SDZeroBot se ejecuta en Node.js y utiliza el framework de bots mwn, también desarrollado por SD0001 . La mayoría de las tareas están escritas en JavaScript , mientras que las más nuevas están escritas en TypeScript . El código fuente está disponible en GitHub.
Tareas
Informes
Otras tareas continuas
Una sola vez / bajo demanda
Las tareas que solo se editan en el espacio de usuario no requieren un BRFA.
¿Cómo generar extractos de artículos?
Buena pregunta. Los extractos de artículos utilizados en muchas de las páginas de clasificación de SDZeroBot se generan utilizando una combinación de expresiones regulares y algunos métodos de análisis ligeramente más formales. El código fuente de Node.js utilizado se puede ver aquí, que también se basa en la clase wikitext de mwn. Este generador de extractos también está disponible como un servicio web alojado en Toolforge en https://summary-generator.toolforge.org/ con una interfaz de usuario mínima horrible, pero un mejor punto final de API. Consulte el README de GitHub para obtener instrucciones de uso.
Inicialmente consideré usar el código de ventanas emergentes , pero era demasiado desordenado y estaba integrado con muchos otros códigos de ventanas emergentes, por lo que no pude lograr que funcionara de forma independiente.
Todos los extractos son lo suficientemente breves, de modo que se evitan problemas de atribución y derechos de autor.
Código fuente
Todo el código fuente que impulsa SDZeroBot está disponible públicamente a través del repositorio de GitHub, así como en el directorio /data/project/sdzerobot en Toolforge. Incluso los registros (archivos *.out y *.err) son visibles públicamente, lo que no es el caso por defecto en Toolforge. El archivo jobs.yml que se utiliza para programar las tareas también se puede ver allí.
Hacer
Si estás interesado en ayudar con estas tareas, por favor contáctame.
- Dividir ciertas listas de clasificación en subtemas.
- Para la lista de deportes (más de 1500 páginas), utilice el aprendizaje automático para dividir esta lista por deporte.
- Divida la lista de biografías por profesiones: esto se puede hacer simplemente mirando los otros temas con los que se han clasificado las biografías.
- Para las listas STEM, cree secciones para artículos centrales, biografías STEM, medios STEM, empresas STEM, ... ( discusión )
- Produce automáticamente descripciones breves para artículos y borradores.
- Los borradores en su mayoría no tienen descripciones breves. Serían muy útiles para la clasificación de AfC . También son útiles para las listas de AfD, NPP y PROD.
- Explore el uso del aprendizaje automático para esto y, en su defecto, otros métodos como el generador de descripción breve de biografías de Trialpears .
- Si esto tampoco proporciona el nivel de precisión deseado (especialmente para artículos que no son biografías), no agregue las descripciones cortas al artículo, sino muéstrelas en las listas de clasificación.
- Considere crear una interfaz de usuario web alojada en Toolforge para la lista de clasificación de AfD, de modo que se puedan agregar más columnas (cuya visibilidad se puede alternar mediante javascript), según las ideas aquí .
- Automatizar el etiquetado de desclasificación de AfD mediante ORES. Funciona solo para listas de desclasificación seleccionadas que tienen un tema ORES correspondiente, o
- Automatizar el etiquetado de eliminación de artículos eliminados mediante un modelo de aprendizaje automático personalizado. El modelo se puede entrenar basándose en el etiquetado de eliminación de artículos realizado hasta ahora por humanos. La dificultad aquí es que el entrenamiento imparcial del modelo también requiere acceso al contenido de los artículos eliminados. El simple entrenamiento con artículos que se mantuvieron en AfD no daría buenos resultados.
- Una gran idea: identificar drafts prometedores de la AFC usando ML.
- Probablemente usando TemplateStyles, mejore la apariencia de las tablas en pantallas muy pequeñas y muy anchas.
- Crear listas unificadas para PROD y AFD que incluyan tanto el fundamento de la eliminación como el texto principal. PRODY
- No duplique el texto de nominación en el informe de clasificación de AFD para nominaciones de varios artículos.
- Usuario: SDZeroBot/AFC rechazados , ¿G13 pronto descubrirá formas de identificar mejor los borradores buenos y malos?
- Crear una herramienta de búsqueda de artículos: muestra extractos de artículos de las consultas de CirrusSearch: utiliza ReactJS
Consejos y trucos para operadores de bots
Monitoreo de fallas
Para cada tarea de SDZeroBot, la mayor parte del código se encuentra en una función asincrónica con una captura que captura los errores y los formatea como un correo electrónico enviado a la cuenta de la herramienta, que llega a mi bandeja de entrada. Por si fuera poco, también hay un controlador de excepciones no capturadas a nivel de proceso.
Los únicos tipos de errores que lo anterior no manejaría son los que ocurren incluso antes de que el código javascript comience a ejecutarse (como cuando el archivo pierde accidentalmente su permiso de ejecución) o los OOM , que se manejan ambos mediante --emails onfailure
el uso del marco de trabajos de Toolforge.
Además, en el caso de las páginas de informes, esta página de usuario las enumera junto con las marcas de tiempo de su última actualización. Junto con la frecuencia esperada de las actualizaciones, se envía a un módulo Lua que imprime la marca de tiempo en negrita y rojo si se retrasa.
También está WP:BAM , que aunque lo mantiene SDZeroBot, no se utiliza para monitorizarse a sí mismo.
Una buena combinación de técnicas de monitoreo de fallas es esencial para operar bots que realicen de manera confiable una serie de tareas sin requerir que usted gaste tiempo y energía en asegurarse de que todo esté funcionando.
Cómo gestionar enlaces incluidos en listas negras
Si SDZeroBot no puede guardar una edición porque está introduciendo un enlace incluido en la lista negra de spam (lo que, por supuesto, no es culpa del bot, ya que probablemente haya recogido el texto que se añadirá de otro lugar), identifica el enlace problemático a partir de la respuesta de la API, elimina el protocolo ("http:" o "https:") del enlace y, a continuación, intenta guardar la página de nuevo. Esto significa que un enlace que se suponía que debía tener el aspecto de Etiqueta de enlace termina teniendo el aspecto de [etiqueta de enlace de google.com], pero es el más parecido al original y permite que se realice la edición. Además, el enlace estaba incluido en la lista negra de todos modos, por lo que probablemente no debería ser posible hacer clic en él.
Utilice OAuth
Utilice siempre OAuth en lugar de BotPasswords. Tiene todas estas ventajas:
- Más rápido: BotPasswords requiere al menos 3 llamadas a la API solo para sacar al bot del bloque: una para obtener un token de inicio de sesión, otra para iniciar sesión y, por lo general, otra para obtener tokens de edición. Dado que OAuth no requiere ninguna llamada a la API para comenzar la autenticación, solo necesita una llamada a la API para obtener los tokens.
- Errores menores: la pérdida de sesión suele ocurrir con métodos de autenticación basados en cookies. Los buenos marcos de trabajo para bots deberían gestionar estos problemas automáticamente iniciando sesión nuevamente al obtener la respuesta de API assertbotfailed o assertuserfailed, pero si el tuyo no lo hace, puedes evitar estos problemas simplemente usando OAuth. Los tokens de OAuth no vencen.
- No es necesario almacenar en caché las cookies: si la tarea de tu bot es demasiado frecuente (por ejemplo, cada 10 minutos), es probable que tengas una tasa de inicio de sesión alta, a menos que guardes en caché las cookies de inicio de sesión y las uses en todas las ejecuciones del bot. Los administradores de servidores no ven con buenos ojos las tasas de inicio de sesión altas. Nuevamente, con OAuth, no tienes que preocuparte por esto.
- Más seguro: OAuth es más seguro.