しくみの詳細
しくみと、できないこと
魔法は何もありません。抽出の処理がサーバーを呼ぶことはなく、拡張機能が通信するアドレスは統計用のエンドポイントだけです。処理全体は、見ているページの中で数十ミリ秒で終わります。
記事を見つける
まず拡張機能は、記事がふつう入っている分かりやすいコンテナを探します。そうしたコンテナがない場合(実際のサイトではよくあります)、テキストの密度を測る方法に切り替えます。リンクの内側にない段落のテキストを最も多く含むブロックはどれか。そのテキストのほぼすべてを含む最も狭いブロックが選ばれます。
テキストの大半がリンクのラベルでできているブロックは、記事ではなくメニューかフィードなので除外されます。ただし実際のテキストが約 1200 文字を超える場合は除外しません。長い記事にはリンクが多く含まれるのが普通だからです。
付属物を取り除く
次に、本文ではないと分かっている要素を取り除きます。ナビゲーション、バナー、共有ボタンの列、Cookie の通知、ページ送り、「次に読む」のフィード、ロゴの帯。繰り返される行も削除します。各セクションで重複するナビゲーションこそ、クリップしたページのノイズの最大の原因だからです。
ほかのクリッパーが残すもの
[本文へスキップ](#main) [ログイン](/login) [会員登録](/register) [ホーム](/) [ニュース](/news) [スポーツ](/sport) [カルチャー](/culture) [その他](/more) 当サイトでは、利便性向上のため Cookie および類似の技術を使用しています。 [すべて同意] [設定を管理] # あなたが読みに来た記事 本文の実際の最初の段落。 <div class="promo-inline"> ## 次に読む [別の見出し](/a) [もう一つの見出し](/b) [さらに三つ目](/c)
ノートに入るもの
# あなたが読みに来た記事 本文の実際の最初の段落。
変換する
表は汎用のプラグインではなく拡張機能自身が書き出します。汎用の変換ツールは、リストやコードブロックを含むセルで壊れるからです。コードブロックの言語は、ページ自身のマークアップから取ります。参照リンクは、サニタイザーがそれらの依存する id を削除する前に Markdown の脚注として集めます。この順序が大事で、間違えるとすべての脚注が黙って失われます。
できないこと
ストアのトップ、フィード、検索結果には記事がありません。拡張機能は完成した Markdown を調べ、その 4 分の 1 を超える部分がリンクのラベルの中にあれば、リンク 300 件を渡す代わりに「記事なし」と報告します。この拒否は意図的なもので、常に何かを返すツールより文字数が少なく出るのはそのためです。
しないこと
- 画像、動画、その他のバイナリはダウンロードしません。画像のリンクは元のサイトを指します
- サイトを巡回しません。1 回に 1 ページ、開いているページだけです
- 要約や書き換えはしません。記事のテキストは変換されるだけで、編集はされません
chrome://や拡張機能ストアそのものなど、ブラウザが保護しているページでは動作しません