app: description: '' icon: "\U0001F5DE\uFE0F" icon_background: '#D1E9FF' mode: workflow name: Personal Daily Newsletter -export workflow: features: file_upload: image: enabled: false number_limits: 3 transfer_methods: - local_file - remote_url opening_statement: '' retriever_resource: enabled: true sensitive_word_avoidance: enabled: false speech_to_text: enabled: false suggested_questions: [] suggested_questions_after_answer: enabled: false text_to_speech: enabled: false language: '' voice: '' graph: edges: - data: isInIteration: false sourceType: start targetType: http-request id: 1720777935102-source-1720778028062-target source: '1720777935102' sourceHandle: source target: '1720778028062' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false sourceType: http-request targetType: code id: 1720778028062-source-1720778052836-target source: '1720778028062' sourceHandle: source target: '1720778052836' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false sourceType: code targetType: tool id: 1720778052836-source-1720777954035-target source: '1720778052836' sourceHandle: source target: '1720777954035' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false sourceType: tool targetType: code id: 1720777954035-source-1720778117452-target source: '1720777954035' sourceHandle: source target: '1720778117452' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false sourceType: code targetType: template-transform id: 1720778117452-source-1720778986058-target source: '1720778117452' sourceHandle: source target: '1720778986058' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false sourceType: template-transform targetType: code id: 1720778986058-source-1720779061946-target source: '1720778986058' sourceHandle: source target: '1720779061946' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false sourceType: code targetType: http-request id: 1720779061946-source-1720778979675-target source: '1720779061946' sourceHandle: source target: '1720778979675' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false sourceType: http-request targetType: end id: 1720778979675-source-1720780340499-target source: '1720778979675' sourceHandle: source target: '1720780340499' targetHandle: target type: custom zIndex: 0 nodes: - data: desc: '' selected: false title: "\u5F00\u59CB" type: start variables: [] height: 54 id: '1720777935102' position: x: 80 y: 282 positionAbsolute: x: 80 y: 282 sourcePosition: right targetPosition: left type: custom width: 244 - data: desc: '' provider_id: feishu_base provider_name: feishu_base provider_type: builtin selected: false title: "\u67E5\u8BE2\u591A\u7EF4\u8868\u683C\u6570\u636E\u8868\u4E2D\u7684\ \u73B0\u6709\u8BB0\u5F55" tool_configurations: {} tool_label: "\u67E5\u8BE2\u591A\u7EF4\u8868\u683C\u6570\u636E\u8868\u4E2D\u7684\ \u73B0\u6709\u8BB0\u5F55" tool_name: list_base_records tool_parameters: Authorization: type: mixed value: '{{#1720778052836.result#}}' app_token: type: mixed value: '' filter_condition: type: mixed value: "{\n \"conjunction\": \"and\",\n \"conditions\":\ \ [\n {\n \"field_name\": \"date\",\n \ \ \"operator\": \"is\",\n \"value\": [\"Today\"\ ]\n }\n ]\n}" table_id: type: mixed value: '' type: tool height: 54 id: '1720777954035' position: x: 703.8294090861101 y: 282 positionAbsolute: x: 703.8294090861101 y: 282 selected: false sourcePosition: right targetPosition: left type: custom width: 244 - data: authorization: config: null type: no-auth body: data: "{\n \"app_id\": \"\",\n \"app_secret\": \"\"\n}" type: raw-text desc: '' headers: Content-Type:application/json; charset=utf-8 method: post params: '' selected: true timeout: max_connect_timeout: 0 max_read_timeout: 0 max_write_timeout: 0 title: "tenant_access_token \u83B7\u53D6" type: http-request url: https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal variables: [] height: 122 id: '1720778028062' position: x: 396.6202968880132 y: 282 positionAbsolute: x: 396.6202968880132 y: 282 selected: true sourcePosition: right targetPosition: left type: custom width: 244 - data: code: "import re\n\ndef main(arg1: str) -> dict:\n \"\"\"\n \u4ECE\u7ED9\ \u5B9A\u7684\u5B57\u7B26\u4E32\u4E2D\u63D0\u53D6 \"tenant_access_token\"\ \ \u503C\n \n :param arg1: \u5305\u542B \"tenant_access_token\" \u503C\ \u7684\u8F6C\u4E49 JSON \u5B57\u7B26\u4E32\n :return: \u5305\u542B\u63D0\ \u53D6\u51FA\u7684 \"tenant_access_token\" \u503C\u7684\u5B57\u5178\n \ \ \"\"\"\n pattern_token = r'\"tenant_access_token\":\"([^\"]+)\"'\n\ \ match_token = re.search(pattern_token, arg1)\n \n return {\n\ \ \"result\": match_token.group(1) if match_token else \"\"\n \ \ }" code_language: python3 desc: '' outputs: result: children: null type: string selected: false title: "token \u63D0\u53D6" type: code variables: - value_selector: - '1720778028062' - body variable: arg1 height: 54 id: '1720778052836' position: x: 396.6202968880132 y: 456.16009705458026 positionAbsolute: x: 396.6202968880132 y: 456.16009705458026 selected: false sourcePosition: right targetPosition: left type: custom width: 244 - data: code: "import json\nimport re\n\ndef main(input_data: str) -> dict:\n \"\ \"\"\n \u4ECE\u7ED9\u5B9A\u7684\u5B57\u7B26\u4E32\u4E2D\u63D0\u53D6 HTML\ \ \u5185\u5BB9\n \n :param input_data: \u5305\u542B HTML \u5185\u5BB9\ \u7684\u8F6C\u4E49 JSON \u5B57\u7B26\u4E32\n :return: \u5305\u542B\u63D0\ \u53D6\u51FA\u7684 HTML \u5185\u5BB9\u7684\u5B57\u5178\n \"\"\"\n \ \ # \u4F7F\u7528\u6B63\u5219\u8868\u8FBE\u5F0F\u67E5\u627E \"html\": \u540E\ \u9762\u7684\u5185\u5BB9\n pattern = r'\"html\": (\\[.*?\\])'\n match\ \ = re.search(pattern, input_data, re.DOTALL)\n \n if not match:\n\ \ return {\"html_content\": \"\"}\n \n # \u63D0\u53D6\u5339\ \u914D\u7684\u5185\u5BB9\u5E76\u89E3\u6790\u4E3A JSON\n html_json = json.loads(match.group(1))\n\ \ \n # \u63D0\u53D6\u6240\u6709 'text' \u5B57\u6BB5\u7684\u5185\u5BB9\ \n html_content = ''.join(item.get('text', '') for item in html_json)\n\ \ \n return {\n \"html_content\": html_content\n }" code_language: python3 desc: '' outputs: html_content: children: null type: string selected: false title: "html \u6B63\u6587\u63D0\u53D6" type: code variables: - value_selector: - '1720777954035' - text variable: input_data height: 54 id: '1720778117452' position: x: 703.8294090861101 y: 378.47758621213256 positionAbsolute: x: 703.8294090861101 y: 378.47758621213256 selected: false sourcePosition: right targetPosition: left type: custom width: 244 - data: authorization: config: api_key: '' type: bearer type: api-key body: data: '{{#1720779061946.result#}}' type: json desc: '' headers: Content-Type:application/json method: post params: '' selected: false timeout: max_connect_timeout: 0 max_read_timeout: 0 max_write_timeout: 0 title: Resend Email type: http-request url: https://api.resend.com/emails variables: [] height: 106 id: '1720778979675' position: x: 1678.1481084077718 y: 378.47758621213256 positionAbsolute: x: 1678.1481084077718 y: 378.47758621213256 selected: false sourcePosition: right targetPosition: left type: custom width: 244 - data: desc: '' selected: false template: "{{ html_content }}\n\n
\n\ \n\n \n \n