我在每周固定获取信息流

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

每周信息梳理
  • 上周

    • 时间花费

      • 没有每天看新闻, 之前我都有每天看 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

    回声室效应:指一些拥有相近想法的群体借由不断沟通与认同彼此想法,使得那些相似的想法不断被放大与加强的现象

    我觉得回声室效应对我这个流程来说不存在

    因为我不参与社交讨论, 信息放到 siyuan 以后我只会和 ai 讨论, 主流社交媒体上和你讨论这些信息内容的傻逼不如 perplexity 毛一根

    并且你可以固定时间更换自己的信息源, 比如每两个月换一次这种, 我觉得挺好的

  • TangQi

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

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

    1 回复
  • 查看全部回帖

推荐标签 标签

  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    24 引用 • 33 回帖 • 3 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4602 回帖 • 731 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 72 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 190 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    97 引用 • 155 回帖 • 1 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    91 引用 • 59 回帖 • 1 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    89 引用 • 1251 回帖 • 376 关注
  • Office

    Office 现已更名为 Microsoft 365. Microsoft 365 将高级 Office 应用(如 Word、Excel 和 PowerPoint)与 1 TB 的 OneDrive 云存储空间、高级安全性等结合在一起,可帮助你在任何设备上完成操作。

    6 引用 • 35 回帖
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖 • 1 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    85 引用 • 414 回帖
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    21 引用 • 31 回帖 • 1 关注
  • AWS
    11 引用 • 28 回帖 • 1 关注
  • Word
    13 引用 • 41 回帖
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖
  • 分享

    有什么新发现就分享给大家吧!

    251 引用 • 1801 回帖 • 1 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    736 引用 • 1307 回帖 • 2 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖 • 2 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    285 引用 • 248 回帖
  • TensorFlow

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

    20 引用 • 19 回帖 • 1 关注
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 851 关注
  • OpenCV
    15 引用 • 36 回帖 • 1 关注
  • Python

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

    561 引用 • 677 回帖
  • Sillot

    Insights(注意当前设置 master 为默认分支)

    汐洛彖夲肜矩阵(Sillot T☳Converbenk Matrix),致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点。其中汐洛绞架(Sillot-Gibbet)基于自思源笔记(siyuan-note),前身是思源笔记汐洛版(更早是思源笔记汐洛分支),是智慧新录乄终端(多端融合,移动端优先)。

    主仓库地址:Hi-Windom/Sillot

    文档地址:sillot.db.sc.cn

    注意事项:

    1. ⚠️ 汐洛仍在早期开发阶段,尚不稳定
    2. ⚠️ 汐洛并非面向普通用户设计,使用前请了解风险
    3. ⚠️ 汐洛绞架基于思源笔记,开发者尽最大努力与思源笔记保持兼容,但无法实现 100% 兼容
    29 引用 • 25 回帖 • 152 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 17 关注