「ArchWiki:ボット」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎Wiki Monkey: 改行を削除)
 
(2人の利用者による、間の22版が非表示)
1行目: 1行目:
[[Category:ArchWiki]]
+
[[カテゴリ:ArchWiki]]
 
[[en:ArchWiki:Bots]]
 
[[en:ArchWiki:Bots]]
  +
[[pt:ArchWiki:Bots]]
* [[User:Kusakata.bot2|kusakata.bot2]] ([[User talk:Kusakata.bot2|議論]])
 
  +
{{Related articles start}}
  +
{{Related|ヘルプ:操作手順}}
  +
{{Related articles end}}
  +
[[w:Bots|ボット]] は [[ArchWiki:メンテナンスチーム|メンテナンスチーム]] の重要なツールで、日々の業務から複雑な一度限りの更新まで、繰り返しのタスクを簡単に実行することができます。ボットによる編集は wiki への全ての貢献の8%以上を占めています。このような編集は手動で行うにはとても退屈でしょう。
  +
  +
現在以下のボットが使用されています。
  +
  +
* [[User:Kusakata.bot2|kusakata.bot2]] (使用者: [[User:Kusakata|kusakata]])
  +
  +
== ソフトウェア ==
  +
  +
ボットは [[mw:API:Main_page/ja|MediaWiki API]] を使って wiki サーバーに接続します。[[Wikipedia:ja:ウィキメディア財団|ウィキメディア財団]] によって作られた、この API を使うたくさんのボットがありますが、それらは普通他の wiki で使えるように十分一般化されていなかったり、ArchWiki のスタイルガイドと衝突したりします。そのため、ArchWiki 特有のボットツールを作っていますが、外部から評価すると同じ弱点があるでしょう。
  +
  +
=== Wiki Monkey ===
  +
  +
[https://github.com/kynikos/wiki-monkey Wiki Monkey] プロジェクトの目的は、web ブラウザで直接 wiki ページを改良することで効率的な編集を補助することです。ユーザースクリプトとして動作し、編集ページで繰り返しのタスクを半自動で実行したり、[[特別:カテゴリ|カテゴリ]] や [[特別:リンク元|リンク元]] といったページリストのページから完全に自動で実行したりできます。Wiki Monkey は [[特別:最近の更新]] や [[特別:新しいページ]] のためのフィルターといったヘルパーも追加します。詳しくは [https://github.com/kynikos/wiki-monkey/wiki ドキュメント] を参照してください。
  +
  +
Wiki Monkey のボットインターフェースによって行われた編集は、{{ic|wiki-monkey}} [[特別:タグ一覧|タグ]] が付けられ、最近の更新リストで [{{canonicalurl:Special:RecentChanges|hidebots=0&tagfilter=wiki-monkey}} フィルター] することができます。
  +
  +
{{Note|2021-12-22 時点で wiki.archlinux.jp では Wiki Monkey は動作しません。}}
  +
  +
=== wiki-scripts ===
  +
  +
[https://github.com/lahwaacz/wiki-scripts wiki-scripts] プロジェクトは、MediaWiki API のための小さなライブラリのような抽象化で構成されたたくさんの Python スクリプトを含んでいます。含まれているスクリプトの目的は、wiki の編集なしに情報を集めることから、自動化された複雑な編集を行うことにまで及びます。これらは [[#タスク]] で説明されています。wiki-script による編集は、自動でも手動でも、{{ic|wiki-scripts}} [[特別:タグ一覧|タグ]] が付けられ、最近の更新のリストで [{{canonicalurl:特別:最近の更新|hidebots=0&tagfilter=wiki-scripts}} フィルター] することができます。
  +
  +
== タスク ==
  +
  +
このセクションでは ArchWiki ボットにより繰り返し実行されるタスクについて説明します。概要と、運用中のボットスクリプトの機能のドキュメントを提供します。ボットの編集は標準で [[特別:最近の更新]] から隠されていることに注意してください。これらの編集を含めると、通常の貢献を追ったり参加したりすることがかなり難しくなるためです。
  +
  +
=== 二重リダイレクト ===
  +
  +
[[ヘルプ:操作手順#二重リダイレクトを修正する|二重リダイレクト]] の修正は最も古い自動化タスクです。[https://github.com/lahwaacz/wiki-scripts/blob/master/fix-double-redirects.py Python スクリプト] や [[#Wiki Monkey|Wiki Monkey]] の専用のプラグインで実行することができます。
  +
  +
=== 目次 ===
  +
  +
[[目次]] ページとその "翻訳" は [https://github.com/lahwaacz/wiki-scripts/blob/master/toc.py toc.py] スクリプトを使って維持されています。スクリプトは毎日実行され、実行は数秒で終わります。
  +
  +
ページは以下のエントリーポイントの表で手作業で初期化する必要があります。
  +
  +
{{bc|<nowiki>
  +
{| id="wiki-scripts-toc-table"
  +
|}
  +
</nowiki>}}
  +
  +
この表の内容はスクリプトによって生成された更新されたバージョンに置き換えられ、ページの残りはそのままにされます。スクリプトは以下の任意の属性を設定として認識します。
  +
  +
* {{ic|data-toc-languages}} はページで表示される言語を指定します。カンマ区切りの言語タグのリストで、最大2つまで指定できます。デフォルトでは現在のページの言語で、例えば [[:en:Table of contents (Русский)]] では {{ic|ru}} となります。
  +
* {{ic|data-toc-alsoin}} は "also in" フレーズの翻訳を指定します。形式は {{ic|''tag1:text, tag2:text, ...''}} です。
  +
  +
以下は [[:en:Table of contents (Русский)]] での例です。
  +
  +
{{bc|<nowiki>
  +
{| id="wiki-scripts-toc-table" data-toc-languages="ru,en" data-toc-alsoin="ru:Также в"
  +
...
  +
|}
  +
</nowiki>}}
  +
  +
ユーザーは表の中のカテゴリ名を wiki ページのリンクを編集することで翻訳でき、スクリプトはそれを更新時に維持します。
  +
  +
=== 統計 ===
  +
  +
[[ArchWiki:統計]] ページは [https://github.com/lahwaacz/wiki-scripts/blob/master/statistics.py statistics.py] スクリプトにより更新されています。現在は [[ArchWiki:統計#ユーザー統計|ユーザー統計]] だけが自動生成されていて、残りの部分は手動で更新されています。更新は15秒程度で終わり、毎日実行されています。
  +
  +
スクリプトは全ての版とユーザーアカウントのメタデータを API から取得して、よりよいパフォーマンスのためにローカルにキャッシュすることで動いています。編集回数は MediaWiki のカウンタに頼らずに、手動でユーザーの貢献を数えて決定されています。
  +
  +
{{Note|いくつかの改善が [[:en:ArchWiki talk:Statistics#Improvements]] で議論されています。}}
  +
  +
=== パッケージテンプレート ===
  +
  +
[https://github.com/lahwaacz/wiki-scripts/blob/master/update-package-templates.py update-package-templates.py] スクリプトは全てのページの内容をパースして、[[テンプレート:Pkg|Pkg]]・[[テンプレート:Grp|Grp]]・[[テンプレート:AUR|AUR]] テンプレートを更新します。パッケージ名は実際にはスクリプトによって変更されませんが、例えば最近 AUR から公式リポジトリに移動したパッケージは、リンクが [[テンプレート:AUR]] から [[テンプレート:Pkg]] に更新されます。無効なパッケージリンクには [[テンプレート:Broken package link]] が付けられ、パッケージの状態を示す時々便利なヒントも付けられます。
  +
  +
スクリプトは地域化されたバージョンの [[テンプレート:Broken package link]] を存在すれば使い、存在しなければ英語バージョンを使います。これ以外のサーバーサイドの設定は存在しません。
  +
  +
それぞれの実行後に、7日以上の間隔をあけて、スクリプトは [[:en:User:Lahwaacz.bot/Reports/archpkgs]] にリンク切れの詳細レポートを作成します。
  +
  +
=== 言語間リンク ===
  +
  +
[https://github.com/lahwaacz/wiki-scripts/blob/master/interlanguage.py interlanguage.py] スクリプトは以下を実行します。
  +
  +
* 言語カテゴリが、ページの言語と一致するページに付与されているか確認します。
  +
* 存在しない地域化カテゴリを作成して、英語カテゴリツリーと同期します。
  +
* 全てのページの [[Help:I18n#言語間リンク|言語間リンク]] を [https://lahwaacz.github.io/wiki-scripts/ws/ws.interlanguage.InterlanguageLinks.html このアルゴリズム] を使って更新します。
  +
  +
実行時間は編集の量によって変化しますが、通常1分以内に終わり、編集がなければ30秒程度で終わります。
  +
  +
=== ページの言語 ===
  +
  +
[https://github.com/lahwaacz/wiki-scripts/blob/master/update-page-language.py update-page-language.py] スクリプトは、それぞれのページの言語をタイトルに基づいて判断して ([[ヘルプ:i18n#ページのタイトル]] を参照)、wiki のデータベースに言語コードをセットします。これは MediaWiki の [[mw:Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]] 設定により可能になります [https://github.com/archlinux/archwiki/pull/39]。
  +
  +
=== リンクのチェック ===
  +
  +
* [https://github.com/lahwaacz/wiki-scripts/blob/master/extlink-checker.py extlink-checker.py] は外部リンクの状態を確認して、確実に壊れているリンクを [[Template:Dead link]] でマークします。主に Javascript を必要とするサイトと、確実に判定できない HTTP ステータスコードを返すサーバーが原因で、多くのリンクはこのツールで確認されないままになります。
  +
* [https://github.com/lahwaacz/wiki-scripts/blob/master/url-replace.py url-replace.py] は、URL の HTTP から HTTPS への更新や、wiki.archlinux.org への外部リンクを内部リンクに置き換えるなどの、外部リンクの様々な置き換えを実行します。
  +
* [https://github.com/lahwaacz/wiki-scripts/blob/master/link-checker.py link-checker.py] は、内部リンク、マニュアルページへのリンク、外部リンク ({{ic|url-replace.py}} と同じコードを使用) の様々な確認と置き換えを実行します。
  +
* [https://github.com/lahwaacz/wiki-scripts/blob/master/mark-archived-links.py mark-archived-links.py] は、[[ArchWiki:アーカイブ]] への内部リンクを [[Template:Archived page]] でマークします。
  +
  +
{{TranslationStatus|ArchWiki:Bots|2021-09-07|694341}}

2021年12月22日 (水) 17:07時点における最新版

関連記事

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

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

ソフトウェア

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

Wiki Monkey

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

Wiki Monkey のボットインターフェースによって行われた編集は、wiki-monkey タグ が付けられ、最近の更新リストで フィルター することができます。

ノート: 2021-12-22 時点で wiki.archlinux.jp では 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 を存在すれば使い、存在しなければ英語バージョンを使います。これ以外のサーバーサイドの設定は存在しません。

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

言語間リンク

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

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

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

ページの言語

update-page-language.py スクリプトは、それぞれのページの言語をタイトルに基づいて判断して (ヘルプ:i18n#ページのタイトル を参照)、wiki のデータベースに言語コードをセットします。これは MediaWiki の $wgPageLanguageUseDB 設定により可能になります [1]

リンクのチェック

  • extlink-checker.py は外部リンクの状態を確認して、確実に壊れているリンクを Template:Dead link でマークします。主に Javascript を必要とするサイトと、確実に判定できない HTTP ステータスコードを返すサーバーが原因で、多くのリンクはこのツールで確認されないままになります。
  • url-replace.py は、URL の HTTP から HTTPS への更新や、wiki.archlinux.org への外部リンクを内部リンクに置き換えるなどの、外部リンクの様々な置き換えを実行します。
  • link-checker.py は、内部リンク、マニュアルページへのリンク、外部リンク (url-replace.py と同じコードを使用) の様々な確認と置き換えを実行します。
  • mark-archived-links.py は、ArchWiki:アーカイブ への内部リンクを Template:Archived page でマークします。
翻訳ステータス: このページは en:ArchWiki:Bots の翻訳バージョンです。最後の翻訳日は 2021-09-07 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。