点一下把任何网页变成LLMNative文档

要把某个网页内容塞给大模型时,你会怎么做?

请先投个票:

有些网站已经走在了前面,比如智谱、OpenAI、火山的官方文档,贴心地提供了「复制 Markdown」按钮,一键就能拿到干净整洁的文本,非常 LLM 友好。

点一下把任何网页变成LLMNative文档-2

点一下把任何网页变成LLMNative文档-3

点一下把任何网页变成LLMNative文档-4

但不幸的是,这样的网站还极其少数。现实则是,像 阿里云 、 AWS 等大站及无数小站的文档,依旧还停留在「非 AGI 时代」, 没有任何针对大模型的优化 。

点一下把任何网页变成LLMNative文档-5

点一下把任何网页变成LLMNative文档-6

那怎么办呢?

一个最简单粗暴的方法: Ctrl/Command+A 全选, Ctrl/Command+C 复制。

倒也能用,并不太影响大模型的理解。

但用过的都知道,尤其对于页面结构复杂一些的页面, 这也只能算是能用,但真的不好用 。因为复制出来的内容会丢失大量页面结构信息,标题层级没了,代码块乱了,表格更是各种一团糟……

简直就是不忍直视。

那还能怎么办呢?

办法自然是有的,我先来分享一个万能大法:

打开浏览器开发者工具,查看当前站点的 DOM 结构,复制 HTML:

点一下把任何网页变成LLMNative文档-7

再用 html 转 markdown 的工具(如 https://htmlmarkdown.com/) 转成 Markdown,即可。

点一下把任何网页变成LLMNative文档-8

这个办法虽然万能,但 效率实在是太低了 ,我可不想每次都这么干。

有没有更优雅的方案呢?

当然有!

开始之前,先来介绍今天要用到的工具: Jina Reader 。

点一下把任何网页变成LLMNative文档-9

点一下把任何网页变成LLMNative文档-10

一个前缀搞定一切

Jina Reader 的用法很简单:

在任何网址前面加上 r.jina.ai/ ,就能得到这个网页的 Markdown 版本。

比如,你想把 https://docs.aws.amazon.com/xxx 转成 Markdown,只需要访问:

https://r.jina.ai/https://docs.aws.amazon.com/xxx

就这么简单。

Jina Reader 会帮你完成所有脏活累活:渲染 JavaScript、提取正文内容、过滤导航栏和广告、转换成干净的 Markdown。

而且它是免费的。

每个 API Key 自带 1000 万免费 tokens,不注册也能用(只是有速率限制)。

但每次手动去拼这个链接,自然也挺费事。所以我来分享两种偷懒办法:

方案一:书签大法(最简单)

如果你只是偶尔用用,最简单的方式是做一个浏览器书签。

操作步骤:

右键点击书签栏,选择「添加书签」

名称随便填,比如「转 Markdown」

网址填入以下代码:

javascript:window.open('https://r.jina.ai/'+encodeURIComponent(location.href));

复制

使用方法:

在任何网页上点击这个书签,就会自动打开一个新标签页,显示当前网页的 Markdown 版本。

复制,粘贴给大模型,搞定。

这个方案的优点是:零配置,即开即用。

但它也有局限:对于一些动态加载的网页(比如 X、知乎专栏),可能会因为内容还没加载完就被抓取,导致获取的内容不完整。

当然, 这个书签大法如果你学会了,那记得别只用它来做个 Jina,我自己就有很多很多这样的书签。

记得要学会举一反三,如果实在不会,就问问 AI 吧。

学会了记得来感谢我。

方案二:油猴脚本(更灵活)

如果你是重度用户,或者经常需要处理动态网页,则推荐使用油猴脚本方案,截图展示:

点一下把任何网页变成LLMNative文档-11

(当然,你也可以用 AI 写个浏览器插件,但这么点事就 duck 不必了)

相比书签方案,它可以:

动态页面支持 :通过设置超时参数,等待页面完全加载后再抓取

API Key 支持 :获得更高的速率限制(从 20 次/分钟提升到 500 次/分钟)

一键复制 :直接复制到剪贴板

下载为文件 :保存为 .md 文件

快捷键触发 :按 Alt+J 即可转换(你也可以改一下代码换成其他键)

安装步骤:

先安装 Tampermonkey 扩展,在这里:https://www.tampermonkey.net/

点击 Tampermonkey 图标 → 「添加新脚本」

删除默认内容,粘贴以下代码:

// ==UserScript==// @name         Jina Reader Pro - 网页转 Markdown// @namespace    http://tampermonkey.net/// @version      1.0// @description  一键将任何网页转换为大模型友好的 Markdown 格式// @author       Your Name// @match        *://*/*// @grant        GM_xmlhttpRequest// @grant        GM_setClipboard// @grant        GM_notification// @connect      r.jina.ai// ==/UserScript==(function() {    'use strict';    // ============ 配置区域 ============    // 在这里填入你的 Jina API Key(可在 https://jina.ai/reader/ 免费获取)    // 留空也能用,但有 API Key 可获得更高速率限制    const API_KEY = '';    // 等待页面加载的超时时间(秒),对动态页面很有用    const TIMEOUT = 30;    // 快捷键设置(默认 command/control + J)    const HOTKEY = { ctrlOrCmd: true, key: 'j' };    // ============ 配置结束 ============    // 创建悬浮按钮    function createFloatButton() {        const btn = document.createElement('div');        btn.id = 'jina-reader-btn';        btn.innerHTML = '📄';        btn.title = '转换为 Markdown (Alt+J)';        btn.style.cssText = `            position: fixed;            bottom: 20px;            right: 20px;            width: 50px;            height: 50px;            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);            border-radius: 50%;            display: flex;            align-items: center;            justify-content: center;            font-size: 24px;            cursor: pointer;            box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4);            z-index: 999999;            transition: all 0.3s ease;        `;        btn.addEventListener('click', convertPage);        document.body.appendChild(btn);        return btn;    }    // 核心转换函数    function convertPage() {        const btn = document.getElementById('jina-reader-btn');        if (btn) {            btn.innerHTML = '⏳';            btn.style.opacity = '0.7';        }        const headers = { 'x-timeout': String(TIMEOUT) };        if (API_KEY) headers['Authorization'] = 'Bearer ' + API_KEY;        GM_xmlhttpRequest({            method: 'GET',            url: 'https://r.jina.ai/' + location.href,            headers: headers,            timeout: (TIMEOUT + 10) * 1000,            onload: function(response) {                if (btn) {                    btn.innerHTML = '📄';                    btn.style.opacity = '1';                }                if (response.status === 200) {                    showResult(response.responseText);                } else {                    alert('请求失败: HTTP ' + response.status);                }            },            onerror: function() {                if (btn) {                    btn.innerHTML = '📄';                    btn.style.opacity = '1';                }                alert('网络错误');            }        });    }    // 显示结果弹窗    function showResult(content) {        const overlay = document.createElement('div');        overlay.style.cssText = `            position: fixed; top: 0; left: 0; width: 100%; height: 100%;            background: rgba(0,0,0,0.8); z-index: 9999999;            display: flex; align-items: center; justify-content: center;        `;        const modal = document.createElement('div');        modal.style.cssText = `            width: 90%; max-width: 900px; height: 80%;            background: #1e1e1e; border-radius: 12px;            display: flex; flex-direction: column; overflow: hidden;        `;        modal.innerHTML = `            <div style="padding:15px 20px;background:#2d2d2d;display:flex;justify-content:space-between;align-items:center;">                <span style="color:#fff;font-size:16px;">📄 Markdown 结果</span>                <div>                    <button id="jina-copy" style="background:#4CAF50;color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;margin-right:10px;">📋 复制</button>                    <button id="jina-download" style="background:#2196F3;color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;margin-right:10px;">💾 下载</button>                    <button id="jina-close" style="background:#666;color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;">✕ 关闭</button>                </div>            </div>            <pre style="flex:1;margin:0;padding:20px;overflow:auto;color:#d4d4d4;font-family:monospace;font-size:14px;white-space:pre-wrap;"></pre>        `;        modal.querySelector('pre').textContent = content;        overlay.appendChild(modal);        document.body.appendChild(overlay);        document.getElementById('jina-copy').onclick = function() {            GM_setClipboard(content, 'text');            this.textContent = '✅ 已复制';            setTimeout(() => { this.textContent = '📋 复制'; }, 2000);        };        document.getElementById('jina-download').onclick = function() {            const blob = new Blob([content], { type: 'text/markdown' });            const a = document.createElement('a');            a.href = URL.createObjectURL(blob);            a.download = (document.title || 'page').replace(/[/\:*?"<>|]/g, '-') + '.md';            a.click();        };        document.getElementById('jina-close').onclick = () => overlay.remove();        overlay.onclick = (e) => { if (e.target === overlay) overlay.remove(); };    }    // 监听快捷键    document.addEventListener('keydown', function(e) {        const ctrlOrCmdPressed = e.ctrlKey || e.metaKey;        if (ctrlOrCmdPressed === HOTKEY.ctrlOrCmd && e.key.toLowerCase() === HOTKEY.key.toLowerCase()) {            e.preventDefault();            convertPage();        }    });    // 初始化    if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', createFloatButton);    } else {        createFloatButton();    }})();

按 Ctrl+S 保存

使用方法:

点击页面右下角的 📄 按钮

点一下把任何网页变成LLMNative文档-12

或者按 Control+J 或 Command+J 快捷键

然后等待数秒,就会看到这样的结果了:

点一下把任何网页变成LLMNative文档-13

弹出的窗口里,你就可以直接复制或下载后扔给 LLM 去玩了。

关于 API Key

当然,Jina 还是挺大方的,不带 API Key 也一样能跑,但有两个限制:

速率限制 :每分钟只能请求 20 次

动态页面 :部分参数(如超时时间)需要 API Key 才能生效

获取 API Key 很简单,访问 https://jina.ai/reader/,页面上就能看到你的专属 Key。

版权声明:
作者:shadowrocket
链接:https://www.shadowrocket9.top/42.html
来源:Shadowrocket官网
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>