# 아티팩트에 데이터를 전달하는 방법은?

**URL:** https://meta.discourse.org/t/how-do-i-pass-data-to-an-artifact/350791
**Category:** Feature
**Tags:** completed, ai, ai-artifacts
**Created:** [2월 5, 2025, 7:15오후 UTC](https://meta.discourse.org/t/how-do-i-pass-data-to-an-artifact/350791 "2025-02-05T19:15:07Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![markschmucker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/markschmucker/32/141599_2.png) [@markschmucker](https://meta.discourse.org/u/markschmucker)
#### Post date: [2월 5, 2025, 7:15오후 UTC](https://meta.discourse.org/t/how-do-i-pass-data-to-an-artifact/350791/1 "2025-02-05T19:15:07Z")

</div>

아티팩트에 데이터를 전달하는 방법에 대한 팁이 있을까요? 같은 아티팩트를 포럼의 여러 위치에 붙여넣고 싶고, 각 위치마다 다른 JWT 토큰을 사용하고 싶습니다. 아래와 같은 방법으로 시도해 보았지만 크리에이터가 이를 사용하지 못하게 됩니다:

```plaintext

<div class="ai-artifact" data-jwt-token="my-jwt-token" data-ai-artifact-id="10"></div>

```

아니면 웹 크리에이터가 현재 어떤 토픽 ID 안에 있는지 파악할 수 있다면, 그것을 활용해서 작업할 수 있을 것 같습니다.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2월 6, 2025, 4:18오전 UTC](https://meta.discourse.org/t/how-do-i-pass-data-to-an-artifact/350791/2 "2025-02-06T04:18:40Z")

</div>

아, 이건 좀 까다로운 문제네요. 지금은 프레임워크가 이를 지원하지 않습니다. 하지만 매우 흥미로운 사용 사례입니다.

모든 data- 속성을 샌드박스화된 아티팩트로 그대로 전달하는 기능 요청이 아주 우아한 해결책이라고 생각합니다.

한 가지 가능성이 있는 옵션은 쿼리 파라미터를 활용하는 것입니다. 하지만 샌드박스화된 iframe에는 해당 접근 권한이 없었습니다:

[https://meta.discourse.org/discourse-ai/ai-bot/artifacts/166?222](https://meta.discourse.org/discourse-ai/ai-bot/artifacts/166?222)

@david 외부 세계에 대한 정보를 아티팩트로 전달하는 것에 보안상 문제가 있을까요? (샌드박스를 벗어나는 것이지만, `window.location.search`를 어떤 형태의 속성으로 에코하는 방식일까요?)

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [2월 6, 2025, 11:13오전 UTC](https://meta.discourse.org/t/how-do-i-pass-data-to-an-artifact/350791/3 "2025-02-06T11:13:51Z")

</div>

> [@sam](#):
>
> @david 외부 세계에 대한 정보를 아티팩트에 전달하는 것이 보안에 어떤 영향을 미칠까요? (샌드박스를 벗어나는 것은 아니지만, `window.location.search`를 어떤 속성으로 에코하는 방식일까요?)

아티팩트에 쿼리 문자열 접근 권한을 부여하는 것은 괜찮아 보입니다. 가장 쉬운 방법은 Ruby를 사용하여 이를 신뢰할 수 없는 HTML 문서에 주입하는 것입니다. 메타 태그나 유사한 방식으로 처리할 수 있겠네요.

> <https://github.com/discourse/discourse-ai/blob/cf86d274a02c45b4edbc9a7be3044a6c53e47661/app/controllers/discourse_ai/ai_bot/artifacts_controller.rb#L36C18-L51C13>

---

<div class="post-metadata">

### Author: ![markschmucker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/markschmucker/32/141599_2.png) [@markschmucker](https://meta.discourse.org/u/markschmucker)
#### Post date: [2월 6, 2025, 3:16오후 UTC](https://meta.discourse.org/t/how-do-i-pass-data-to-an-artifact/350791/4 "2025-02-06T15:16:22Z")

</div>

> [@sam](#):
>
> 여기서 모든 data- 속성을 샌드박스된 아티팩트로 그대로 전달하는 기능 요청을 좋아합니다. 정말 우아한 해결책입니다.

봇의 아이디어였습니다. 🙂

> [@sam](#):
>
> 매우 흥미로운 사용 사례입니다.

실제 환경의 아티팩트에서 매우 흔한 사용 사례라고 생각합니다. 여러 투자 항목에 대해 실행하고자 하는 재무 분석 아티팩트가 있습니다. 이 아티팩트는 JWT를 사용하여 어떤 투자 항목인지를 식별하고 API에서 성과 데이터를 가져옵니다. 각 아티팩트에 서로 다른 하드코딩된 JWT를 포함하여 수많은 아티팩트를 만드는 것은 현실적으로 불가능합니다.

오래된 요청을 더 드리는 건 아닌지 모르겠지만, 아티팩트에서 사용자 ID와 토픽 ID도 가져올 수 있다면 훨씬 더 많은 애플리케이션이 가능해질 것입니다.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2월 6, 2025, 8:53오후 UTC](https://meta.discourse.org/t/how-do-i-pass-data-to-an-artifact/350791/5 "2025-02-06T20:53:36Z")

</div>

> [@markschmucker](#):
>
> 기회를 더 잡는 건 아니지만, 아티팩트에 사용자 ID와 토픽 ID도 함께 포함할 수 있다면 훨씬 더 많은 활용이 가능해질 것입니다.

토픽 ID를 추가하는 것은 쉽지만, 사용자 ID는 약간 더 까다로울 수 있습니다. 아티팩트가 상당히 캐시되므로, 이를 구현하려면 일부 캐싱을 줄여야 하기 때문입니다.

---

<div class="post-metadata">

### Author: ![markschmucker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/markschmucker/32/141599_2.png) [@markschmucker](https://meta.discourse.org/u/markschmucker)
#### Post date: [2월 7, 2025, 8:53오후 UTC](https://meta.discourse.org/t/how-do-i-pass-data-to-an-artifact/350791/6 "2025-02-07T20:53:16Z")

</div>

> [@sam](#):
>
> topic id를 추가하는 것은 쉽습니다.

데이터 속성을 전달하는 것보다 제 애플리케이션에 실제로는 더 나은 방법입니다. 토픽과 제 JWT 사이에 1:1 매핑이 있으므로, 각 게시물에서 JWT를 수정할 필요 없이 JWT를 조회할 수 있습니다.

하지만 다른 사용 사례는 처리하지 못할 가능성이 높습니다.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2월 7, 2025, 9:46오후 UTC](https://meta.discourse.org/t/how-do-i-pass-data-to-an-artifact/350791/7 "2025-02-07T21:46:37Z")

</div>

기술적으로 URL만 전달하면 이 문제를 해결할 수 있습니다. 토픽 ID가 URL의 일부이기 때문이죠.

다음 주에 이 부분을 정리할 예정입니다. 현재 PDF 지원 기능을 작업 중입니다 🙂

---

<div class="post-metadata">

### Author: ![markschmucker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/markschmucker/32/141599_2.png) [@markschmucker](https://meta.discourse.org/u/markschmucker)
#### Post date: [5월 13, 2025, 6:25오후 UTC](https://meta.discourse.org/t/how-do-i-pass-data-to-an-artifact/350791/8 "2025-05-13T18:25:45Z")

</div>

확인 차问一下, 이 기능이 실제로 구현된 적이 있나요?

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [5월 14, 2025, 2:43오전 UTC](https://meta.discourse.org/t/how-do-i-pass-data-to-an-artifact/350791/9 "2025-05-14T02:43:06Z")

</div>

아직은요. 오늘 좀 직접 해보면서 이 정도까지 복잡한지 확인해 볼 거예요.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [5월 18, 2025, 1:54오전 UTC](https://meta.discourse.org/t/how-do-i-pass-data-to-an-artifact/350791/10 "2025-05-18T01:54:16Z")

</div>

> <https://github.com/discourse/discourse-ai/pull/1346/>
>
> Also allow artifact access to current username
> 
> Usage inside artifact is:
> 
> 1…. await window.discourseArtifactReady;
> 2. access data via window.discourseArtifactData;
> 
> \`\`\`
> \<div class="ai-artifact" data-ai-artifact-id="482" data-hello="world"\>\</div\>
> \`\`\`
> 
> 
> !\[image\](https://github.com/user-attachments/assets/9cd2fa52-6248-4eaf-b6c2-9783d3fc83f0)

이것으로 해결됩니다. 샌드박싱 때문에 여기서 post message를 사용해야 하는 것이 불가피합니다. 그래서 API는 await를 필요로 합니다. 그래도 작동하니까 다행입니다.

---

<div class="post-metadata">

### Author: ![markschmucker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/markschmucker/32/141599_2.png) [@markschmucker](https://meta.discourse.org/u/markschmucker)
#### Post date: [5월 18, 2025, 9:43오후 UTC](https://meta.discourse.org/t/how-do-i-pass-data-to-an-artifact/350791/11 "2025-05-18T21:43:19Z")

</div>

나한테는 완벽하게 잘 작동해요!

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [5월 19, 2025, 10:31오후 UTC](https://meta.discourse.org/t/how-do-i-pass-data-to-an-artifact/350791/12 "2025-05-19T22:31:16Z")

</div>


