---
title: "Haystack"
description: "TwexAPI tweet arama ve kullanıcı zaman çizelgesi bileşenleri, yazılı Belgeler, alıntılar ve sayfalandırma ile Haystack RAG işlem hatları oluşturun."
---

Haystack, Python AI uygulamaları için açık kaynaklı bir çerçevedir. RAG ardışık düzenleri ve aracı iş akışlarındaki güncel tweet'ler için [`x-api-scraper-haystack`](https://github.com/twexapi-dev/x-api-scraper-haystack) kullanın. Entegrasyon salt okunurdur ve hiçbir zaman yazma erişimi vermez.

Entegrasyon iki salt okunur bileşen sağlar:

<CardGroup cols={2}>
  <Card title="Herkese açık tweet'leri arayın" icon="search">
    'TwexApiTweetSearch' anahtar kelimeleri, hashtag'leri, hesapları ve X sorgu operatörlerini 'POST /twitter/advanced_search/page' aracılığıyla arar.
  </Card>

  <Card title="Kullanıcı zaman akışını al" icon="user">
    `TwexApiUserTweetsFetcher`, `POST /twitter/{screen_name}/timeline/page` aracılığıyla bir genel hesabın zaman çizelgesini alır.
  </Card>
</CardGroup>

Arama, zaman çizelgeleri, izleme ve almayla artırılmış oluşturma için bu bileşenleri kullanın. Bir aracı bir arama aracına ihtiyaç duyduğunda "TwexApiTweetSearch"ü "ComponentTool" ile sarın.

Takipçi dışa aktarma işlemleri için [followers API'sini](/api-reference/followers-following-endpoints/followers-v3-api-v3-twitter-users-followers-post) kullanın. Onaylanmış yayınlama için [write API'yi](/api-reference/tweet-actions-endpoints/create-tweet-twitter-tweets-create-post) kullanın. Bu eylemler bu entegrasyonun dışında kalır.

## Haystack ve TwexAPI'yi yükleyin

Python 3.10 veya daha yenisini kullanın. Tekrarlanabilir ardışık düzen yapıları için her iki paketi de sabitleyin.

```bash
python -m pip install "x-api-scraper-haystack" "haystack-ai>=3.0.0"
```

Sanal bir ortamın içine yükleyin.

Bir [TwexAPI API anahtarı](https://twexapi.io/dashboard) oluşturun ve bunu yerel olarak dışa aktarın.

```bash
export X_API_SCRAPER_KEY="YOUR_API_KEY"
```

Üretim anahtarlarını hiçbir zaman ardışık düzen YAML'ye, not defterlerine veya kaynak kontrolüne yerleştirmeyin. Ortam değişkenini Haystack 'Secret' nesnesi aracılığıyla yükleyin.

## Python'da Twitter tweet'lerini arayın

'TwexApiTweetSearch', 'POST /twitter/advanced_search/page'i çağırır. X arama sözdizimini kabul eder ve Haystack 'Document' nesnelerini döndürür.

```python
from haystack import Pipeline
from haystack.utils import Secret
from haystack_integrations.components.websearch.x_api_scraper import TwexApiTweetSearch

search = TwexApiTweetSearch(
    api_key=Secret.from_env_var("X_API_SCRAPER_KEY"),
    top_k=20,
)

pipeline = Pipeline()
pipeline.add_component("twitter_search", search)

result = pipeline.run(
    {
        "twitter_search": {
            "query": '"retrieval augmented generation" lang:en -filter:retweets'
        }
    }
)

documents = result["twitter_search"]["documents"]
links = result["twitter_search"]["links"]
```

Son izleme için 'En Son'u kullanın. Etkileşim dereceli keşif için "Üst"ü kullanın. Sıralamalar değişebileceği için tweet kimliklerini saklayın.

Her arama sorgusunu tweet kimliklerinin yanına kaydedin. Her çalıştırmadaki tweet sayısını sınırlamak için 'top_k'yi ayarlayın.

### Odaklanmış tweet aramaları oluşturun

| Arama amacı   | Sorgu örneği                                |
| --------------- | -------------------------------------------- |
| Tam ifade    | `"retrieval augmented generation"`           |
| Hesap gönderileri   | `from:deepset_ai haystack`                   |
| Hashtag arama  | `#haystack #rag`                             |
| Tarih penceresi     | `haystack since:2026-07-01 until:2026-08-01` |
| Yeniden paylaşımları hariç tut | `haystack -filter:retweets`                  |

Tüm sorgu seçenekleri için [Gelişmiş Twitter Araması](/api-reference/search-endpoints/get-data-page-twitter-advanced-search-page-post) konusuna bakın. Çalıştırma başına aktarırken zaman damgalarını ve imleçleri bileşen başlatma işleminin dışında tutun.

## Twitter kullanıcı zaman çizelgesini getir

`POST /twitter/{screen_name}/timeline/page` için `TwexApiUserTweetsFetcher` kullanın. Bir ekran adı iletin.

```python
from haystack.utils import Secret
from haystack_integrations.components.websearch.x_api_scraper import (
    TwexApiUserTweetsFetcher,
)

timeline = TwexApiUserTweetsFetcher(
    api_key=Secret.from_env_var("X_API_SCRAPER_KEY"),
    top_k=50,
)

result = timeline.run(screen_name="openai")
documents = result["documents"]
```

Tek bir hesap için birçok hesap ve zaman çizelgesi aramayı seçin.

## Haystack belge alanlarını anlama

Her tweet bir Saman Yığını 'Belgesi' haline gelir. Tweet metni 'Document.content' olur. Kararlı alanlar meta veriye dönüşür.

| Belge alanı                                               | Saklanan tweet değeri                           |
| ------------------------------------------------------------ | -------------------------------------------- |
| `content`                                                    | "tam_metin" veya "metin"den Tweet metni        |
| `meta.endpoint`                                              | `search` or `timeline`                       |
| `meta.id`, `meta.url`                                        | Mevcut olduğunda Tweet kimliği ve standart URL    |
| `meta.created_at`                                            | Zaman damgası                                    |
| `meta.author`                                                | Yazar kimliği, kullanıcı adı, ad ve doğrulanmış işaret   |
| `meta.like_count`, `meta.retweet_count`, `meta.reply_count`  | Beğeniler, yeniden gönderiler ve yanıtlar                  |
| `meta.quote_count`, `meta.view_count`, `meta.bookmark_count` | Mevcut olduğunda alıntılar, görünümler ve yer imleri  |

Eksik alanlar eksik kalır. Eksik metriklere asla sıfır muamelesi yapmayın. 'Bağlantılar' çıktısı mevcut her 'meta.url'yi içerir.

## Kanıtları RAG alıntılarında saklayın

Tweet metnini yerleştirmeden önce tweet kimliklerini ve standart URL'leri saklayın. Bu, sıralama veya katılma sonrasında kanıtları korur.

```python
citation_rows = []

for document in documents:
    tweet_id = document.meta.get("id")
    tweet_url = document.meta.get("url")
    if tweet_id and tweet_url:
        citation_rows.append(
            {
                `tweet_id`: tweet_id,
                "url": tweet_url,
                "created_at": document.meta.get("created_at"),
                "author": document.meta.get("author"),
            }
        )
```

Alıntılar için sağlanan URL'leri zorunlu kılın. Alınan belgelerde bulunmayan URL'leri reddedin.

### Tweet metnini güvenilmeyen içerik olarak değerlendirin

Tweetler hızlı ekleme ve güvenli olmayan URL'ler içerebilir. Tweet metnini asla bir sistem talimatı olarak görmeyin. Tweet'leri talimatlardan ve araç izinlerinden ayrı tutun.

Konuya ve zamana göre erişimi sınırlayın. Tweet kimliklerini, yazarlarını, zaman damgalarını ve URL'lerini koruyun. Alıntı gerektir. Hassas sonuçları gözden geçirin.

## Tweetleri indeksleyin veya canlı olarak alın

<CardGroup cols={2}>
  <Card title="Canlı getirme" icon="radio">
    Her soru sırasında en son tweet'leri ve aktif etkinlikleri arayın.
  </Card>

  <Card title="İndekslenmiş corpus" icon="database">
    Sabit pencerelerde tekrarlanan araştırmalar için yerleştirmeleri saklayın.
  </Card>
</CardGroup>

Tweet kayıtlarını yerleştirmelerden ayrı tutun. Tekilleştirme için 'meta.id'yi kullanın.

## Yinelenen tweet'ler olmadan sayfalandırma

Her iki bileşen de 'has_more' ve 'next_cursor'u döndürür. Talebi değiştirmeden saklayın. İmleçlere opak dizeler gibi davranın.

```python
search = TwexApiTweetSearch(top_k=100)
page = search.run(query="haystack ai")

documents_by_tweet_id = {}

while True:
    for document in page["documents"]:
        tweet_id = document.meta.get("id")
        if tweet_id:
            documents_by_tweet_id[tweet_id] = document

    if not page[`has_more`] or not page["next_cursor"]:
        break

    page = search.run(
        query="haystack ai",
        cursor=page["next_cursor"],
    )

documents = list(documents_by_tweet_id.values())
```

Her imleci belgelerinden sonra kaydedin. Hiçbir zaman bir imleci düzenlemeyin. `Document.meta["id"]` üzerinde tekilleştirme.

## Haystack işlem hatlarını eşzamansız olarak çalıştırın

Haystack 3 bir 'Pipeline' sınıfı kullanır. Her iki TwexAPI bileşeni de 'run_async()'i açığa çıkarıyor.

```python
import asyncio

from haystack import Pipeline
from haystack_integrations.components.websearch.x_api_scraper import TwexApiTweetSearch


async def search_tweets():
    pipeline = Pipeline()
    pipeline.add_component(
        "twitter_search",
        TwexApiTweetSearch(top_k=25),
    )
    return await pipeline.run_async(
        {"twitter_search": {"query": "haystack agents"}}
    )


result = asyncio.run(search_tweets())
```

Web sunucularında eşzamansız çalıştırmaları kullanın. Komut dosyaları ve zamanlanmış işler için senkronizasyon çalıştırmalarını kullanın.

## Hataları işleme

Entegrasyon, TwexAPI istemcisinden HTTP hatalarına neden oluyor. Yeniden denemeden önce durumla ilgili şubeyi açın.

| Durum | Anlam                       | Aksiyon                            |
| ------ | ----------------------------- | --------------------------------- |
| `400`  | Geçersiz istek               | Düzelt. Değiştirmeden tekrar denemeyin.   |
| `401`  | Geçersiz API anahtarı               | Geçerli bir API anahtarı ekleyin.              |
| `403`  | Erişim engellendi                 | Hesap erişimini ve kredileri kontrol edin. |
| `429`  | Oran sınırı aşıldı           | Tekrar denemeden önce geri çekilin.         |
| `5xx`  | Geçici sunucu hatası        | Sınırlı geri çekilmeyle yeniden deneyin.       |

Kimlik bilgilerini asla değil, durum kodlarını kaydedin. Cap, sınırsız aracı döngülerini önlemek için yeniden dener.

## Haystack bileşeni veya doğrudan REST API

İşlem hattınız zaten 'Belge' nesnelerini döndürüyor mu? Bu bileşenleri doğrudan ekleyin. Tweet metnini, meta verileri, URL'leri ve sayfalandırmayı normalleştirirler.

Takipçiler, takipler, yanıtlar, alıntılar, listeler, topluluklar, medya, trendler ve onaylı yazılar için doğrudan TwexAPI REST rotalarını veya [Python SDK'sını](/sdks/python) kullanın.

Her iki yaklaşım da aynı TwexAPI sözleşmelerini kullanır. Bileşenler yalnızca tweet aramasını ve kullanıcı zaman çizelgelerini destekler.

## MCP aktarma alternatifi

Bir aracı ilk önce uç noktaları keşfettiğinde, toplama için [Twexapi MCP](/mcp/overview) kullanın ve satırları manuel olarak Haystack "Document" nesnelerine dönüştürün. İşlem hattı zaten Haystack içinde çalıştığında ve aracı keşfi olmadan yazılan sayfalandırmayı istediğinizde Haystack bileşenlerini tercih edin.

## Kaynak ve sözleşmeler

* [x-api-scraper-haystack deposu](https://github.com/twexapi-dev/x-api-scraper-haystack)
* [Haystack 3.0 sürümü](https://github.com/deepset-ai/haystack/releases/tag/v3.0.0)
* [Gelişmiş Twitter Araması](/api-reference/search-endpoints/get-data-page-twitter-advanced-search-page-post)
* [Kullanıcı Zaman Çizelgesi](/api-reference/timeline-endpoints/get-user-timeline-page-api-twitter-screen-name-timeline-page-post)
* [Ajan MCP Aktarımı](/mcp/agent-handoff)
