Bot de edición de Wikipedia ejecutado 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 marco de trabajo mwn bot, también desarrollado por SD0001 . La mayoría de las tareas están escritas en JavaScript , mientras que las más nuevas están en TypeScript . El código fuente está disponible en GitHub.
Tareas
Informes
Otras tareas continuas
Una vez/bajo demanda
Las tareas que se editan únicamente en el espacio de usuario no requieren un BRFA.
¿Cómo se generan 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 un poco 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 API. Consulte el archivo README de GitHub para obtener instrucciones de uso.
Inicialmente consideré usar el código de las ventanas emergentes , pero era demasiado complicado y estaba tan integrado con muchos otros códigos de ventanas emergentes que no podía hacer que funcionara de forma independiente.
Todos los extractos son lo suficientemente breves para evitar 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 de forma predeterminada en Toolforge. El crontab en vivo utilizado para programar las tareas también se puede ver allí.
Hacer
Si estás interesado en ayudar con estas tareas, por favor contáctame.
- Divida 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 principales, biografías STEM, medios STEM, empresas STEM,... ( discusión )
- Produzca automáticamente descripciones breves para artículos y borradores.
- La mayoría de los borradores no tienen ninguna descripción breve. Serían muy útiles en la clasificación de AfC . También útil para las listas AfD, NPP y PROD.
- Explore el uso del aprendizaje automático para esto, en su defecto, otros métodos como el generador de bio shortdesc de Trialpears .
- Si eso tampoco proporciona el nivel de precisión deseado (especialmente para artículos que no son biológicos), en realidad no agregue los shortdescs al artículo, muéstrelo en las listas de clasificación.
- Considere la posibilidad de 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 usando javascript), según las ideas aquí .
- Automatice el etiquetado de clasificación de AfD mediante ORES. Funciona solo para listas de clasificación seleccionadas que tienen un tema ORES correspondiente, o
- Automatice las etiquetas de clasificación utilizando algún modelo de aprendizaje automático personalizado. El modelo se puede entrenar sobre la base del etiquetado delsort 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. Simplemente entrenarlo con artículos que se conservaban en AfD no daría buenos resultados.
- El más importante: identificar borradores prometedores de la AFC utilizando ML.
- Probablemente usando TemplateStyles, mejore la apariencia de las tablas en pantallas muy pequeñas y muy anchas.
- Cree listas unificadas para PROD y AFD que incluyan tanto el motivo de eliminación como el texto principal. PINCHARY
- No duplique el texto de nominación en el informe de clasificación de la AFD para nominaciones de varios artículos.
- Usuario: SDZeroBot/Declined AFCs , ¿G13 pronto descubrirá formas de identificar mejor los borradores buenos y malos?
- Crear herramienta de búsqueda de artículos: muestra extractos de artículos de consultas de CirrusSearch: use ReactJS
Consejos y trucos para operadores de bots
Monitoreo de fallas
Para cada tarea de SDZeroBot, la mayor parte del código está en una función asíncrona con un elemento que detecta errores y lo formatea como un correo electrónico enviado a la cuenta de la herramienta, que llega a mi bandeja de entrada. Por si acaso, también hay un controlador de excepciones uncaughtException 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 que el archivo pierda accidentalmente su permiso ejecutable) o OOM , ambos se manejan --emails onfailure
usando el marco de trabajo de Toolforge.
Además, para las páginas del informe, esta página de usuario las enumera arriba junto con sus últimas marcas de tiempo actualizadas. Junto con la frecuencia esperada de las actualizaciones, se introduce en un módulo Lua que imprime la marca de tiempo en rojo negrita si se retrasa.
También está WP:BAM que, aunque lo mantiene SDZeroBot, no se utiliza para monitorearse.
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 que usted dedique tiempo y energía a asegurarse de que todo esté funcionando.
Manejo de enlaces en la lista negra
Si SDZeroBot no puede guardar una edición porque está introduciendo un enlace en la lista negra de spam (lo cual, por supuesto, no es culpa del bot, ya que probablemente simplemente recogió el texto que se agregará desde otro lugar), identifica el enlace problemático del Respuesta de API, elimina el protocolo ("http:" o "https:") del enlace y luego intenta guardar la página nuevamente. Esto significa que un enlace que se suponía que debía verse como Etiqueta de enlace termina pareciéndose a [etiqueta de enlace de google.com], pero es el más cercano al original y permite que se realice la edición. Además, el enlace estaba en la lista negra de todos modos, por lo que probablemente no debería poder hacer clic.
Usar OAuth
Utilice siempre OAuth en lugar de BotPasswords. Existen todas estas ventajas:
- Más rápido: BotPasswords requiere al menos 3 llamadas API solo para sacar el bot del bloqueo: 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 recuperar los tokens.
- Errores menores: la pérdida de sesión a menudo ocurre cuando se utilizan métodos de autenticación basados en cookies. Los buenos marcos de trabajo de bots deberían manejarlos automáticamente iniciando sesión nuevamente al obtener la respuesta API de afirmarbotfailed o de afirmaruserfailed, pero si el suyo no lo hace, puede evitar estos problemas simplemente usando OAuth. Los tokens de OAuth no caducan.
- No es necesario almacenar en caché las cookies: si la tarea de su bot es demasiado frecuente (por ejemplo, cada 10 minutos), es probable que tenga una tasa de inicio de sesión alta a menos que almacene en caché las cookies de inicio de sesión y las use en todas las ejecuciones del bot. Los administradores de servidores desaprueban las altas tasas de inicio de sesión. Nuevamente, con OAuth no tienes que preocuparte por esto.
- Más seguro: OAuth es más seguro.