Задайте правило до чтения результатов
Начните с проверяемого решения: какие из полученных записей r/science со словом replication обсуждают повторение исследования? Единицей наблюдения выберите запись и заранее решите, включать публикации, комментарии или оба типа. Поиск отбирает текст для чтения, а категорию задаёт ваша локальная разметка. Совпадение слова не доказывает успешного воспроизведения научного результата.
Создайте локальную запись протокола: идентификатор запуска, предполагаемый маршрут, фильтры, limit, page и время получения. Это ваши исследовательские заметки, не дополнительные параметры API и не серверный идентификатор снимка. Отдельно сохраните версию кода преобразования и его зависимости. Если ваш анализ использует случайность, зафиксируйте собственные локальные настройки; архив не предоставляет параметров случайного отбора или начального значения генератора для такого поиска.
Reddit API Labs — независимый исторический архив, не официальный сервис Reddit и не живые данные. Охват, фиксированные поля, неизменность результатов и постоянная доступность не гарантируются. Поэтому сохранение одних параметров не сохраняет входные данные эксперимента. Заранее решите, где будут находиться ваши копии ответов и кому их можно передавать, соблюдая применимое законодательство и права третьих лиц.
Зафиксируйте выполненный запрос
Начните с https://api.redditapilabs.com/v1/search?q=replication&subreddit=science&limit=3 — примера на главной. q выполняет текстовый поиск, subreddit ограничивает сообщество, limit запрашивает не больше трёх записей. Передайте X-API-Key: <ключ> либо Authorization: Bearer <ключ> со своего сервера. Страница ключа объясняет регистрацию до оплаты; действующий ключ не должен попадать в протокол, который вы публикуете или передаёте другим исследователям.
Пробуя replication crisis, внесите изменение в журнал запросов. q ищет в title и text с оператором and внутри совпавшего поля, а не просто объединяет слова из заголовка и основного текста. Храните ответы широкого и уточнённого поиска отдельно. Ни один из вариантов не исчерпывает лексику обсуждений научной репликации.
Когда вопрос требует временных границ, используйте from и to в формате YYYY-MM-DD UTC по полю created_utc. Последний день включается целиком; это не время попадания в архив и не часы. min_score задаёт числовой порог без сортировки и оценки качества. Фильтра по числу комментариев нет. Объясните, как каждый критерий меняет собственный отбор, вместо утверждения, что он устраняет смещение.
Размечайте смысл отдельно от исходного текста
В собственной таблице разметки укажите идентификатор записи, если он есть, категорию и основание решения. Для пилота подойдут категории «повторение исследования», «биологическая репликация» и «недостаточно контекста». Это ваши метки, не поля API. Сохраняйте неоднозначные случаи для обсуждения, а исходный текст — отдельно от подготовленного для анализа.
Сохраните полученные байты и параметры до очистки записей. При желании вычислите SHA256 своего файла: он обозначает эти локальные байты, а не сертификат архива о подлинности или полноте источника. Проверьте data и наличие полей. Плоские записи могут содержать parent_id или link_id для локальных связей без полной беседы или цепочки родителей. Ни один из этих идентификаторов не является фильтром поиска.
Меняйте по одному условию сравнения
Сначала повторите анализ сохранённого материала с указанными кодом и окружением, проверяя собственные исключения и результаты. Совпадение хеша подтверждает только совпадение сравниваемых байтов. Оно не доказывает истинности публикации, правильности интерпретации или воспроизводимости каждого вычислительного этапа. Опишите фактически выполненные проверки вместо заявления, что архив подтверждает эксперимент. При изменении кода сохраните новую версию и отдельно отметьте, какой вход она обрабатывала.
Сначала сравните правила на неизменном сохранённом входе: какие решения изменились и почему? Новому удалённому сбору присвойте отдельную запись запуска. Если одновременно поменялись данные и правила разметки, разницу в числе категорий нельзя объяснить только одним из этих изменений.
Новому удалённому сбору присвойте отдельную локальную запись и сохраните его фактический ответ. Записи, поля и порядок могут отличаться без обещанного предела различий. Сравнение фиксирует наблюдаемые изменения, но само по себе не объясняет их причину и не доказывает изменения реальной активности. Обработка вашей копии не вызывает API, а успешное повторное получение расходует кредит. Параметры не являются заменой сохранённого материала.
Завершите запуск отчётом о границах
Завершите запуск краткой записью: параметры, полученные страницы, оставленные записи, причины исключений и неразрешённые значения. Укажите основание остановки и версию правил, по которой получены числа. Выводы относятся к этому материалу; неизвестный итог, недостающий контекст или пробел архива не доказывают отсутствия обсуждения в сообществе.
Каждое успешное получение, даже пустое, стоит один кредит. Некорректные запросы не списываются; сбой источника возвращает резерв, а тайм-аут клиента может следовать за оплаченным успехом. Неизвестный результат отмечайте как неизвестный, не как бесплатный. При 400 исправьте параметры, при 401 проверьте ключ и домен, при 402 — баланс, при 429 ограничьте и отложите повторы. Локальная ошибка не возвращает стоимость удалённого успеха.
Документация описывает маршруты, страница цен — $1 за 1000 успешных запросов и минимум $50 за 50000 оплаченных кредитов. Страница ключа объясняет условные пробные кредиты и перевыпуск с подтверждением пароля, который сразу отключает старый ключ. Публичный статус возвращает только статическое описание и ответ HTTP, не состояние поиска или целостность набора. Не включайте учётные секреты и платёжные записи в открытый журнал эксперимента.