Как перенести заметки из базы знаний Weeek в Obsidian: экспорт через API
Скрипт в моем телеграм канале лежит бесплатно, без подписки
Официального экспорта у базы знаний Weeek нет: ни кнопки в интерфейсе, ни эндпоинтов в Public API. Но перенести заметки всё равно можно автоматически, и я это сделал: выгрузил рабочую базу из 139 статей и 63 вложений в Obsidian готовыми Markdown-файлами. Секрет в том, что веб-клиент Weeek сам получает страницы через внутренний API, и этот канал доступен любому залогиненному пользователю.
Немного о себе: меня зовут Андрей, я занимаюсь SEO и контент-маркетингом, довёл один сайт до 700 тысяч посетителей в месяц и полтора года руководил редакцией, которая вручную написала больше двух тысяч статей. С базами знаний и переездами между ними я на «ты», так что дальше будет не теория, а разбор живой выгрузки. По поисковой выдаче на 30.09.2026 это единственная инструкция полного переноса базы знаний из Weeek на русском языке: других вариантов официально не существует, а неофициальный никто до меня не расписал. План такой: достать куку сессии, скачать дерево и контент статей, запустить скрипт сборки и получить vault с деревом папок, вики-ссылками и вложениями. Отдельно честно расскажу, что не переносится.
Коротко
Официальных дорог из базы знаний Weeek нет: справка знает только печать в PDF, в Public API нет эндпоинтов документов, бэкапа воркспейса тоже нет (проверено 30.09.2026).
Рабочий способ один: внутренний API веб-клиента, те же запросы, которыми браузер рисует базу знаний.
Скрипт из статьи собирает vault: дерево становится папками, вложения складываются в «Вложения», ссылки Weeek превращаются в [[вики-ссылки]], у каждой заметки остаётся ссылка на оригинал.
Кука сессии живёт около 2 часов и равнозначна доступу к аккаунту: получайте прямо перед выгрузкой, файл с ней удаляйте после.
Не переносятся: история версий, комментарии, права доступа. Таблицы, формулы и фреймы доводятся руками.
Других официальных вариантов нет: что говорит сам Weeek
Короткий ответ на вопрос «где кнопка экспорта»: её не существует. Я проверил все три официальных канала, и ни один не отдаёт базу знаний целиком.
Первый канал, справка. Статья «Печать и экспорт» описывает единственный официальный способ забрать документ: иконка печати в правом верхнем углу, затем «Сохранить как PDF» в системном окне (официальная справка Weeek, проверено 30.09.2026). Каждая страница сохраняется отдельным файлом, вручную.
Второй канал, Public API V1 (developers.weeek.net, правки в документации 11.09.2026). Он открывает воркспейс, задачи и CRM, но страниц базы знаний в нём нет: это видно и из документации, и из OpenAPI-спецификации. Скрипт переноса поверх Public API написать невозможно: API просто не отдаст тексты.
Третий канал, бэкап всего воркспейса: его тоже нет, ни в интерфейсе, ни в справке. При этом импорт в Weeek существует: сервис принимает данные из Notion, Trello, Asana, Jira и ClickUp. Дорога в сервис официально односторонняя: принимать гостей умеет, провожать не торопится.
Для контекста: Weeek позиционируется как «виртуальный офис» и складывает задачи, базу знаний, CRM и аналитику в одно окно; на сайте заявлено 150 000+ пользователей (weeek.net, проверено 30.09.2026). База знаний здесь полноценный модуль: древовидные документы, блочный редактор, таблицы, вложения, совместное редактирование (страница возможностей). Задачи, в отличие от заметок, выгружаются: сторонние обзоры упоминают экспорт в XLSX, CSV и JSON, но в официальной справке этой функции я не нашёл, так что считайте её неподтверждённой.
Остаётся ровно один канал, по которому страницы вообще покидают сервис: внутренний API, которым браузер рисует вам базу знаний. Тот же самый, только вызываем его не из браузера, а из скрипта. Если вы только выбираете, куда переезжать, держите ориентир: Obsidian удобен тем, что после переезда ваши заметки перестают зависеть от решения вендора вообще.
Прежде чем идти дальше, посмотрите официальный ролик о работе с документами: он показывает интерфейс, из которого я сейчас заберу данные.
Смотреть: «Как работать с документами в WEEEK» (официальный канал WEEEK на YouTube).
Как устроен рабочий способ
Внутри Weeek документ хранится не как текст, а как блочный JSON: абзацы, заголовки, списки, картинки, файлы. Веб-клиент получает три вещи: дерево статей, полный список статей и контент каждой статьи по отдельности. Мой конвейер повторяет те же запросы к тем же адресам (эндпоинтам — просто «адресам, по которым программа ходит за данными») и на выходе собирает готовое хранилище. Vault, если вы привыкли к этому слову, это обычная папка на диске, в которой Obsidian держит все заметки.
Из моего опыта: дерево из /kb/hierarchy показало только 49 статей из 139. У части папок дочерние статьи видны только через /kb/articles/search. Поэтому конвейер качает оба списка и объединяет их: без этого шага вы потеряете девять страниц из десяти и даже не заметите.
Скрипт сборки (файл export_weeek.py приложен к статье) делает следующее:
- раскладывает статьи по папкам зеркально дереву: статья с дочерними разделами становится папкой, её текст лежит одноимённым файлом внутри;
- пишет в шапку каждой заметки служебные поля: источник, ID статьи, ссылку на оригинал в Weeek, дату обновления и викиссылку на родителя;
- переводит внутренние ссылки Weeek в [[вики-ссылки]], картинки в ![[файлы]] из папки вложений;
- скачивает вложения в папку «Вложения» и подставляет их в текст заметок;
- статьи с удалённым родителем кладёт в корень vault, чтобы ничего не потерялось.
Два честных предупреждения. Первое: API неофициальный, эндпоинты подсмотрены в коде веб-приложения, и Weeek может поменять их без предупреждения. Второе: выгрузка работает только на чтение, в самой базе ничего не меняется.
Что понадобится
- Git Bash: команды из статьи написаны под него (в Windows он ставится вместе с Git).
- Python 3: скрипт сборки написан на чистом Python, без сторонних зависимостей.
- Ваш аккаунт Weeek с доступом к нужному воркспейсу.
- Свежая кука сессии: живёт около 2 часов, получайте прямо перед выгрузкой.
- Файл export_weeek.py из этой статьи, положите рядом с рабочими файлами.
- Уровень: уверенная работа с командной строкой. Время: первый прогон с настройкой укладывается в час, повторные занимают минуты, окно куки (~2 часа) с запасом хватает на базу в сотни статей.
Шаг 1. Получите куку сессии
К концу шага в файле weeek-cookie.txt будет лежать строка с вашей сессией: это пропуск к API.
- Откройте app.weeek.net и убедитесь, что залогинены.
- Нажмите F12 и перейдите на вкладку Network (Сеть).
- Обновите страницу (F5) и в списке запросов кликните любой к домену api.weeek.net.
- В Request Headers найдите заголовок cookie и скопируйте значение целиком, от cid=... до конца строки.
- Создайте рядом файл weeek-cookie.txt, вставьте скопированное одной строкой без переносов и сохраните.
Кука сессии работает как гостевая карта в отеле: сервер выдаёт её браузеру при входе и узнаёт вас по ней без пароля. Кука — это действующий ключ доступа к вашему аккаунту на ближайшие два часа. Не пересылайте её в чатах, не показывайте на скриншотах и удалите файл сразу после выгрузки. Если запросы начнут отвечать кодом 401, кука протухла: получите свежую по этой же схеме.
Проверка: файл существует, содержит одну длинную строку и ничего больше.
Шаг 2. Скачайте дерево и полный список статей
К концу шага на диске будут hierarchy.json и пачка search-*.json: два взгляда на одну базу, каждый по-своему неполный.
Заголовки Origin, Referer и User-Agent делают запрос похожим на вызов из веб-клиента. Пауза 0,2 секунды держит нагрузку на сервер вежливой. Для баз больше 400 статей понадобится продолжить ряд offset: 400, 500 и дальше, по 100 за шаг.
Проверка: в папке лежат hierarchy.json и четыре search-*.json, и каждый открывается как JSON, а не как HTML с ошибкой. Переменные WS, COOKIE и UA живут до закрытия терминала: следующие шаги выполняйте в том же окне или задайте их заново.
Шаг 3. Соберите полное дерево статей
К концу шага появятся hierarchy-full.json, объединённый список всех статей, и all-ids.txt, их ID построчно.
Команда складывает оба источника в один словарь: дерево служит основой, поиск добавляет то, чего в дереве не нашлось. У меня на этом шаге список вырос с 49 до 139 статей: это и есть те страницы, которые дерево молча скрывало.
Проверка: команда напечатала «Статей всего: N», и N совпадает с примерным числом страниц в базе. Сверьте с деревом в интерфейсе Weeek: сильное расхождение в меньшую сторону значит, что не все страницы search отдал (проверьте, до какого offset дошли).
Шаг 4. Скачайте контент всех статей
К концу шага в папке contents будет лежать по одному JSON-файлу на каждую статью: полный блочный контент.
Пауза 0,25 секунды между запросами нужна, чтобы не долбить сервер: при моих 139 статьях на одни паузы уходит около 35 секунд, вся выгрузка контента занимает считанные минуты. Строка «ОШИБКА … 401» означает протухшую куку: вернитесь к шагу 1, получите свежую и запустите цикл заново, уже скачанные файлы просто перезапишутся. Если выгружаетесь частями, добавьте в начало цикла строку [ -f "contents/article-$id.json" ] && continue: тогда скачанное не перекачивается (моя доработка, необязательная).
Проверка: число файлов в contents равно числу строк в all-ids.txt, сообщений «ОШИБКА» в выводе нет.
Шаг 5. Соберите vault в Obsidian
К концу шага вся база лежит в хранилище Obsidian: Markdown-файлы по дереву, вложения, ссылки.
Чтобы вы понимали, что скрипт делает с данными, два ключевых фрагмента (полный код в приложенном файле). Шапка каждой заметки:
И превращение ссылок Weeek между статьями в викиссылки Obsidian:
Вложения скачиваются с именами вида weeek-<id>-<номер>-<название>: уникальные имена гарантируют, что файлы не перезапишут друг друга. Скрипт перезаписывает .md-файлы, но папку vault не чистит: статьи, удалённые в Weeek, останутся в хранилище от прошлого прогона. Если нужна точная копия текущего состояния базы, удалите папку перед запуском:
Осторожно: rm -rf удаляет без вопросов и корзины. Проверьте путь дважды.
Проверка: скрипт напечатал «Готово. Статей: …, корневых разделов: …, вложений: …» (у меня 139 и 63), и папка открывается в Obsidian через «Открыть папку как хранилище».
Как выглядит результат в Obsidian
Каждая статья превратилась в заметку .md с понятной шапкой:
Дальше идёт текст статьи: заголовки, списки, чек-листы, выделение, код и картинки сохраняются. Статьи с дочерними разделами стали папками, так что структура дерева читается прямо в проводнике Obsidian. Внутренние ссылки кликаются, картинки открываются из «Вложений», а глобальный поиск (Ctrl+Shift+F) находит любое слово во всей базе. После Weeek это ощущается как переезд из съёмной квартиры в свою: ремонт делаешь когда хочешь и ничего не спрашиваешь.
Что не переносится
Короткая таблица того, что остаётся в Weeek даже после выгрузки:
- Элемент - Что с ним происходит - Что делать
- История версий - Не выгружается: API отдаёт только текущее состояние страницы (в Weeek версии хранятся от 10 дней до года, справка) - PDF-слепок критичных страниц, Weeek в режиме чтения
- Комментарии и права доступа - API их не отдаёт, скрипт их не получает - Скопировать важные комментарии руками до удаления воркспейса
- Таблицы, формулы, фреймы - В текущей версии скрипта блоки этих типов пропускаются - Пересобрать в Markdown руками, для сложных страниц держать PDF-слепок (печать по справке)
- Публичные ссылки - Не переносятся - Настроить заново, если делились страницами наружу
Моя рекомендация по критичным страницам с историей правок: не удаляйте воркспейс сразу после выгрузки. Оставьте Weeek в режиме чтения на месяц-другой и убедитесь, что в Obsidian всё на месте.
Типичные ошибки при выгрузке из Weeek
- Искать официальную кнопку экспорта. Её нет и в ближайших планах не видно: не тратьте вечер на поиски, все три официальных канала разобраны выше.
- Доверять дереву иерархии как полному списку. У меня дерево показало 49 статей из 139. Объединяйте с результатами поиска, шаг 3, иначе потеряете целые ветки.
- Оставлять weeek-cookie.txt на диске. Это живой ключ доступа к аккаунту. Выгрузились, проверили результат, удалили файл.
- Долбить API без пауз. Паузы 0,2–0,25 секунды в командах стоят не для красоты: сотни запросов подряд без них выглядят как атака.
- Править сгенерированные заметки руками до финальной выгрузки. Скрипт перезаписывает .md при каждом прогоне: сначала добейтесь чистовой выгрузки, потом наводите красоту в Obsidian.
Часто задаваемые вопросы
Это же неофициальный API. Насколько это надёжно?
Эндпоинты подсмотрены в веб-клиенте и нигде не документированы: Weeek может поменять их в любом обновлении, и скрипт перестанет работать. Смягчающие обстоятельства: канал работает только на чтение, под вашим аккаунтом и с вашими данными, вы выгружаете ровно то, что видите в интерфейсе. Худший сценарий не страшен: выгрузка сломается, и вы докончите её PDF-печатью или дождётесь фикса конвейера.
Сколько времени занимает выгрузка?
Окно ограничено сроком жизни куки, около 2 часов, и этого хватает с запасом. Первый прогон с настройкой занимает около часа, повторные укладываются в несколько минут. Выгрузка контента базы из 139 статей с паузой 0,25 секунды занимает считанные минуты, вложения добавляют время в зависимости от размера. Это мой опыт одной рабочей базы, официальной статистики нет.
Переносятся ли таблицы и формулы?
В текущей версии скрипта нет: блоки этих типов пропускаются. Таблицы пересобираются в Markdown-синтаксис руками, формулы переписываются в формате $...$. Если таблица — основа страницы, держите рядом PDF-слепок из Weeek.
Что будет с задачами и CRM?
Они живут в других модулях Weeek и этой выгрузкой не затрагиваются. По данным сторонних обзоров, задачи выгружаются в XLSX, CSV и JSON, но официальной справки о такой функции нет. В Obsidian задачи обычно ведут чек-боксами в заметках или Kanban-плагином.
У меня всего десять страниц. Оно мне надо?
Наверное, нет: десять коротких страниц быстрее перенести руками, чем настраивать конвейер. Скрипт окупается, когда статей десятки и сотни: у меня на конвейере было 139 статей и 63 вложения, руками это заняло бы не один день.
Вывод: база знаний должна быть вашими файлами
Переезд из Weeek в Obsidian упирается в одну вещь: официального экспорта нет, и вряд ли он появится сам. Внутренний API снимает проблему: дерево, контент и вложения уходят из сервиса за минуты и ложатся в Obsidian обычными файлами, которые не заперты ни в каком облаке и ни от кого не зависят.
Мой совет: начните с полного прогона по всей базе. Выгрузка дешевле ревизии: сначала заберите всё, потом решайте, что оставлять. И если постоянный экспорт вам действительно нужен, продублируйте запрос в поддержку Weeek: чем больше таких голосов, тем быстрее у сервиса появится честная кнопка.