ArchWiki:ボット

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

ボットメンテナンスチーム の重要なツールで、日々の業務から複雑な一度限りの更新まで、繰り返しのタスクを簡単に実行することができます。ボットによる編集は wiki への全ての貢献の8%以上を占めています。このような編集は手動で行うにはとても退屈でしょう。

現在以下のボットが使用されています。

ソフトウェア

ボットは MediaWiki API を使って wiki サーバーに接続します。ウィキメディア財団 によって作られた、この API を使うたくさんのボットがありますが、それらは普通他の wiki で使えるように十分一般化されていなかったり、ArchWiki のスタイルガイドと衝突したりします。そのため、ArchWiki 特有のボットツールを作っていますが、外部から評価すると同じ弱点があるでしょう。

Wiki Monkey

Wiki Monkey プロジェクトの目的は、web ブラウザで直接 wiki ページを改良することで効率的な編集を補助することです。ユーザースクリプトとして動作し、編集ページで繰り返しのタスクを半自動で実行したり、カテゴリリンク元 といったページリストのページから完全に自動で実行したりできます。Wiki Monkey は 特別:最近の更新特別:新しいページ のためのフィルターといったヘルパーも追加します。詳しくは ドキュメント を参照してください。

wiki-scripts

wiki-scripts プロジェクトは、MediaWiki API のための小さなライブラリのような抽象化で構成されたたくさんの Python スクリプトを含んでいます。含まれているスクリプトの目的は、wiki の編集なしに情報を集めることから、自動化された複雑な編集を行うことにまで及びます。これらは #タスク で説明されています。wiki-script による編集は、自動でも手動でも、wiki-scripts タグ が付けられ、最近の更新のリストで フィルター することができます。

タスク

このセクションでは ArchWiki ボットにより繰り返し実行されるタスクについて説明します。概要と、運用中のボットスクリプトの機能のドキュメントを提供します。ボットの編集は標準で 特別:最近の更新 から隠されていることに注意してください。これらの編集を含めると、通常の貢献を追ったり参加したりすることがかなり難しくなるためです。

二重リダイレクト

二重リダイレクト の修正は最も古い自動化タスクです。Python スクリプトWiki Monkey の専用のプラグインで実行することができます。

目次

目次 ページとその "翻訳" は toc.py スクリプトを使って維持されています。スクリプトは毎日実行され、実行は数秒で終わります。

スクリプトは以下のエントリーポイントがページに存在すると仮定します。

{| id="wiki-scripts-toc-table"
...
|}

この表の内容はスクリプトによって生成された更新されたバージョンに置き換えられ、ページの残りはそのままにされます。スクリプトは以下の任意の属性を設定として認識します。

  • data-toc-languages はページで表示される言語を指定します。カンマ区切りの言語タグのリストで、最大2つまで指定できます。デフォルトでは現在のページの言語で、例えば en:Table of contents (Русский) では ru となります。
  • data-toc-alsoin は "also in" フレーズの翻訳を指定します。形式は tag1:text, tag2:text, ... です。

以下は en:Table of contents (Русский) での例です。

{| id="wiki-scripts-toc-table" data-toc-languages="ru,en" data-toc-alsoin="ru:Также в"
...
|}

ユーザーは表の中のカテゴリ名を wiki ページのリンクを編集することで翻訳でき、スクリプトはそれを更新時に維持します。

統計

ArchWiki:統計 ページは statistics.py スクリプトにより更新されています。現在は ユーザー統計 だけが自動生成されていて、残りの部分は手動で更新されています。更新は15秒程度で終わり、毎日実行されています。

スクリプトは全ての版とユーザーアカウントのメタデータを API から取得して、よりよいパフォーマンスのためにローカルにキャッシュすることで動いています。編集回数は MediaWiki のカウンタに頼らずに、手動でユーザーの貢献を数えて決定されています。

ノート: いくつかの改善が en:ArchWiki talk:Statistics#Improvements で議論されています。

パッケージテンプレート

update-package-templates.py スクリプトは全てのページの内容をパースして、PkgGrpAUR テンプレートを更新します。パッケージ名は実際にはスクリプトによって変更されませんが、例えば最近 AUR から公式リポジトリに移動したパッケージは、リンクが テンプレート:AUR から テンプレート:Pkg に更新されます。無効なパッケージリンクには テンプレート:Broken package link が付けられ、パッケージの状態を示す時々便利なヒントも付けられます。

スクリプトは地域化されたバージョンの テンプレート:Broken package linkテンプレート:aur-mirror を存在すれば使い、存在しなければ英語バージョンを使います。これ以外のサーバーサイドの設定は存在しません。

それぞれの実行後に、7日以上の間隔をあけて、スクリプトは en:User:Lahwaacz.bot/Reports/archpkgs にリンク切れの詳細レポートを作成します。

言語間リンク

interlanguage.py スクリプトは以下を実行します。

  • 言語カテゴリが、ページの言語と一致するページに付与されているか確認します。
  • 存在しない地域化カテゴリを作成して、英語カテゴリツリーと同期します。
  • 全てのページの 言語間リンクこのアルゴリズム を使って更新します。

実行時間は編集の量によって変化しますが、通常1分以内に終わり、編集がなければ30秒程度で終わります。