Array (text), filtered, grouped, joined

HELP!

I have an array which I wish to extract and group certain strings together, but I’m a bit lost on how to do this.

Background: I’m using Fireflies AI and wish to get the AI summary and create my own Word doc using my template format.

I can get the summary which you gives me as one long string each line separated by \n (a new line). Each summary heading starting with an emoji than **

Example (Random text used, my text doesn’t have full stops aka periods):

“shorthand_bullet”: “:sun_behind_small_cloud: Section Summary one (03:21 - 25:37)\nAtmosphere and Setting: Sunlight filtered through the dusty attic window.\nAnimal Activity: The cat jumped onto the windowsill and stared outside.\nWeather and Ambience: A distant rumble of thunder echoed across the hills.\nAcademic Moments: She scribbled notes furiously before the bell rang.\nScents and Streets: The smell of fresh bread drifted down the cobbled street.\n🌤️ Section Summary Two (25:37 - 39:15)\nAtmosphere and Setting: Sunlight filtered through the dusty attic window.\nAnimal Activity: The cat jumped onto the windowsill and stared outside.\nWeather and Ambience: A distant rumble of thunder echoed across the hills.\nAcademic Moments: She scribbled notes furiously before the bell rang.\nScents and Streets: The smell of fresh bread drifted down the cobbled street.\nSeasonal Adjustments: He tightened his scarf against the biting wind.\nSounds and Nostalgia: An old radio crackled with a forgotten melody.\nMidnight Silence: The clock struck midnight, and everything fell silent.\nAutumn Walks: Leaves crunched beneath their boots in rhythmic steps.\nLight and Shadow: A flickering candle cast dancing shadows on the wall.\n”

I’ve manage to use

{{split(23.body.data.transcript.summary.shorthand_bullet; newline)}}

To make each line in an array.

My end goal in Word is to have in a table, in one cell the section heading following by the summary for that section, then the next cell will be the next section heading followed by the summary.

I thought I could use a filter to search for section heading using contains **, which works, but stuck on how I can then loop until the next one and save all the different arrays of text into one.

Here is an example JSON output from my above set variable module.

[
{
“bulletLines”: [
:school: Section Summary one (03:21 - 25:37)”,
“Sunlight filtered through the dusty attic window.”,
“The cat jumped onto the windowsill and stared outside.”,
“A distant rumble of thunder echoed across the hills.”,
“She scribbled notes furiously before the bell rang.”,
“The smell of fresh bread drifted down the cobbled street.”,
:date: Section Summary Two (25:37 - 39:15)”,
“Sunlight filtered through the dusty attic window.”,
“The cat jumped onto the windowsill and stared outside.”,
“A distant rumble of thunder echoed across the hills.”,
“She scribbled notes furiously before the bell rang.”,
“The smell of fresh bread drifted down the cobbled street.”,
“He tightened his scarf against the biting wind.”,
“An old radio crackled with a forgotten melody.”,
“The clock struck midnight, and everything fell silent.”,
“Leaves crunched beneath their boots in rhythmic steps.”,
“A flickering candle cast dancing shadows on the wall.”,

]

}
]

This gives me an array called bulletLines.

So using above my end goal would be in my word template table to have in cell one:

Section Summary one (03:21 - 25:37)
Sunlight filtered through the dusty attic window.
The cat jumped onto the windowsill and stared outside.
A distant rumble of thunder echoed across the hills.
She scribbled notes furiously before the bell rang.
The smell of fresh bread drifted down the cobbled street.

Then in cell two:

Section Summary Two (25:37 - 39:15)
Sunlight filtered through the dusty attic window.
The cat jumped onto the windowsill and stared outside.
A distant rumble of thunder echoed across the hills.
She scribbled notes furiously before the bell rang.
The smell of fresh bread drifted down the cobbled street.
He tightened his scarf against the biting wind.
An old radio crackled with a forgotten melody.
The clock struck midnight, and everything fell silent.
Leaves crunched beneath their boots in rhythmic steps.
A flickering candle cast dancing shadows on the wall.

I will not know how many summaries there will be or how many lines of text in the summary it will have. I don’t have to use an array, if there is a solution based on using the input string, then that can also work!

Any help would be greatly appreciated. THANK YOU!

Hello, the provided output bundles are incorrectly formatted and is invalid.

The above is not valid JSON. You can verify this by copy-pasting into jsonformatter.org

Could you please try providing it again with the following instructions?

1. This forum might have or already changed your text

When pasting text into this forum, you should format the example text using the rich-text editor, otherwise the forum software might modify the displayed text, and you might get incorrect answers from others because of it.

Some things this forum software might do to mangle your text:

– remove extra spaces (which may be necessary)
– convert links to titles (when copied is incorrect)
– incorrect joined links
– convert single and double quotes to smart angled quotes (“ ”)
– emojis
– etc.

This interferes with you receiving correct answers, because it:

– makes JSON invalid (you can check by copy-pasting into jsonformatter.org)
– makes incorrect text examples when we need to build a pattern for text parsing

2. To prevent this in future, please format text in code blocks

These are the two ways to format text so that it won’t be modified by the forum:

  • Method 1: Type code block manually

    Add three backticks ``` before and after the content/bundle, like this:

    ```
    content goes here
    ```

  • Method 2. Highlight and click the format button in the editor

3. You might need to re-copy the original text

Once the post has been submitted, it’s too late to format it since it’s already butchered, and you need to make a re-copy of the text, and format it before submitting the forum post.

Please let us know once you have corrected the issue. This will avoid others potentially providing wrong answers based on incorrect text in your question.

Thank you!

Hope this helps! Let me know if there are any further questions or issues.

@samliew

P.S.: Investing some effort into the Make Academy will save you lots of time and frustration using Make.

Sorry, I had used block quotes instead of preformatted text, also thought I could get awaty with sharing just the code.

I’ve shared the whole json, and once again used dummy data. The bit I need is “shorthand_bullet”. Its the text in there.

Thank you.

[
  {
    "body": {
      "data": {
        "transcript": {
          "id": "XYZ123456789",
          "dateString": "2025-01-01T10:00:00.000Z",
          "privacy": "public",
          "speakers": [
            {
              "id": 0,
              "name": "Alex Doe"
            },
            {
              "id": 1,
              "name": "Jamie Smith"
            },
            {
              "id": 2,
              "name": "Taylor Green"
            }
          ],
          "title": "Example Meeting - Project Kickoff",
          "host_email": "alex@example.com",
          "organizer_email": "alex@example.com",
          "calendar_id": "00000000ABCDEFG123456789",
          "user": {
            "user_id": "User123ABC",
            "email": "alex@example.com",
            "name": "Alex Doe",
            "num_transcripts": 5,
            "recent_meeting": "MEETING987654321",
            "minutes_consumed": 123.45,
            "is_admin": false,
            "integrations": [
              "google-calendar"
            ]
          },
          "fireflies_users": [
            "alex@example.com"
          ],
          "participants": [
            "alex@example.com,bob@example.com,carol@example.com",
            "bob@example.com",
            "carol@example.com"
          ],
          "date": 1704103200000,
          "transcript_url": "https://app.fireflies.ai/view/XYZ123456789",
          "audio_url": "https://cdn.fireflies.ai/XYZ123456789/audio.mp3?Expires=1704200000&Policy=DummyPolicy&Signature=DummySignature&Key-Pair-Id=DummyKey",
          "duration": 90.75,
          "meeting_attendees": [
            {
              "displayName": null,
              "email": "alex@example.com",
              "phoneNumber": null,
              "name": null,
              "location": null
            },
            {
              "displayName": null,
              "email": "bob@example.com",
              "phoneNumber": null,
              "name": null,
              "location": null
            },
            {
              "displayName": null,
              "email": "carol@example.com",
              "phoneNumber": null,
              "name": null,
              "location": null
            }
          ],
          "summary": {
            "keywords": [
              "Planning",
              "Budget",
              "Timeline",
              "Design",
              "Approvals"
            ],
            "action_items": "\n**Alex Doe**\nDraft initial proposal (10:15)\nSend budget overview to Jamie (12:30)\nCreate shared folder for resources (15:42)\n\n**Jamie Smith**\nReview timeline and suggest updates (18:20)\nCoordinate with design team (22:11)\n\n**Taylor Green**\nProvide feedback on draft presentation (25:05)\n",
            "outline": null,
            "shorthand_bullet": "📌 **Initial Planning Phase** (00:00 - 15:00)\nTeam discussed general goals and expectations\nRoles and responsibilities briefly outlined\n📅 **Timeline and Milestones** (15:01 - 30:00)\nReviewed draft timeline for deliverables\nProposed checkpoints and review dates\n📝 **Budget and Resources** (30:01 - 45:00)\nPreliminary budget reviewed by finance team\nNeed identified for additional cost estimates\n🎨 **Design and Branding** (45:01 - 60:00)\nVisual identity brainstorm started\nFeedback gathered on logo concepts",
            "overview": "This meeting outlined the kickoff phase for the sample project. Discussions covered initial planning, scheduling milestones, budget considerations, and early-stage design thinking.",
            "bullet_gist": "📌 Initial Planning: Set project goals and assigned team leads\n📅 Timeline: Identified major phases and checkpoints\n📝 Budget: Finance team shared rough estimates and requested clarifications\n🎨 Design: Branding discussions began with logo reviews",
            "gist": "A general planning meeting to initiate the example project, covering goals, schedule, budget, and branding.",
            "short_summary": "Team met to discuss the start of the Example Project. Key topics included planning responsibilities, setting a timeline, budget overview, and initial design ideas. Action items were assigned accordingly.",
            "short_overview": null,
            "meeting_type": null,
            "topics_discussed": null,
            "transcript_chapters": []
          },
          "cal_id": "DummyCalendarID123456789",
          "calendar_type": "google",
          "apps_preview": {
            "outputs": []
          },
          "meeting_link": "https://meet.example.com/abc-123-def"
        }
      }
    },
    "headers": {
      "date": "Fri, 28 Mar 2025 10:00:00 GMT",
      "content-type": "application/json; charset=utf-8",
      "content-length": "1234",
      "connection": "close",
      "vary": "Origin",
      "access-control-allow-origin": "*",
      "x-ratelimit-limit-api": "100",
      "x-ratelimit-remaining-api": "50",
      "x-ratelimit-reset-api": "1234",
      "cache-control": "no-store",
      "strict-transport-security": "max-age=31536000; includeSubDomains",
      "cf-cache-status": "DYNAMIC",
      "report-to": "{\"endpoints\":[{\"url\":\"https:\\/\\/dummy.report.url\"}],\"group\":\"cf-nel\",\"max_age\":604800}",
      "nel": "{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}",
      "x-real-ip": "123.45.67.89",
      "server": "dummy-server",
      "cf-ray": "dummy-ray-id",
      "server-timing": "cfDummyTiming"
    },
    "statusCode": 200
  }
]

Welcome to the Make community!

You can use a Text Parser “Match Pattern” module with this Pattern (regular expression):

(?<=^|\n)(?<title>.*\*\*.*)(?<text>(?:\n.+)+?)(?=\n.*\*\*.*|$)

Proof https://regex101.com/r/TTV7Wq

Important Info

  • :warning: Global match must be set to YES!

Screenshot

Output


For more information, see Text Parser in the Make Help Center:

Match Pattern
The Match pattern module enables you to find and extract string elements matching a search pattern from a given text. The search pattern is a regular expression (aka regex or regexp), which is a sequence of characters in which each character is either a metacharacter, having a special meaning, or a regular character that has a literal meaning.

Hope this helps! Let me know if there are any further questions or issues.

@samliew

P.S.: Investing some effort into the Make Academy will save you lots of time and frustration using Make.

1 Like

You sir are a genius! Thank you very much. I tried googling regex generators, and tried to use https://regex-generator.olafneumann.org/ and couldn’t get it to work.

Once again, thank you very much.

Also, while here, what would be the best way to then loop through each bundle, and create one text to then use in one excel cell?

I guess Text Aggregator would be best?

If I wanted the bullet_gist how would I edit the text parser please?

I’m not sure what you mean. Can you please create a new question with more details?

1. If anyone has a new question in the future, please start a new thread. This makes it easier for others with the same problem to search for the answers to specific questions, and you are more likely to receive help since newer questions are monitored closely.

2. The Make Community guidelines encourages users to try to mark helpful replies as solutions to help keep the Community organized.

This marks the topic as solved, so that:

  • others can save time when catching up with the latest activity here, and
  • allows others to quickly jump to the solution if they come across the same problem

To do this, simply click the checkbox at the bottom of the post that answers your question:
Screenshot_2023-10-04_161049

3. Don’t forget to like and bookmark this topic so you can get back to it easily in future!

Here are some useful links and guides you can use to learn more on how to use the Make platform, apps, and app modules. I found these useful when I was learning Make, and hope they might benefit you too —

Getting Started

Help Centre Basics

Articles & Videos

Hope this helps! Let me know if there are any further questions or issues.

@samliew

P.S.: Investing some effort into the Make Academy will save you lots of time and frustration using Make.