「ArchWiki:ボット」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) 細 (→Wiki Monkey: 改行を削除) |
|||
(2人の利用者による、間の18版が非表示) | |||
5行目: | 5行目: | ||
{{Related|ヘルプ:操作手順}} |
{{Related|ヘルプ:操作手順}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | |||
[[w:Bots|ボット]] は [[ArchWiki:メンテナンスチーム|メンテナンスチーム]] の重要なツールで、日々の業務から複雑な一度限りの更新まで、繰り返しのタスクを簡単に実行することができます。ボットによる編集は wiki への全ての貢献の8%以上を占めています。このような編集は手動で行うにはとても退屈でしょう。 |
[[w:Bots|ボット]] は [[ArchWiki:メンテナンスチーム|メンテナンスチーム]] の重要なツールで、日々の業務から複雑な一度限りの更新まで、繰り返しのタスクを簡単に実行することができます。ボットによる編集は wiki への全ての貢献の8%以上を占めています。このような編集は手動で行うにはとても退屈でしょう。 |
||
18行目: | 17行目: | ||
=== Wiki Monkey === |
=== 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 === |
=== 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 ボットにより繰り返し実行されるタスクについて説明します。概要と、運用中のボットスクリプトの機能のドキュメントを提供します。ボットの編集は標準で [[特別:最近の更新]] から隠されていることに注意してください。これらの編集を含めると、通常の貢献を追ったり参加したりすることがかなり難しくなるためです。 |
||
− | This section describes the tasks that are repeatedly performed by ArchWiki bots. It serves as an overview and documentation of the features of operated bot scripts. Note that bot edits are by default hidden from [[特別:最近の更新]], since their inclusion would make it far more difficult to follow and participate with regular contributions. |
||
=== 二重リダイレクト === |
=== 二重リダイレクト === |
||
− | + | [[ヘルプ:操作手順#二重リダイレクトを修正する|二重リダイレクト]] の修正は最も古い自動化タスクです。[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] スクリプトを使って維持されています。スクリプトは毎日実行され、実行は数秒で終わります。 |
|
+ | ページは以下のエントリーポイントの表で手作業で初期化する必要があります。 |
||
− | The script assumes the following entry point to be present on the page: |
||
{{bc|<nowiki> |
{{bc|<nowiki> |
||
{| id="wiki-scripts-toc-table" |
{| id="wiki-scripts-toc-table" |
||
− | ... |
||
|} |
|} |
||
</nowiki>}} |
</nowiki>}} |
||
+ | この表の内容はスクリプトによって生成された更新されたバージョンに置き換えられ、ページの残りはそのままにされます。スクリプトは以下の任意の属性を設定として認識します。 |
||
− | The content of this table is replaced with an updated version generated by the script, the rest of the page is left intact. The script recognizes the following optional attributes for configuration: |
||
− | * {{ic|data-toc-languages}} |
+ | * {{ic|data-toc-languages}} はページで表示される言語を指定します。カンマ区切りの言語タグのリストで、最大2つまで指定できます。デフォルトでは現在のページの言語で、例えば [[:en:Table of contents (Русский)]] では {{ic|ru}} となります。 |
− | * {{ic|data-toc-alsoin}} |
+ | * {{ic|data-toc-alsoin}} は "also in" フレーズの翻訳を指定します。形式は {{ic|''tag1:text, tag2:text, ...''}} です。 |
− | + | 以下は [[:en:Table of contents (Русский)]] での例です。 |
|
{{bc|<nowiki> |
{{bc|<nowiki> |
||
57行目: | 59行目: | ||
</nowiki>}} |
</nowiki>}} |
||
+ | ユーザーは表の中のカテゴリ名を wiki ページのリンクを編集することで翻訳でき、スクリプトはそれを更新時に維持します。 |
||
− | Users can also translate the category names in the table by editing the links on the wiki page and the script will preserve them on updates. |
||
=== 統計 === |
=== 統計 === |
||
− | + | [[ArchWiki:統計]] ページは [https://github.com/lahwaacz/wiki-scripts/blob/master/statistics.py statistics.py] スクリプトにより更新されています。現在は [[ArchWiki:統計#ユーザー統計|ユーザー統計]] だけが自動生成されていて、残りの部分は手動で更新されています。更新は15秒程度で終わり、毎日実行されています。 |
|
+ | スクリプトは全ての版とユーザーアカウントのメタデータを API から取得して、よりよいパフォーマンスのためにローカルにキャッシュすることで動いています。編集回数は MediaWiki のカウンタに頼らずに、手動でユーザーの貢献を数えて決定されています。 |
||
− | The script works by obtaining metadata of all revisions and user accounts from the API and caching it locally for better performance. The edit counts are determined by manually counting user contributions without relying on MediaWiki counters. |
||
− | {{Note| |
+ | {{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]] を存在すれば使い、存在しなければ英語バージョンを使います。これ以外のサーバーサイドの設定は存在しません。 |
||
− | The script uses localized versions of [[テンプレート:Broken package link]] and [[テンプレート:aur-mirror]] when they exist and falls back to the English versions. Other than that there is no server-side configuration. |
||
− | + | それぞれの実行後に、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 ステータスコードを返すサーバーが原因で、多くのリンクはこのツールで確認されないままになります。 |
||
− | * Checks if the language of categories assigned to each page matches the language of the page itself. |
||
+ | * [https://github.com/lahwaacz/wiki-scripts/blob/master/url-replace.py url-replace.py] は、URL の HTTP から HTTPS への更新や、wiki.archlinux.org への外部リンクを内部リンクに置き換えるなどの、外部リンクの様々な置き換えを実行します。 |
||
− | * Creates missing localized categories, mirroring the English category tree. |
||
+ | * [https://github.com/lahwaacz/wiki-scripts/blob/master/link-checker.py link-checker.py] は、内部リンク、マニュアルページへのリンク、外部リンク ({{ic|url-replace.py}} と同じコードを使用) の様々な確認と置き換えを実行します。 |
||
− | * Updates the [[Help:I18n#言語間リンク|interlanguage links]] on all content pages using [http://lahwaacz.github.io/wiki-scripts/ws/ws.interlanguage.InterlanguageLinks.html this algorithm]. |
||
+ | * [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}} |
||
− | The execution time depends on the amount of updates, it is usually less than a minute and about 30 seconds when there are no updates. |
2021年12月22日 (水) 17:07時点における最新版
関連記事
ボット は メンテナンスチーム の重要なツールで、日々の業務から複雑な一度限りの更新まで、繰り返しのタスクを簡単に実行することができます。ボットによる編集は wiki への全ての貢献の8%以上を占めています。このような編集は手動で行うにはとても退屈でしょう。
現在以下のボットが使用されています。
- kusakata.bot2 (使用者: kusakata)
目次
ソフトウェア
ボットは MediaWiki API を使って wiki サーバーに接続します。ウィキメディア財団 によって作られた、この API を使うたくさんのボットがありますが、それらは普通他の wiki で使えるように十分一般化されていなかったり、ArchWiki のスタイルガイドと衝突したりします。そのため、ArchWiki 特有のボットツールを作っていますが、外部から評価すると同じ弱点があるでしょう。
Wiki Monkey
Wiki Monkey プロジェクトの目的は、web ブラウザで直接 wiki ページを改良することで効率的な編集を補助することです。ユーザースクリプトとして動作し、編集ページで繰り返しのタスクを半自動で実行したり、カテゴリ や リンク元 といったページリストのページから完全に自動で実行したりできます。Wiki Monkey は 特別:最近の更新 や 特別:新しいページ のためのフィルターといったヘルパーも追加します。詳しくは ドキュメント を参照してください。
Wiki Monkey のボットインターフェースによって行われた編集は、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 のカウンタに頼らずに、手動でユーザーの貢献を数えて決定されています。
パッケージテンプレート
update-package-templates.py スクリプトは全てのページの内容をパースして、Pkg・Grp・AUR テンプレートを更新します。パッケージ名は実際にはスクリプトによって変更されませんが、例えば最近 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 でマークします。