我在每周固定获取信息流

本贴最后更新于 183 天前,其中的信息可能已经东海扬尘
信息流

每周信息梳理
  • 上周

    • 时间花费

      • 没有每天看新闻, 之前我都有每天看 folo 的习惯

      • 但是考虑到信息焦虑, 我依然开始使用 perplexity 看信息, 然而这比我之前花费的时间少多了

      • 但是我依然在看 bili, 看 zhihu

        • 对于 bili, 我认为这个平台已经没有优质内容了, 即使有, 也是藏在一堆 💩 里面, 要找到这些, 就必须先找 💩, 里面更多的是用夸张手法讲述一些何不食肉糜的东西, 或者整活, 或者搞慈善, 都是一些消费人群注意力, 消费人群同情心的内容, 而不是真正给人带来快乐

          • 在这个平台我无法得到优质信息, 而一些分析国际形势的博主比如小王, 比如玉渊谭天, 做的视频越来越水并且慢慢靠近主流价值观, 在我看来, 获取信息的密度和有效性不如我在 perplexity 上面问两下
        • 对于 zhihu

          • 那真是烂中烂, 热搜上十个热搜, 可能就两三个实时, 其他的是"假如...", "为什么年轻人...", 这种意淫以及以偏概全的内容

          • 但是这个平台很奇葩, 一方面大量无法自主思考, 情绪发言的用户能够获得评论权, 一方面又有大量的高知分子在里面解答问题, 而通过权重, 将评论发言分层, 让大家进入一个回答, 首先看到的就是经过思考后的内容, 但是一旦往下翻, 就会发现逐渐主观化和情绪化

          • 所以我建议找到领域内博主, 使用油猴插件找到博主的所有的信息

            • 这里分享我用 ai 写的一个脚本

            • 实测很好用

              • // ==UserScript==
                // @name         知乎用户内容爬取器 (全自动网页解析版)
                // @namespace    http://tampermonkey.net/
                // @version      2025.06.19.8
                // @description  一键全自动抓取用户所有回答、文章和想法。通过模拟滚动和跨页面状态管理,实现全自动流程。已修复文章URL路径及404页面中断问题。
                // @author       Gemini
                // @match        https://www.zhihu.com/people/*/*
                // @icon         https://static.zhihu.com/static/favicon.ico
                // @grant        GM_addStyle
                // @grant        GM_getValue
                // @grant        GM_setValue
                // @grant        GM_deleteValue
                // @require      https://cdn.jsdelivr.net/npm/turndown/dist/turndown.js
                // @require      https://cdn.jsdelivr.net/npm/showdown/dist/showdown.min.js
                // ==/UserScript==
                
                (function() {
                    'use strict';
                
                    // --- 初始化服务 ---
                    const turndownService = new TurndownService({ headingStyle: 'atx', codeBlockStyle: 'fenced' });
                    const showdownConverter = new showdown.Converter();
                
                    // --- UI界面 ---
                    function setupUI(job) {
                        if (!document.getElementById('crawler-panel')) {
                            GM_addStyle(`
                                #crawler-panel { position: fixed; bottom: 20px; right: 20px; width: 220px; background-color: #f9f9f9; border: 1px solid #ccc; border-radius: 8px; z-index: 9999; padding: 15px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); font-size: 14px; color: #333; display: flex; flex-direction: column; gap: 10px; }
                                #crawler-btn, #crawler-cancel-btn { border: none; padding: 10px; border-radius: 5px; cursor: pointer; font-weight: bold; transition: background-color 0.3s; }
                                #crawler-btn { background-color: #0084ff; color: white; }
                                #crawler-cancel-btn { background-color: #e74c3c; color: white; }
                                #crawler-btn:disabled { background-color: #ccc; cursor: not-allowed; }
                                #crawler-status { text-align: center; font-weight: 500; color: #555; word-wrap: break-word; min-height: 2em; display: flex; align-items: center; justify-content: center; }
                            `);
                            const panel = document.createElement('div');
                            panel.id = 'crawler-panel';
                            document.body.appendChild(panel);
                        }
                
                        const panel = document.getElementById('crawler-panel');
                        if (job && job.isRunning) {
                            const currentSectionName = getSectionName(job.targetSections[job.currentSectionIndex]);
                            panel.innerHTML = `
                                <div id="crawler-status">全自动抓取进行中...<br>当前目标: <strong>${currentSectionName}</strong></div>
                                <button id="crawler-cancel-btn">取消任务</button>
                            `;
                            panel.querySelector('#crawler-cancel-btn').addEventListener('click', cancelJob);
                        } else {
                            panel.innerHTML = `
                                <div id="crawler-status">准备就绪</div>
                                <button id="crawler-btn">开始全自动抓取</button>
                            `;
                            panel.querySelector('#crawler-btn').addEventListener('click', startFullAutomation);
                        }
                    }
                
                    // --- 核心状态管理和抓取逻辑 ---
                
                    // 页面加载时的主入口函数
                    async function main() {
                        const job = GM_getValue('scrapingJob', null);
                
                        if (job && job.isRunning) {
                            // 【修复 1】: 检查404页面
                            if (document.querySelector('.ErrorPage-title')) {
                                console.log("知乎爬取器: 检测到404页面,自动跳过。");
                                updateStatus('页面不存在(404),自动跳过...');
                
                                const expectedType = job.targetSections[job.currentSectionIndex];
                                job.scrapedData[expectedType] = `## ${getSectionName(expectedType)}\n\n该用户没有发表过任何内容,或该页面不存在(404 Not Found)。\n\n---\n\n`;
                                job.currentSectionIndex++;
                                GM_setValue('scrapingJob', job);
                
                                if (job.currentSectionIndex >= job.targetSections.length) {
                                    finishJob(job);
                                } else {
                                    navigateToNextSection(job);
                                }
                                return; // 结束在404页面的所有操作
                            }
                
                            // 检查任务是否对当前用户有效
                            const currentUserId = window.location.pathname.split('/')[2];
                            if (job.userId !== currentUserId) {
                                alert('检测到其他用户的抓取任务,已自动取消。');
                                cancelJob();
                                return;
                            }
                        }
                
                        setupUI(job);
                
                        if (job && job.isRunning) {
                            await runAutomatedTask(job);
                        }
                    }
                
                    // 启动全自动流程
                    function startFullAutomation() {
                        if (!confirm('即将开始全自动抓取所有内容(回答、文章、想法)。期间页面会自动跳转,请勿关闭。要开始吗?')) {
                            return;
                        }
                        const job = {
                            isRunning: true,
                            // 【修复 2】: 更新文章区路径为 'posts'
                            targetSections: ['answers', 'posts', 'pins'],
                            currentSectionIndex: 0,
                            username: document.querySelector('.ProfileHeader-name')?.innerText || '未知用户',
                            userId: window.location.pathname.split('/')[2],
                            scrapedData: {}
                        };
                        GM_setValue('scrapingJob', job);
                        navigateToNextSection(job);
                    }
                
                    // 执行单个页面的自动化任务
                    async function runAutomatedTask(job) {
                        const pageType = getCurrentPageType();
                        const expectedType = job.targetSections[job.currentSectionIndex];
                        if (pageType !== expectedType) {
                            navigateToNextSection(job);
                            return;
                        }
                        try {
                            const mdContent = await scrapeCurrentPage();
                            job.scrapedData[pageType] = mdContent;
                            job.currentSectionIndex++;
                            GM_setValue('scrapingJob', job);
                            if (job.currentSectionIndex >= job.targetSections.length) {
                                finishJob(job);
                            } else {
                                navigateToNextSection(job);
                            }
                        } catch (e) {
                            alert(`抓取过程中发生严重错误: ${e.message}。任务已取消。`);
                            console.error(e);
                            cancelJob();
                        }
                    }
                
                    function finishJob(job) {
                        updateStatus('所有内容抓取完毕!正在合并...');
                        const finalContent = combineAllData(job);
                        downloadAsMarkdown(finalContent, `${job.username}_知乎合集`);
                        cancelJob(); // 清理任务
                        // 延迟更新UI,避免“下载完成”消息一闪而过
                        setTimeout(() => {
                            if (document.getElementById('crawler-panel')) {
                                 updateStatus('全部完成!文件已下载。');
                            }
                        }, 1000);
                    }
                
                    // 用于抓取当前页面的函数
                    async function scrapeCurrentPage() {
                        const pageType = getCurrentPageType();
                        const sectionName = getSectionName(pageType);
                        updateStatus(`正在加载【${sectionName}】,请稍候...`);
                        await new Promise(resolve => {
                            let lastHeight = 0;
                            const interval = setInterval(() => {
                                window.scrollTo(0, document.body.scrollHeight);
                                if (document.querySelector('.List-item-end')) {
                                    clearInterval(interval);
                                    resolve();
                                    return;
                                }
                                const currentHeight = document.body.scrollHeight;
                                if (currentHeight === lastHeight) {
                                    clearInterval(interval);
                                    resolve();
                                } else {
                                    lastHeight = currentHeight;
                                }
                            }, 1000);
                        });
                        updateStatus('正在展开所有“阅读全文”...');
                        document.querySelectorAll('.ContentItem-more, .Button.RichContent-collapsedText').forEach(b => b.click());
                        await new Promise(r => setTimeout(r, 1000));
                        updateStatus(`正在解析所有【${sectionName}】...`);
                        let sectionContent = `## ${sectionName}\n\n`;
                        const items = document.querySelectorAll('.List-item');
                        if (items.length === 0) return `## ${sectionName}\n\n该用户没有发表过任何${sectionName}。\n\n---\n\n`;
                        for (const item of items) {
                            const parsedMd = parseItemToMarkdown(item, pageType);
                            if (parsedMd) sectionContent += parsedMd;
                        }
                        return sectionContent + '\n---\n\n';
                    }
                
                    // 解析单个DOM节点为Markdown
                    function parseItemToMarkdown(item, type) {
                        try {
                            let title = '', url = '', contentHtml = '', voteup = 'N/A';
                            let md = '';
                            const voteupElement = item.querySelector('.VoteButton--up');
                            if (voteupElement) voteup = voteupElement.ariaLabel.replace(/[^0-9]/ig, "") || '0';
                            const contentElement = item.querySelector('.RichContent-inner, .Post-RichTextContainer');
                            if (contentElement) contentHtml = contentElement.innerHTML;
                            const linkElement = item.querySelector('.ContentItem-title a, .Post-Title a');
                            if (linkElement) url = linkElement.href;
                            switch (type) {
                                case 'answers':
                                    title = item.querySelector('.ContentItem-title a')?.innerText;
                                    if (!title) return null;
                                    md += `### Q: [${title}](${url})\n\n**赞同数:** ${voteup}\n**回答链接:** ${item.querySelector('.ContentItem-meta a.Link--primary')?.href}\n\n`;
                                    break;
                                case 'posts': // 更新文章选择器
                                    title = item.querySelector('.Post-Title a')?.innerText;
                                    if (!title) return null;
                                    md += `### 📄 [${title}](${url})\n\n**赞同数:** ${voteup}\n\n`;
                                    break;
                                case 'pins':
                                    md += `### 📌 想法\n\n**赞同数:** ${voteup}\n`;
                                    const pinUrl = item.querySelector('.ContentItem-meta a.Link--primary')?.href;
                                    if (pinUrl) md += `**想法链接:** ${pinUrl}\n\n`;
                                    break;
                            }
                            if (contentHtml) md += turndownService.turndown(showdownConverter.makeHtml(contentHtml));
                            return md + '\n\n---\n\n';
                        } catch (e) { return `\n\n> [!] 此项目解析失败\n\n---\n\n`; }
                    }
                
                    // --- 辅助及工具函数 ---
                    function navigateToNextSection(job) {
                        const nextSection = job.targetSections[job.currentSectionIndex];
                        const url = `https://www.zhihu.com/people/${job.userId}/${nextSection}`;
                        updateStatus(`即将跳转到【${getSectionName(nextSection)}】页面...`);
                        setTimeout(() => { window.location.href = url; }, 2000);
                    }
                
                    function combineAllData(job) {
                        let finalContent = `# ${job.username} 的知乎内容合集\n\n`;
                        job.targetSections.forEach(section => {
                            if (job.scrapedData[section]) {
                                finalContent += job.scrapedData[section];
                            }
                        });
                        return finalContent;
                    }
                
                    function cancelJob() {
                        GM_deleteValue('scrapingJob');
                        location.reload();
                    }
                
                    function updateStatus(message) {
                        const statusEl = document.getElementById('crawler-status');
                        if (statusEl) statusEl.innerHTML = message.replace('\n', '<br>');
                    }
                
                    function getSectionName(type) {
                        return { answers: '回答', posts: '文章', pins: '想法' }[type] || '未知';
                    }
                
                    function getCurrentPageType() {
                        const path = window.location.pathname;
                        if (path.endsWith('/answers')) return 'answers';
                        if (path.endsWith('/posts')) return 'posts'; // 识别/posts
                        if (path.endsWith('/articles')) return 'posts'; // 兼容旧的/articles
                        if (path.endsWith('/pins')) return 'pins';
                        return 'unknown';
                    }
                
                    function downloadAsMarkdown(content, filename) {
                        const safeFilename = filename.replace(/[/\\?%*:|"<>]/g, '-');
                        const blob = new Blob([content], { type: 'text/markdown;charset=utf-8' });
                        const dataUrl = URL.createObjectURL(blob);
                        const a = document.createElement('a');
                        const date = new Date();
                        const dateStr = `${date.getFullYear()}${(date.getMonth() + 1).toString().padStart(2, '0')}${date.getDate().toString().padStart(2, '0')}`;
                        a.href = dataUrl;
                        a.download = `${safeFilename}_${dateStr}.md`;
                        document.body.appendChild(a);
                        a.click();
                        document.body.removeChild(a);
                        URL.revokeObjectURL(dataUrl);
                    }
                
                    // --- 脚本启动 ---
                    setTimeout(main, 1000);
                
                })();
                
        • 自我情绪化内容说多了, 其实就一个, 在这些平台, 我们是信息的被动接受者, 我是一个容易情绪化的人, 我不喜欢被带着跑, 所以我选择主动选择信息而不是被动接受信息

    • 心得

      • 上周也没看多少新闻

        • 但是日常生活没有更多影响, 我的阅读注意力都在微信读书和思源笔记里面, 感觉很舒服

        • 并且我也没有显现一些信息焦虑, 因为我本来就知道这些信息是可以不看的

          • 所以, 对于信息, 我们需要筛选, 筛选我们是否需要知道它
      • 对于原有的信息流程, 虽然每天接收的信息很多, 但大部分是没有用的, 看了以后没有思考, 就记住有这件事, 并且占用了我们获取自己信息的时间,这是不健康的

  • 本周

    • 这周梳理信息之后, 我发现信息太庞大了

      • image

      • 太多内容了, 难以梳理, 得找办法了

        • ai 问题解决

          • 我的流程

            • 材料收集

              • 首先处理材料, 在 folo 中游览信息内容, 然后找到需要泛读和需要精读的, 存储起来

                • 使用 siyuan 剪切, 这时候能够自动打标
            • 材料处理

              • 接着在思源中使用数据库进行梳理, 直接使用动态数据库自动添加信息内容
              • 并且对信息内容进行打标处理, 分为精读, 泛读(在材料收集阶段, 就已经过滤了不值得看的了)
            • 材料阅读

              • 对于材料要用这几个方法阅读

                • 带着问题去读
                • 原子化阅读, 遇到有效新闻, 则使用标记, 自动标记句子, 然后使用 sql 将这些标记摘取
                • 重新叙述并且关联, 将这个信息和其他信息进行双向关联, 比如使用双向链接

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • GloR

    xs“即使有, 也是藏在一堆 💩 里面, 要找到这些, 就必须先找”深有同感,现在基本大多数自媒体平台都是这样,要是有个 ai 能帮我把不是 💩 的内容筛选出来就好了

  • 其他回帖
  • TangQi

    可以的, 有网站支持, 不过要付费

    1 回复
  • 固定来源的信息,难免变成 echo chamber,按照主题搜索,又难免遗漏,蹲一个解决方案

    1 回复
  • TangQi 1

    @dammy 老登的方法是正确的!!!!!!!

  • 查看全部回帖

推荐标签 标签

  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖 • 8 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 724 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 702 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 8 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    17 引用 • 7 回帖 • 1 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    561 引用 • 677 回帖 • 1 关注
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 120 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    45 引用 • 44 回帖 • 2 关注
  • V2Ray
    1 引用 • 15 回帖 • 4 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 1 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    36 引用 • 200 回帖 • 54 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1708 回帖 • 1 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 663 关注
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    76 引用 • 258 回帖 • 641 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    308 引用 • 773 回帖
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    2 引用 • 34 回帖 • 1 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    89 引用 • 150 回帖 • 1 关注
  • abitmean

    有点意思就行了

    44 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    61 引用 • 29 回帖 • 14 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    232 引用 • 484 回帖 • 1 关注
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 180 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 667 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    119 引用 • 54 回帖